Fix AST_Export $propdoc types (exported_names and module_name).
This commit is contained in:
parent
54f2de4792
commit
ec26cd7069
|
|
@ -794,8 +794,8 @@ var AST_Export = DEFNODE("Export", "exported_definition exported_value is_defaul
|
||||||
$propdoc: {
|
$propdoc: {
|
||||||
exported_definition: "[AST_Defun|AST_Definitions|AST_DefClass?] An exported definition",
|
exported_definition: "[AST_Defun|AST_Definitions|AST_DefClass?] An exported definition",
|
||||||
exported_value: "[AST_Node?] An exported value",
|
exported_value: "[AST_Node?] An exported value",
|
||||||
exported_names: "[string*] List of exported names",
|
exported_names: "[AST_NameImport*?] List of exported names",
|
||||||
module_name: "[string?] Name of the file to load exports from",
|
module_name: "[AST_String?] Name of the file to load exports from",
|
||||||
is_default: "[Boolean] Whether this is the default exported value of this module"
|
is_default: "[Boolean] Whether this is the default exported value of this module"
|
||||||
},
|
},
|
||||||
_walk: function (visitor) {
|
_walk: function (visitor) {
|
||||||
|
|
|
||||||
35
test/mocha/issue1702.js
Normal file
35
test/mocha/issue1702.js
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
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() { for (var a = 0; a < 10; a++) {} }");
|
||||||
|
ast.figure_out_scope();
|
||||||
|
|
||||||
|
var checkWalker = new uglify.TreeWalker(function(node, descend) {
|
||||||
|
if (node instanceof uglify.AST_VarDef) {
|
||||||
|
console.log("AST_VarDef");
|
||||||
|
// one reference should be in the AST_Defun scope - search for it
|
||||||
|
|
||||||
|
var walkNode = function (r) {
|
||||||
|
console.log(r.CTOR.name);
|
||||||
|
var walker = new uglify.TreeWalker(function(node, descend){
|
||||||
|
// do not walk into any other scope, it should be listed if needed
|
||||||
|
console.log(" " + node.CTOR.name);
|
||||||
|
if (node instanceof uglify.AST_Scope && node != r.scope) return true;
|
||||||
|
if (node instanceof uglify.AST_For) {
|
||||||
|
console.log("Great - we found the for statement referencing the variable")
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
r.scope.walk(walker);
|
||||||
|
r.walk(walker);
|
||||||
|
};
|
||||||
|
|
||||||
|
node.name.thedef.orig.forEach(walkNode);
|
||||||
|
node.name.thedef.references.forEach(walkNode);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ast.walk(checkWalker);
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue
Block a user