Commit a19b9c85 authored by marja's avatar marja Committed by Commit bot

Preparsing inner functions: add regression tests for parameters.

Now that we consistently preparse the parameters of a preparsed
function, these no longer crash.

BUG=5501

Review-Url: https://codereview.chromium.org/2502333002
Cr-Commit-Position: refs/heads/master@{#41038}
parent 248a3e25
...@@ -102,6 +102,100 @@ ...@@ -102,6 +102,100 @@
} }
})(); })();
(function TestInnerFunctionDestructuredParameter_1() {
var a = 1;
var b = 2;
var c = 3;
function inner([d, a]) {
a; b; c;
}
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerFunctionDestructuredParameter_2() {
var a = 1;
var b = 2;
var c = 3;
function inner({d, a}) {
a; b; c;
}
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerArrowFunctionParameter() {
var a = 1;
var b = 2;
var c = 3;
(a) => { a; b; c; }
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerArrowFunctionRestParameter() {
var a = 1;
var b = 2;
var c = 3;
(...a) => { a; b; c; }
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerArrowFunctionDestructuredParameter_1() {
var a = 1;
var b = 2;
var c = 3;
([d, a]) => { a; b; c; }
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerArrowFunctionDestructuredParameter_2() {
var a = 1;
var b = 2;
var c = 3;
({d, a}) => { a; b; c; }
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerInnerFunctionParameter() { (function TestInnerInnerFunctionParameter() {
var a = 1; var a = 1;
var b = 2; var b = 2;
...@@ -136,7 +230,41 @@ ...@@ -136,7 +230,41 @@
} }
})(); })();
(function TestInnerArrowFunctionParameter() { (function TestInnerInnerFunctionDestructuredParameter_1() {
var a = 1;
var b = 2;
var c = 3;
function inner() {
function innerinner({d, a}) { a; b; c; }
}
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerInnerFunctionDestructuredParameter_2() {
var a = 1;
var b = 2;
var c = 3;
function inner() {
function innerinner([d, a]) { a; b; c; }
}
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerInnerArrowFunctionParameter() {
var a = 1; var a = 1;
var b = 2; var b = 2;
var c = 3; var c = 3;
...@@ -153,7 +281,7 @@ ...@@ -153,7 +281,7 @@
} }
})(); })();
(function TestInnerArrowFunctionRestParameter() { (function TestInnerInnerArrowFunctionRestParameter() {
var a = 1; var a = 1;
var b = 2; var b = 2;
var c = 3; var c = 3;
...@@ -170,6 +298,40 @@ ...@@ -170,6 +298,40 @@
} }
})(); })();
(function TestInnerInnerArrowFunctionDestructuredParameter_1() {
var a = 1;
var b = 2;
var c = 3;
function inner() {
var f = ([d, a]) => a + b + c;
}
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerInnerArrowFunctionDestructuredParameter_2() {
var a = 1;
var b = 2;
var c = 3;
function inner() {
var f = ({d, a}) => a + b + c;
}
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
assertEquals(1, a);
assertEquals(2, b);
assertEquals(3, c);
}
})();
(function TestInnerFunctionInnerFunction() { (function TestInnerFunctionInnerFunction() {
var a = 1; var a = 1;
var b = 2; var b = 2;
...@@ -605,24 +767,90 @@ ...@@ -605,24 +767,90 @@
} }
})(); })();
(function TestRegress650969_9() { (function TestRegress650969_9_parameter() {
for (var i = 0; i < 3; ++i) { for (var i = 0; i < 3; ++i) {
if (i == 1) { if (i == 1) {
%OptimizeOsr(); %OptimizeOsr();
} }
var a; var a;
function inner(a) { function inner(a) {}
}
})();
(function TestRegress650969_9_restParameter() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
} }
var a;
function inner(...a) {}
} }
})(); })();
(function TestRegress650969_10() { (function TestRegress650969_9_destructuredParameter_1() {
for (var i = 0; i < 3; ++i) { for (var i = 0; i < 3; ++i) {
if (i == 1) { if (i == 1) {
%OptimizeOsr(); %OptimizeOsr();
} }
var a; var a;
function inner(...a) { function inner([d, a]) {}
}
})();
(function TestRegress650969_9_destructuredParameter_2() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
var a;
function inner({d, a}) {}
}
})();
(function TestRegress650969_10_parameter() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
var a;
function inner() {
function innerinner(a) {}
}
}
})();
(function TestRegress650969_10_restParameter() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
var a;
function inner() {
function innerinner(...a) {}
}
}
})();
(function TestRegress650969_10_destructuredParameter_1() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
var a;
function inner() {
function innerinner([d, a]) {}
}
}
})();
(function TestRegress650969_10_destructuredParameter_2() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
var a;
function inner() {
function innerinner({d, a}) {}
} }
} }
})(); })();
...@@ -879,6 +1107,30 @@ ...@@ -879,6 +1107,30 @@
} }
})(); })();
(function TestRegress650969_18() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
var a;
function inner() {
function innerinner([a, b]) {}
}
}
})();
(function TestRegress650969_18() {
for (var i = 0; i < 3; ++i) {
if (i == 1) {
%OptimizeOsr();
}
var a;
function inner() {
function innerinner(a) {}
}
}
})();
// Regression tests for an intermediate stage where unresolved references were // Regression tests for an intermediate stage where unresolved references were
// discarded too aggressively. // discarded too aggressively.
(function TestRegress650969_sidetrack_var() { (function TestRegress650969_sidetrack_var() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment