Merge branch 'master' into harmony-v3.1.4

This commit is contained in:
alexlamsl
2017-10-16 12:32:50 +08:00
7 changed files with 600 additions and 189 deletions

View File

@@ -172,6 +172,7 @@ unsafe_evaluate: {
options = {
evaluate : true,
reduce_vars : true,
side_effects : true,
unsafe : true,
unused : true
}
@@ -1898,10 +1899,7 @@ redefine_farg_3: {
console.log(f([]), g([]), h([]));
}
expect: {
console.log(function(a) {
var a;
return typeof a;
}([]), "number", "undefined");
console.log(typeof [], "number", "undefined");
}
expect_stdout: "object number undefined"
}
@@ -2735,3 +2733,270 @@ for_in_prop: {
}
expect_stdout: "1"
}
obj_var_1: {
options = {
evaluate: true,
passes: 2,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var C = 1;
var obj = {
bar: function() {
return C + C;
}
};
console.log(obj.bar());
}
expect: {
console.log({
bar: function() {
return 2;
}
}.bar());
}
expect_stdout: "2"
}
obj_var_2: {
options = {
evaluate: true,
inline: true,
passes: 2,
reduce_vars: true,
side_effects: true,
toplevel: true,
unsafe: true,
unused: true,
}
input: {
var C = 1;
var obj = {
bar: function() {
return C + C;
}
};
console.log(obj.bar());
}
expect: {
console.log(2);
}
expect_stdout: "2"
}
obj_arg_1: {
options = {
evaluate: true,
inline: true,
passes: 2,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var C = 1;
function f(obj) {
return obj.bar();
}
console.log(f({
bar: function() {
return C + C;
}
}));
}
expect: {
console.log({
bar: function() {
return 2;
}
}.bar());
}
expect_stdout: "2"
}
obj_arg_2: {
options = {
evaluate: true,
inline: true,
passes: 2,
reduce_vars: true,
side_effects: true,
toplevel: true,
unsafe: true,
unused: true,
}
input: {
var C = 1;
function f(obj) {
return obj.bar();
}
console.log(f({
bar: function() {
return C + C;
}
}));
}
expect: {
console.log(2);
}
expect_stdout: "2"
}
func_arg_1: {
options = {
evaluate: true,
inline: true,
passes: 2,
reduce_vars: true,
side_effects: true,
toplevel: true,
unused: true,
}
input: {
var a = 42;
!function(a) {
console.log(a());
}(function() {
return a;
});
}
expect: {
console.log(42);
}
expect_stdout: "42"
}
func_arg_2: {
options = {
evaluate: true,
inline: true,
passes: 2,
reduce_vars: true,
side_effects: true,
toplevel: true,
unused: true,
}
input: {
var a = 42;
!function(a) {
console.log(a());
}(function(a) {
return a;
});
}
expect: {
console.log(void 0);
}
expect_stdout: "undefined"
}
regex_loop: {
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
function f(x) {
for (var r, s = "acdabcdeabbb"; r = x().exec(s);)
console.log(r[0]);
}
var a = /ab*/g;
f(function() {
return a;
});
}
expect: {
var a = /ab*/g;
(function(x) {
for (var r, s = "acdabcdeabbb"; r = x().exec(s);)
console.log(r[0]);
})(function() {
return a;
});
}
expect_stdout: true
}
obj_for_1: {
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var o = { a: 1 };
for (var i = o.a--; i; i--)
console.log(i);
}
expect: {
for (var i = { a: 1 }.a--; i; i--)
console.log(i);
}
expect_stdout: "1"
}
obj_for_2: {
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var o = { a: 1 };
for (var i; i = o.a--;)
console.log(i);
}
expect: {
var o = { a: 1 };
for (var i; i = o.a--;)
console.log(i);
}
expect_stdout: "1"
}
array_forin_1: {
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var a = [ 1, 2, 3 ];
for (var b in a)
console.log(b);
}
expect: {
for (var b in [ 1, 2, 3 ])
console.log(b);
}
expect_stdout: [
"0",
"1",
"2",
]
}
array_forin_2: {
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var a = [];
for (var b in [ 1, 2, 3 ])
a.push(b);
console.log(a.length);
}
expect: {
var a = [];
for (var b in [ 1, 2, 3 ])
a.push(b);
console.log(a.length);
}
expect_stdout: "3"
}