diff --git a/src/eval.js b/src/eval.js index 27e7246..3a67f95 100644 --- a/src/eval.js +++ b/src/eval.js @@ -1015,7 +1015,12 @@ const eval_statement = (s, scope, calls, context) => { } if(stmt.type == 'let' && s.type == 'identifier') { const node = {...s, result: {ok: true}} - return {ok, children: [...children, node], scope, calls} + return { + ok, + children: [...children, node], + scope: {...scope, [s.value]: undefined}, + calls + } } const { ok: next_ok, diff --git a/test/test.js b/test/test.js index aab7308..1677ff6 100644 --- a/test/test.js +++ b/test/test.js @@ -329,6 +329,16 @@ export const tests = [ assert_equal(i.value_explorer.result.value, {y: 2, z: 3, q: 4}) }), + test('let variable not initialized bug', () => { + const code = ` + let x + x /*label*/ + ` + const i = test_initial_state(code, code.indexOf('x /*label')) + assert_equal(i.value_explorer.result.ok, true) + assert_equal(i.value_explorer.result.value === undefined, true) + }), + test('else if', () => { const code = ` let x