@@ -69,9 +69,7 @@ function make_code(ast, options) {
|
||||
function parse_test(file) {
|
||||
var script = fs.readFileSync(file, "utf8");
|
||||
try {
|
||||
var ast = U.parse(script, {
|
||||
filename: file
|
||||
});
|
||||
var ast = U.parse(script, { filename: file });
|
||||
} catch (e) {
|
||||
console.error("Caught error while parsing tests in " + file);
|
||||
console.error(e);
|
||||
@@ -98,14 +96,14 @@ function parse_test(file) {
|
||||
file: file,
|
||||
line: node.start.line,
|
||||
col: node.start.col,
|
||||
code: make_code(node, { beautify: false })
|
||||
code: make_code(node, { beautify: false }),
|
||||
}));
|
||||
}
|
||||
|
||||
function read_string(stat) {
|
||||
if (stat.TYPE == "SimpleStatement") {
|
||||
var body = stat.body;
|
||||
switch(body.TYPE) {
|
||||
switch (body.TYPE) {
|
||||
case "String":
|
||||
return body.value;
|
||||
case "Array":
|
||||
@@ -142,7 +140,7 @@ function parse_test(file) {
|
||||
].indexOf(label.name) >= 0, tmpl("Unsupported label {name} [{line},{col}]", {
|
||||
name: label.name,
|
||||
line: label.start.line,
|
||||
col: label.start.col
|
||||
col: label.start.col,
|
||||
}));
|
||||
var stat = node.body;
|
||||
if (label.name == "expect_exact" || label.name == "node_version") {
|
||||
@@ -155,12 +153,12 @@ function parse_test(file) {
|
||||
var ctor = global[body.expression.name];
|
||||
assert.ok(ctor === Error || ctor.prototype instanceof Error, tmpl("Unsupported expect_stdout format [{line},{col}]", {
|
||||
line: label.start.line,
|
||||
col: label.start.col
|
||||
col: label.start.col,
|
||||
}));
|
||||
test[label.name] = ctor.apply(null, body.args.map(function(node) {
|
||||
assert.ok(node instanceof U.AST_Constant, tmpl("Unsupported expect_stdout format [{line},{col}]", {
|
||||
line: label.start.line,
|
||||
col: label.start.col
|
||||
col: label.start.col,
|
||||
}));
|
||||
return node.value;
|
||||
}));
|
||||
|
||||
@@ -726,8 +726,8 @@ issue_4401: {
|
||||
expect: {
|
||||
(function() {
|
||||
var a = (b => b(a))(console.log || a);
|
||||
var c = console.log;
|
||||
c && c(typeof b);
|
||||
var a = console.log;
|
||||
a && a(typeof b);
|
||||
})();
|
||||
}
|
||||
expect_stdout: [
|
||||
|
||||
@@ -184,12 +184,12 @@ merge_vars_2: {
|
||||
expect: {
|
||||
var a = 0;
|
||||
1 && --a,
|
||||
b = function f() {
|
||||
a = function f() {
|
||||
const c = a && f;
|
||||
c.var += 0;
|
||||
}(),
|
||||
void console.log(b);
|
||||
var b;
|
||||
void console.log(a);
|
||||
var a;
|
||||
}
|
||||
expect_stdout: "undefined"
|
||||
}
|
||||
|
||||
@@ -2239,3 +2239,77 @@ issue_5407: {
|
||||
]
|
||||
node_version: ">=6"
|
||||
}
|
||||
|
||||
issue_5444_1: {
|
||||
options = {
|
||||
merge_vars: true,
|
||||
toplevel: true,
|
||||
}
|
||||
input: {
|
||||
var a = 42;
|
||||
var b = function({} = setImmediate(function() {
|
||||
console.log(a++);
|
||||
})) {
|
||||
return this;
|
||||
}();
|
||||
console.log(typeof b);
|
||||
}
|
||||
expect: {
|
||||
var a = 42;
|
||||
var b = function({} = setImmediate(function() {
|
||||
console.log(a++);
|
||||
})) {
|
||||
return this;
|
||||
}();
|
||||
console.log(typeof b);
|
||||
}
|
||||
expect_stdout: [
|
||||
"object",
|
||||
"42",
|
||||
]
|
||||
node_version: ">=6"
|
||||
}
|
||||
|
||||
issue_5444_2: {
|
||||
options = {
|
||||
merge_vars: true,
|
||||
}
|
||||
input: {
|
||||
function f(a, b = a++) {
|
||||
return b;
|
||||
}
|
||||
console.log(f("FAIL") || "PASS");
|
||||
}
|
||||
expect: {
|
||||
function f(a, b = a++) {
|
||||
return b;
|
||||
}
|
||||
console.log(f("FAIL") || "PASS");
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
node_version: ">=6"
|
||||
}
|
||||
|
||||
issue_5444_3: {
|
||||
options = {
|
||||
merge_vars: true,
|
||||
}
|
||||
input: {
|
||||
function f(a, b = function(c = a *= this) {
|
||||
return c;
|
||||
}()) {
|
||||
return b;
|
||||
}
|
||||
console.log(f("FAIL") || "PASS");
|
||||
}
|
||||
expect: {
|
||||
function f(a, b = function(c = a *= this) {
|
||||
return c;
|
||||
}()) {
|
||||
return b;
|
||||
}
|
||||
console.log(f("FAIL") || "PASS");
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
node_version: ">=6"
|
||||
}
|
||||
|
||||
@@ -1815,8 +1815,8 @@ issue_4288: {
|
||||
console.log(typeof b);
|
||||
}()]: a,
|
||||
}) {
|
||||
var b = a;
|
||||
b++;
|
||||
var a = a;
|
||||
a++;
|
||||
}
|
||||
f(0);
|
||||
}
|
||||
|
||||
@@ -237,12 +237,12 @@ merge_vars_2: {
|
||||
"use strict";
|
||||
var a = 0;
|
||||
1 && --a,
|
||||
b = function f() {
|
||||
a = function f() {
|
||||
let c = a && f;
|
||||
c.var += 0;
|
||||
}(),
|
||||
void console.log(b);
|
||||
var b;
|
||||
void console.log(a);
|
||||
var a;
|
||||
}
|
||||
expect_stdout: "undefined"
|
||||
node_version: ">=4"
|
||||
|
||||
Reference in New Issue
Block a user