fix corner cases with template literals (#4780)
This commit is contained in:
@@ -73,6 +73,20 @@ tag_parentheses_new: {
|
||||
node_version: ">=4"
|
||||
}
|
||||
|
||||
tag_parentheses_sequence: {
|
||||
input: {
|
||||
var o = {
|
||||
f() {
|
||||
console.log(this === o ? "FAIL" : "PASS");
|
||||
},
|
||||
};
|
||||
(42, o.f)``;
|
||||
}
|
||||
expect_exact: 'var o={f(){console.log(this===o?"FAIL":"PASS")}};(42,o.f)``;'
|
||||
expect_stdout: "PASS"
|
||||
node_version: ">=4"
|
||||
}
|
||||
|
||||
malformed_escape: {
|
||||
input: {
|
||||
(function(s) {
|
||||
@@ -211,7 +225,7 @@ unsafe_evaluate: {
|
||||
node_version: ">=8"
|
||||
}
|
||||
|
||||
side_effects: {
|
||||
side_effects_1: {
|
||||
options = {
|
||||
side_effects: true,
|
||||
}
|
||||
@@ -228,6 +242,30 @@ side_effects: {
|
||||
node_version: ">=4"
|
||||
}
|
||||
|
||||
side_effects_2: {
|
||||
options = {
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
var o = {
|
||||
f() {
|
||||
console.log(this === o ? "FAIL" : "PASS");
|
||||
},
|
||||
};
|
||||
(42, o.f)``;
|
||||
}
|
||||
expect: {
|
||||
var o = {
|
||||
f() {
|
||||
console.log(this === o ? "FAIL" : "PASS");
|
||||
},
|
||||
};
|
||||
(0, o.f)``;
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
node_version: ">=4"
|
||||
}
|
||||
|
||||
unsafe_side_effects: {
|
||||
options = {
|
||||
side_effects: true,
|
||||
|
||||
@@ -1493,7 +1493,9 @@ function _createExpression(recurmax, noComma, stmtDepth, canThrow) {
|
||||
case p++:
|
||||
var name = getVarName();
|
||||
var fn = name + "." + getDotKey();
|
||||
var s = "typeof " + fn + ' == "function" && --_calls_ >= 0 && ' + fn + createArgs(recurmax, stmtDepth, canThrow);
|
||||
var s = "typeof " + fn + ' == "function" && --_calls_ >= 0 && ';
|
||||
s += rng(5) ? fn : "(" + createExpression(recurmax, NO_COMMA, stmtDepth, canThrow) + ", " + fn + ")";
|
||||
s += createArgs(recurmax, stmtDepth, canThrow);
|
||||
return mayDefer(canThrow && rng(20) == 0 ? s : name + " && " + s);
|
||||
case p++:
|
||||
if (SUPPORT.class) {
|
||||
|
||||
Reference in New Issue
Block a user