From 92e59dac70b7dbd78430aa8852877d9a8aabcde0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0pan=C4=9Bl?= Date: Tue, 28 Mar 2017 10:03:04 +0200 Subject: [PATCH] Test case for #1702 - missing scope in references when used in "for". --- test/mocha/forReferences-issue1702.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/mocha/forReferences-issue1702.js diff --git a/test/mocha/forReferences-issue1702.js b/test/mocha/forReferences-issue1702.js new file mode 100644 index 00000000..49a23146 --- /dev/null +++ b/test/mocha/forReferences-issue1702.js @@ -0,0 +1,25 @@ +var uglify = require('../../'); +var assert = require("assert"); + +describe("For statement", function() { + it("For variable should list enclosing scope in its references (issue #17022)", function() { + var ast = uglify.parse("function f() { var a = 0; for (; a < 10; a++) {} }"); + ast.figure_out_scope(); + + var checkedAST_VarDef = false; + var checkWalker = new uglify.TreeWalker(function(node, descend) { + if (node instanceof uglify.AST_VarDef) { + checkedAST_VarDef = true; + // one reference should be in the AST_Defun scope - search for it + var foundDefun = false; + node.name.thedef.references.forEach(function (r) { + if (r instanceof uglify.AST_Defun) foundDefun = true; + }); + + assert(foundDefun, "Symbol not referenced in the AST_Defun scope"); + } + }); + ast.walk(checkWalker); + assert(checkedAST_VarDef, "AST_VarDef not found"); + }); +}); \ No newline at end of file