Strict mode incorrectly reset after function
This commit is contained in:
parent
015a0e90bc
commit
f3e759cd03
6
acorn.js
6
acorn.js
@ -302,7 +302,7 @@
|
||||
function initParserState() {
|
||||
lastStart = lastEnd = tokPos;
|
||||
if (options.locations) lastEndLoc = new Position;
|
||||
inFunction = inGenerator = strict = null;
|
||||
inFunction = inGenerator = strict = false;
|
||||
labels = [];
|
||||
readToken();
|
||||
}
|
||||
@ -1752,7 +1752,7 @@
|
||||
// function bodies).
|
||||
|
||||
function parseBlock(allowStrict) {
|
||||
var node = startNode(), first = true, strict = false, oldStrict;
|
||||
var node = startNode(), first = true, oldStrict;
|
||||
node.body = [];
|
||||
expect(_braceL);
|
||||
while (!eat(_braceR)) {
|
||||
@ -1764,7 +1764,7 @@
|
||||
}
|
||||
first = false;
|
||||
}
|
||||
if (strict && !oldStrict) setStrict(false);
|
||||
if (oldStrict === false) setStrict(false);
|
||||
return finishNode(node, "BlockStatement");
|
||||
}
|
||||
|
||||
|
||||
@ -27285,6 +27285,9 @@ testFail("(function a(eval) { \"use strict\"; })",
|
||||
testFail("(function a(package) { \"use strict\"; })",
|
||||
"Defining 'package' in strict mode (1:12)");
|
||||
|
||||
testFail("\"use strict\";function foo(){\"use strict\";}function bar(){var v = 015}",
|
||||
"Invalid number (1:65)");
|
||||
|
||||
testFail("var this = 10;", "Unexpected token (1:4)");
|
||||
|
||||
testFail("throw\n10;", "Illegal newline after throw (1:5)");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user