@@ -2411,7 +2411,8 @@ function parse($TEXT, options) {
|
|||||||
unexpected(tmp);
|
unexpected(tmp);
|
||||||
}
|
}
|
||||||
case "name":
|
case "name":
|
||||||
if (tmp.value === "yield" && S.input.has_directive("use strict") && !is_in_generator()) {
|
if (tmp.value == "yield" && !is_token(peek(), "punc", ":")
|
||||||
|
&& S.input.has_directive("use strict") && !is_in_generator()) {
|
||||||
token_error(tmp, "Unexpected yield identifier inside strict mode");
|
token_error(tmp, "Unexpected yield identifier inside strict mode");
|
||||||
}
|
}
|
||||||
case "string":
|
case "string":
|
||||||
|
|||||||
@@ -190,3 +190,12 @@ yield_sub: {
|
|||||||
}
|
}
|
||||||
expect_exact: 'function*foo(){yield x["foo"];(yield x)["foo"];yield(yield obj.foo())["bar"]()}'
|
expect_exact: 'function*foo(){yield x["foo"];(yield x)["foo"];yield(yield obj.foo())["bar"]()}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
yield_as_ES5_property: {
|
||||||
|
input: {
|
||||||
|
"use strict";
|
||||||
|
console.log({yield: 42}.yield);
|
||||||
|
}
|
||||||
|
expect_exact: '"use strict";console.log({yield:42}.yield);'
|
||||||
|
expect_stdout: "42"
|
||||||
|
}
|
||||||
|
|||||||
@@ -65,9 +65,9 @@ describe("Yield", function() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Should not allow yield to be used as symbol, identifier or property outside generators in strict mode", function() {
|
it("Should not allow yield to be used as symbol, identifier or shorthand property outside generators in strict mode", function() {
|
||||||
var tests = [
|
var tests = [
|
||||||
// Fail as as_symbol
|
// Fail in as_symbol
|
||||||
'"use strict"; import yield from "bar";',
|
'"use strict"; import yield from "bar";',
|
||||||
'"use strict"; yield = 123;',
|
'"use strict"; yield = 123;',
|
||||||
'"use strict"; yield: "123";',
|
'"use strict"; yield: "123";',
|
||||||
@@ -79,13 +79,12 @@ describe("Yield", function() {
|
|||||||
'"use strict"; var yield = "foo";',
|
'"use strict"; var yield = "foo";',
|
||||||
'"use strict"; class yield {}',
|
'"use strict"; class yield {}',
|
||||||
|
|
||||||
// Fail as maybe_assign
|
// Fail in maybe_assign
|
||||||
'"use strict"; var foo = yield;',
|
'"use strict"; var foo = yield;',
|
||||||
'"use strict"; var foo = bar = yield',
|
'"use strict"; var foo = bar = yield',
|
||||||
|
|
||||||
// Fail as as_property_name
|
// Fail in as_property_name
|
||||||
'"use strict"; var foo = {yield};',
|
'"use strict"; var foo = {yield};',
|
||||||
'"use strict"; var bar = {yield: "foo"};'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
var fail = function(e) {
|
var fail = function(e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user