aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/compress.js2
-rw-r--r--lib/parse.js13
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;