test('works with ForStatement', () => { const ast = acorn.parse(`for (let i = 0; i < 1; i++) { call(); }`); const functionTracer = new FunctionTracer(ast.body[0]); assert.equal(functionTracer.declarations[0].name, 'i'); assert.equal(functionTracer.contexts.length, 4); });
test('works with generic VariableDeclarator', () => { const ast = acorn.parse('var bob = 0;'); const functionTracer = new FunctionTracer(ast); const { bob } = functionTracer.contexts[0]; assert.equal(bob.ast, ast.body[0].declarations[0]); assert.equal(bob.context, functionTracer.contexts[0]); assert.equal(bob.name, 'bob'); assert.equal(bob.origin, 'declaration'); assert.equal(bob.assignable, true); assert.equal(bob.inForLoopTest, null); assert.equal(bob.inForLoopInit, false); assert.equal(functionTracer.declarations[0], bob); });