diff --git a/src/cmd.js b/src/cmd.js index 9279220..b9b6afc 100644 --- a/src/cmd.js +++ b/src/cmd.js @@ -15,6 +15,7 @@ import { initial_calltree_node, default_expand_path, toggle_expanded, active_frame, find_call, set_active_calltree_node, set_cursor_position, current_cursor_position, set_location, + is_native_fn, } from './calltree.js' const collect_logs = (logs, call) => { @@ -344,6 +345,17 @@ const step_into = (state, index) => { active_frame(state), index ) + + if(is_native_fn(calltree_node)) { + return { + state, + effects: { + type: 'set_status', + args: ['Cannot step into: function is either builtin or from external lib'] + } + } + } + if(!ok){ return {state, effects: {type: 'set_status', args: [message]}} } else { diff --git a/test/test.js b/test/test.js index 8960755..a84528a 100644 --- a/test/test.js +++ b/test/test.js @@ -1650,6 +1650,19 @@ export const tests = [ assert_equal(cn.index, code.indexOf('() => x()')) }), + test('step_into native bug', () => { + const code = `Object()` + const initial = test_initial_state(code) + const {state, effects} = COMMANDS.step_into(initial, 0) + assert_equal(initial == state, true) + assert_equal(effects, { + "type": "set_status", + "args": [ + "Cannot step into: function is either builtin or from external lib" + ] + }) + }), + test('coloring', () => { const code = ` const x = () => {