diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 2 | ||||
-rw-r--r-- | lib/parse.js | 13 |
2 files changed, 6 insertions, 9 deletions
diff --git a/lib/compress.js b/lib/compress.js index ab837f60..9333cdf9 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -8429,7 +8429,7 @@ merge(Compressor.prototype, { fixed.name = make_node(AST_SymbolLambda, fixed.name, fixed.name); } if (fixed instanceof AST_Lambda) { - var scope = self.scope; + var scope = self.scope.resolve(); fixed.enclosed.forEach(function(def) { if (fixed.variables.has(def.name)) return; if (scope.var_names()[def.name]) return; diff --git a/lib/parse.js b/lib/parse.js index 69c14e4a..82717d26 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -753,7 +753,7 @@ function parse($TEXT, options) { } } - var statement = embed_tokens(function(strict_defun) { + var statement = embed_tokens(function() { handle_regexp(); switch (S.token.type) { case "string": @@ -844,9 +844,6 @@ function parse($TEXT, options) { return for_(); case "function": - if (!strict_defun && S.input.has_directive("use strict")) { - croak("In strict mode code, functions can only be declared at top level or immediately within another function."); - } next(); return function_(AST_Defun); @@ -1038,7 +1035,7 @@ function parse($TEXT, options) { S.input.push_directives_stack(); S.in_loop = 0; S.labels = []; - var body = block_(true); + var body = block_(); if (S.input.has_directive("use strict")) { if (name) strict_verify_symbol(name); argnames.forEach(strict_verify_symbol); @@ -1067,12 +1064,12 @@ function parse($TEXT, options) { }); } - function block_(strict_defun) { + function block_() { expect("{"); var a = []; while (!is("punc", "}")) { if (is("eof")) expect_token("punc", "}"); - a.push(statement(strict_defun)); + a.push(statement()); } next(); return a; @@ -1616,7 +1613,7 @@ function parse($TEXT, options) { var body = []; S.input.push_directives_stack(); while (!is("eof")) - body.push(statement(true)); + body.push(statement()); S.input.pop_directives_stack(); var end = prev(); var toplevel = options.toplevel; |