mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 19:25:43 +00:00
Bug 1215341 - Update tests. (r=jandem)
This commit is contained in:
parent
acb34e89d9
commit
b75caf79c0
@ -4,8 +4,8 @@
|
|||||||
(function () {
|
(function () {
|
||||||
const c = 0;
|
const c = 0;
|
||||||
with ({}) {
|
with ({}) {
|
||||||
for each (c in [{}, {}]) {
|
for each (k in [{}, {}]) {
|
||||||
"" + c;
|
"" + k;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
load(libdir + "asserts.js");
|
|
||||||
|
|
||||||
assertThrowsInstanceOf(function () {
|
|
||||||
eval("function x() { 'use strict'; const x = 4; x = 3; }");
|
|
||||||
}, SyntaxError);
|
|
||||||
assertThrowsInstanceOf(function () {
|
|
||||||
Function("'use strict'; const x = x = 5;");
|
|
||||||
}, SyntaxError)
|
|
@ -1,23 +1,23 @@
|
|||||||
// Can't assign to const
|
// Can't assign to const is a runtime TypeError
|
||||||
|
|
||||||
load(libdir + 'asserts.js');
|
load(libdir + 'asserts.js');
|
||||||
|
|
||||||
function assertSyntaxError(str) {
|
function assertTypeError(str) {
|
||||||
assertThrowsInstanceOf(function () { eval(str); }, SyntaxError);
|
assertThrowsInstanceOf(function () { eval(str); }, TypeError);
|
||||||
}
|
}
|
||||||
|
|
||||||
assertSyntaxError("(function() { const x = 3; (function() x++)(); return x })");
|
assertTypeError("(function() { const x = 3; (() => x++)(); return x })()");
|
||||||
assertSyntaxError("(function() { const x = 3; (function() x++)(); return x++ })");
|
assertTypeError("(function() { const x = 3; (() => x++)(); return x++ })()");
|
||||||
assertSyntaxError("(function() { const x = 2; (function() x++)(); return ++x })");
|
assertTypeError("(function() { const x = 2; (() => x++)(); return ++x })()");
|
||||||
assertSyntaxError("(function() { const x = 2; (function() x++)(); return x += 1 })");
|
assertTypeError("(function() { const x = 2; (() => x++)(); return x += 1 })()");
|
||||||
|
|
||||||
assertSyntaxError("(function() { const x = 3; x = 1; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; x = 1; return (function() { return x})() })()");
|
||||||
assertSyntaxError("(function() { const x = 3; x = 1; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; x = 1; return (function() { return x})() })()");
|
||||||
assertSyntaxError("(function() { const x = 3; x++; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; x++; return (function() { return x})() })()");
|
||||||
assertSyntaxError("(function() { const x = 3; ++x; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; ++x; return (function() { return x})() })()");
|
||||||
assertSyntaxError("(function() { const x = 3; x--; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; x--; return (function() { return x})() })()");
|
||||||
assertSyntaxError("(function() { const x = 3; --x; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; --x; return (function() { return x})() })()");
|
||||||
assertSyntaxError("(function() { const x = 3; x += 1; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; x += 1; return (function() { return x})() })()");
|
||||||
assertSyntaxError("(function() { const x = 3; x -= 1; return (function() { return x})() })");
|
assertTypeError("(function() { const x = 3; x -= 1; return (function() { return x})() })()");
|
||||||
|
|
||||||
assertSyntaxError("(function() { const x = 3; [x] = [1]; })");
|
assertTypeError("(function() { const x = 3; [x] = [1]; })()");
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
// |jit-test| error: SyntaxError
|
// |jit-test| error: TypeError
|
||||||
|
|
||||||
const x = 1; x = 2;
|
const x = 1; x = 2;
|
||||||
|
@ -4,38 +4,16 @@
|
|||||||
|
|
||||||
if (classesEnabled()) {
|
if (classesEnabled()) {
|
||||||
|
|
||||||
// XXXefaust Because we currently try to do assignment to const as an early
|
|
||||||
// error, sometimes, maybe, this is almost sometimes a syntax error.
|
|
||||||
// It is specced to be a TypeError
|
|
||||||
|
|
||||||
function statementWrapper() {
|
|
||||||
eval("class Foo { constructor() { } tryBreak() { Foo = 4; } }");
|
|
||||||
}
|
|
||||||
|
|
||||||
function expressionWrapper() {
|
|
||||||
// Mmmmm. Lazy parseing means we don't see this as an error until later.
|
|
||||||
eval(`var x = class Foo { constructor() { }; tryBreak() { Foo = 4; } };
|
|
||||||
new x().tryBreak();`);
|
|
||||||
}
|
|
||||||
|
|
||||||
assertThrowsInstanceOf(statementWrapper, SyntaxError);
|
|
||||||
assertThrowsInstanceOf(expressionWrapper, TypeError);
|
|
||||||
|
|
||||||
/*
|
|
||||||
var test = `
|
var test = `
|
||||||
class Foo { constructor() { }; tryBreak() { Foo = 4; } }
|
class Foof { constructor() { }; tryBreak() { Foof = 4; } }
|
||||||
for (let result of [Foo, class Bar { constructor() { }; tryBreak() { Bar = 4; } }])
|
for (let result of [Foof, class Bar { constructor() { }; tryBreak() { Bar = 4; } }])
|
||||||
assertThrowsInstanceOf(() => new result().tryBreak(), TypeError);
|
assertThrowsInstanceOf(() => new result().tryBreak(), TypeError);
|
||||||
|
|
||||||
{
|
{
|
||||||
class foo { constructor() { }; tryBreak() { foo = 4; } }
|
class foo { constructor() { }; tryBreak() { foo = 4; } }
|
||||||
for (let result of [foo, class Bar { constructor() { }; tryBreak() { Bar = 4 }])
|
for (let result of [foo, class Bar { constructor() { }; tryBreak() { Bar = 4 } }])
|
||||||
assertThrowsInstanceOf(() => new result().tryBreak(), TypeError);
|
assertThrowsInstanceOf(() => new result().tryBreak(), TypeError);
|
||||||
}
|
}
|
||||||
`;
|
|
||||||
*/
|
|
||||||
|
|
||||||
var test = `
|
|
||||||
|
|
||||||
// TDZ applies to inner bindings
|
// TDZ applies to inner bindings
|
||||||
assertThrowsInstanceOf(()=>eval(\`class Bar {
|
assertThrowsInstanceOf(()=>eval(\`class Bar {
|
||||||
|
@ -174,7 +174,7 @@ catch(ex)
|
|||||||
reportCompare(expect, actual, summary + section);
|
reportCompare(expect, actual, summary + section);
|
||||||
|
|
||||||
const c = 0;
|
const c = 0;
|
||||||
expect = 0;
|
expect = 'error';
|
||||||
section = ': for(c in b);';
|
section = ': for(c in b);';
|
||||||
printStatus(section);
|
printStatus(section);
|
||||||
try
|
try
|
||||||
@ -190,7 +190,7 @@ catch(ex)
|
|||||||
}
|
}
|
||||||
reportCompare(expect, actual, summary + section);
|
reportCompare(expect, actual, summary + section);
|
||||||
|
|
||||||
expect = 0;
|
expect = 'error';
|
||||||
section = ': function foo(){for(c in b);};foo();';
|
section = ': function foo(){for(c in b);};foo();';
|
||||||
printStatus(section);
|
printStatus(section);
|
||||||
try
|
try
|
||||||
|
@ -20,7 +20,7 @@ function test()
|
|||||||
printBugNumber(BUGNUMBER);
|
printBugNumber(BUGNUMBER);
|
||||||
printStatus (summary);
|
printStatus (summary);
|
||||||
|
|
||||||
expect = 'SyntaxError: invalid assignment to const b';
|
expect = 'TypeError: invalid assignment to const `b\'';
|
||||||
|
|
||||||
jit(true);
|
jit(true);
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ function test()
|
|||||||
printBugNumber(BUGNUMBER);
|
printBugNumber(BUGNUMBER);
|
||||||
printStatus (summary);
|
printStatus (summary);
|
||||||
|
|
||||||
expect = 'SyntaxError: invalid assignment to const x';
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
eval('(function() { const x = 1; for (x in null); })();');
|
eval('(function() { const x = 1; for (x in null); })();');
|
||||||
|
@ -21,7 +21,6 @@ function test()
|
|||||||
printBugNumber(BUGNUMBER);
|
printBugNumber(BUGNUMBER);
|
||||||
printStatus (summary);
|
printStatus (summary);
|
||||||
|
|
||||||
expect = 'SyntaxError: invalid assignment to const x';
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
eval('const x = undefined; for (x in []);');
|
eval('const x = undefined; for (x in []);');
|
||||||
|
@ -24,10 +24,8 @@ f(w);
|
|||||||
c = 2;
|
c = 2;
|
||||||
try {
|
try {
|
||||||
eval('"use strict"; function g(x) { const y = x; y = 1 + x; } c = 3');
|
eval('"use strict"; function g(x) { const y = x; y = 1 + x; } c = 3');
|
||||||
assertEq(0, 1);
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
assertEq(e.name, 'SyntaxError');
|
assertEq(0, 1);
|
||||||
assertEq(2, c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
c = 4;
|
c = 4;
|
||||||
@ -35,7 +33,7 @@ try {
|
|||||||
eval('"use strict"; const z = w; z = 1 + w; c = 5');
|
eval('"use strict"; const z = w; z = 1 + w; c = 5');
|
||||||
assertEq(0, 1);
|
assertEq(0, 1);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
assertEq(e.name, 'SyntaxError');
|
assertEq(e.name, 'TypeError');
|
||||||
assertEq(4, c);
|
assertEq(4, c);
|
||||||
assertEq('z' in this, false);
|
assertEq('z' in this, false);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user