mirror of
https://github.com/tc39/test262.git
synced 2025-04-08 19:35:28 +02:00
Merge pull request #2037 from test262-automation/v8-test262-automation-export-ad1b4aadf8
Import test changes from V8
This commit is contained in:
commit
04ae1c1359
implementation-contributed
curation_logs
v8
intl
mjsunit
asm
compiler
es6
es8
harmony
mjsunit.statusmodules-namespace1.jsobject-seal.jsregress-918763.jsregress
regress-408036.jsregress-6288.jsregress-8630.jsregress-8659.jsregress-897512.jsregress-913844.jsregress-917215.jsregress-917755.jsregress-917988.jsregress-919340.jsregress-919710.jsregress-921382.jsregress-crbug-860788.jsregress-crbug-917076.jsregress-crbug-917980.jsregress-crbug-920184.jsregress-loop-var-assign-without-block-scope.jsregress-sloppy-block-function-hoisting-dynamic.js
testcfg.pywasm
test262
wasm-js
@ -1,5 +1,5 @@
|
||||
{
|
||||
"sourceRevisionAtLastExport": "f88d169e",
|
||||
"targetRevisionAtLastExport": "ad1b4aadf8",
|
||||
"sourceRevisionAtLastExport": "f85a3554",
|
||||
"targetRevisionAtLastExport": "6bb8f41e0a",
|
||||
"curatedFiles": {}
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
// Flags: --harmony-locale
|
||||
//
|
||||
// Test NumberFormat will accept Intl.Locale as first parameter, or
|
||||
// as in the array.
|
||||
|
||||
let tag = "zh-Hant-TW-u-nu-thai"
|
||||
let l = new Intl.Locale(tag);
|
||||
|
||||
var nf;
|
||||
// Test with String
|
||||
assertDoesNotThrow(() => nf = new Intl.NumberFormat(tag));
|
||||
assertEquals(tag, nf.resolvedOptions().locale);
|
||||
|
||||
// Test with Array with one String
|
||||
assertDoesNotThrow(() => nf = new Intl.NumberFormat([tag]));
|
||||
assertEquals(tag, nf.resolvedOptions().locale);
|
||||
|
||||
// Test with Array with two String
|
||||
assertDoesNotThrow(() => nf = new Intl.NumberFormat([tag, "en"]));
|
||||
assertEquals(tag, nf.resolvedOptions().locale);
|
||||
|
||||
// Test with a Locale
|
||||
assertDoesNotThrow(() => nf = new Intl.NumberFormat(l));
|
||||
assertEquals(tag, nf.resolvedOptions().locale);
|
||||
|
||||
// Test with a Array of one Locale
|
||||
assertDoesNotThrow(() => nf = new Intl.NumberFormat([l]));
|
||||
assertEquals(tag, nf.resolvedOptions().locale);
|
||||
|
||||
// Test with a Array of one Locale and a Sring
|
||||
assertDoesNotThrow(() => nf = new Intl.NumberFormat([l, "en"]));
|
||||
assertEquals(tag, nf.resolvedOptions().locale);
|
||||
|
||||
// Test DateTimeFormat
|
||||
var df;
|
||||
assertDoesNotThrow(() => df = new Intl.DateTimeFormat(tag));
|
||||
assertEquals(tag, df.resolvedOptions().locale);
|
||||
assertDoesNotThrow(() => df = new Intl.DateTimeFormat([tag]));
|
||||
assertEquals(tag, df.resolvedOptions().locale);
|
||||
|
||||
// Test RelativeTimeFormat
|
||||
var rtf;
|
||||
assertDoesNotThrow(() => rtf = new Intl.RelativeTimeFormat(tag));
|
||||
assertEquals(tag, rtf.resolvedOptions().locale);
|
||||
assertDoesNotThrow(() => rtf = new Intl.RelativeTimeFormat([tag]));
|
||||
assertEquals(tag, rtf.resolvedOptions().locale);
|
||||
|
||||
// Test ListFormat
|
||||
tag = "zh-Hant-TW"
|
||||
var lf;
|
||||
assertDoesNotThrow(() => lf = new Intl.ListFormat(tag));
|
||||
assertEquals(tag, lf.resolvedOptions().locale);
|
||||
assertDoesNotThrow(() => lf = new Intl.ListFormat([tag]));
|
||||
assertEquals(tag, lf.resolvedOptions().locale);
|
||||
|
||||
// Test Collator
|
||||
var col;
|
||||
assertDoesNotThrow(() => col = new Intl.Collator(tag));
|
||||
assertEquals(tag, lf.resolvedOptions().locale);
|
||||
assertDoesNotThrow(() => col = new Intl.Collator([tag]));
|
||||
assertEquals(tag, lf.resolvedOptions().locale);
|
@ -27,8 +27,12 @@
|
||||
|
||||
[
|
||||
[ALWAYS, {
|
||||
# TODO(jochen): The following test is flaky.
|
||||
# TODO(jochen): The following test is flaky.
|
||||
'overrides/caching': [PASS, FAIL],
|
||||
|
||||
# https://code.google.com/p/v8/issues/detail?id=7481
|
||||
'collator/check-kf-option': [FAIL],
|
||||
'collator/check-kn-option': [FAIL],
|
||||
}], # ALWAYS
|
||||
|
||||
['variant == no_wasm_traps', {
|
||||
|
@ -86,9 +86,7 @@ assertThrows(
|
||||
}),
|
||||
Error);
|
||||
|
||||
// These don't throw yet, we need to implement language/script/region
|
||||
// override logic first.
|
||||
assertDoesNotThrow(
|
||||
assertThrows(
|
||||
() => new Intl.Locale('en-US', {
|
||||
get language() {
|
||||
throw new Error('foo');
|
||||
@ -96,7 +94,7 @@ assertDoesNotThrow(
|
||||
}),
|
||||
Error);
|
||||
|
||||
assertDoesNotThrow(
|
||||
assertThrows(
|
||||
() => new Intl.Locale('en-US', {
|
||||
get script() {
|
||||
throw new Error('foo');
|
||||
@ -104,7 +102,7 @@ assertDoesNotThrow(
|
||||
}),
|
||||
Error);
|
||||
|
||||
assertDoesNotThrow(
|
||||
assertThrows(
|
||||
() => new Intl.Locale('en-US', {
|
||||
get region() {
|
||||
throw new Error('foo');
|
||||
|
22
implementation-contributed/v8/intl/locale/property.js
Normal file
22
implementation-contributed/v8/intl/locale/property.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --harmony-locale
|
||||
|
||||
// Make sure that accessing locale property will return undefined instead of
|
||||
// crash.
|
||||
|
||||
let locale = new Intl.Locale('sr');
|
||||
|
||||
assertEquals('sr', locale.toString());
|
||||
assertEquals('sr', locale.baseName);
|
||||
assertEquals('sr', locale.language);
|
||||
assertEquals(undefined, locale.script);
|
||||
assertEquals(undefined, locale.region);
|
||||
assertEquals(false, locale.numeric);
|
||||
assertEquals(undefined, locale.calendar);
|
||||
assertEquals(undefined, locale.collation);
|
||||
assertEquals(undefined, locale.hourCycle);
|
||||
assertEquals(undefined, locale.caseFirst);
|
||||
assertEquals(undefined, locale.numberingSystem);
|
7
implementation-contributed/v8/intl/regress-8657.js
Normal file
7
implementation-contributed/v8/intl/regress-8657.js
Normal file
@ -0,0 +1,7 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --harmony-locale
|
||||
|
||||
assertDoesNotThrow(() => new Intl.Locale('und'));
|
11
implementation-contributed/v8/intl/regress-917151.js
Normal file
11
implementation-contributed/v8/intl/regress-917151.js
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2016 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Regression test for 917151
|
||||
|
||||
assertThrows(
|
||||
() => Number.prototype.toLocaleString.call(
|
||||
-22,
|
||||
"x-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6"),
|
||||
RangeError)
|
@ -0,0 +1,97 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --harmony-intl-relative-time-format
|
||||
|
||||
// For locale default the numberingSystem to 'latn'
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("ar").resolvedOptions().numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("en").resolvedOptions().numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("fr").resolvedOptions().numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("hi").resolvedOptions().numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("th").resolvedOptions().numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("zh-Hant").resolvedOptions().numberingSystem
|
||||
);
|
||||
|
||||
// For locale default the numberingSystem to other than 'latn'
|
||||
assertEquals(
|
||||
"arab",
|
||||
new Intl.RelativeTimeFormat("ar-TD").resolvedOptions().numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"arabext",
|
||||
new Intl.RelativeTimeFormat("fa").resolvedOptions().numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"beng",
|
||||
new Intl.RelativeTimeFormat("bn").resolvedOptions().numberingSystem
|
||||
);
|
||||
|
||||
// For locale use -u-nu- to change to other numberingSystem
|
||||
assertEquals(
|
||||
"thai",
|
||||
new Intl.RelativeTimeFormat("en-u-nu-thai").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"arab",
|
||||
new Intl.RelativeTimeFormat("en-u-nu-arab").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
|
||||
// For locale which default others but use -u-nu-latn to change to 'latn' numberingSystem
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("fa-u-nu-latn").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("ar-TD-u-nu-latn").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("fa-u-nu-latn").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("bn-u-nu-latn").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
|
||||
// For locale use -u-nu- with invalid value still back to default.
|
||||
assertEquals(
|
||||
"latn",
|
||||
new Intl.RelativeTimeFormat("en-u-nu-abcd").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
|
||||
assertEquals(
|
||||
"arabext",
|
||||
new Intl.RelativeTimeFormat("fa-u-nu-abcd").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
||||
assertEquals(
|
||||
"beng",
|
||||
new Intl.RelativeTimeFormat("bn-u-nu-abcd").resolvedOptions()
|
||||
.numberingSystem
|
||||
);
|
@ -13,10 +13,15 @@ assertEquals('long', rtf.resolvedOptions().style);
|
||||
assertEquals('always', rtf.resolvedOptions().numeric);
|
||||
|
||||
// contains style, numeric and locale key
|
||||
assertEquals(3, Object.getOwnPropertyNames(rtf.resolvedOptions()).length);
|
||||
assertEquals(4, Object.getOwnPropertyNames(rtf.resolvedOptions()).length);
|
||||
|
||||
// contains style, numeric and locale key
|
||||
assertEquals(3, Object.getOwnPropertyNames(new Intl.RelativeTimeFormat('en').resolvedOptions()).length);
|
||||
assertEquals(
|
||||
4,
|
||||
Object.getOwnPropertyNames(
|
||||
new Intl.RelativeTimeFormat("en").resolvedOptions()
|
||||
).length
|
||||
);
|
||||
|
||||
assertEquals(
|
||||
'short',
|
||||
|
13
implementation-contributed/v8/mjsunit/asm/regress-920076.js
Normal file
13
implementation-contributed/v8/mjsunit/asm/regress-920076.js
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
function Module() {
|
||||
"use asm";
|
||||
function f() {}
|
||||
return f
|
||||
}
|
||||
eval("(" + Module.toString().replace(/;/, String.fromCharCode(8233)) + ")();");
|
||||
assertFalse(%IsAsmWasmCode(Module)); // Valid asm.js, but we reject Unicode.
|
@ -3,7 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --opt --no-always-opt
|
||||
// Flags: --no-stress-background-compile
|
||||
// Flags: --no-stress-background-compile --trace-opt --trace-deopt
|
||||
|
||||
let id = 0;
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
|
||||
function f(get, ...a) {
|
||||
for (let i = 0; i < 1000; i++) {
|
||||
if (i === 999) %OptimizeOsr();
|
||||
a.map(f);
|
||||
}
|
||||
return get();
|
||||
}
|
||||
assertThrows(f);
|
@ -141,15 +141,15 @@ try {
|
||||
}
|
||||
assertTrue(caught);
|
||||
|
||||
caught = false
|
||||
try {
|
||||
(function() {
|
||||
{
|
||||
let x = 1;
|
||||
eval('{ function x() {} }');
|
||||
}
|
||||
})();
|
||||
} catch (e) {
|
||||
caught = true;
|
||||
}
|
||||
assertFalse(caught);
|
||||
// See ES#sec-web-compat-evaldeclarationinstantiation. Sloppy block functions
|
||||
// inside of blocks in eval behave similar to regular sloppy block function
|
||||
// hoisting: the var declaration on the function level is only created if
|
||||
// it would not cause a syntax error. A masking let would cause a conflicting
|
||||
// var declaration syntax error, and hence the var isn't introduced.
|
||||
(function() {
|
||||
{
|
||||
let x = 1;
|
||||
eval('{ function x() {} }');
|
||||
assertEquals(1, x);
|
||||
}
|
||||
})();
|
||||
|
@ -620,15 +620,12 @@ eval(`
|
||||
return 4;
|
||||
} }`);
|
||||
|
||||
// assertEquals(0, f);
|
||||
assertEquals(4, f());
|
||||
assertEquals(0, f);
|
||||
}
|
||||
|
||||
// assertEquals(4, f());
|
||||
assertEquals(undefined, f);
|
||||
assertEquals(4, f());
|
||||
})();
|
||||
|
||||
// This test is incorrect BUG(v8:5168). The commented assertions are correct.
|
||||
(function evalHoistingThroughWith() {
|
||||
with ({f: 0}) {
|
||||
eval(`{ function f() {
|
||||
|
@ -574,3 +574,58 @@ assertEquals(oz, [1, 2, 3, 4, 5]);
|
||||
assertEquals(1, ext("let x; ({x} = { x: super() })").x);
|
||||
assertEquals(1, ext("let x, y; ({ x: y } = { x } = { x: super() })").x);
|
||||
})();
|
||||
|
||||
(function testInvalidReturn() {
|
||||
function* g() { yield 1; }
|
||||
|
||||
let executed_x_setter;
|
||||
let executed_return;
|
||||
var a = {
|
||||
set x(val) {
|
||||
executed_x_setter = true;
|
||||
throw 3;
|
||||
}
|
||||
};
|
||||
|
||||
// The exception from the execution of g().return() should be suppressed by
|
||||
// the setter error.
|
||||
executed_x_setter = false;
|
||||
executed_return = false;
|
||||
g.prototype.return = function() {
|
||||
executed_return = true;
|
||||
throw 4;
|
||||
};
|
||||
assertThrowsEquals("[a.x] = g()", 3);
|
||||
assertTrue(executed_x_setter);
|
||||
assertTrue(executed_return);
|
||||
|
||||
// The exception from g().return() not returning an object should be
|
||||
// suppressed by the setter error.
|
||||
executed_x_setter = false;
|
||||
executed_return = false;
|
||||
g.prototype.return = function() {
|
||||
assertTrue(executed_return);
|
||||
return null;
|
||||
};
|
||||
assertThrowsEquals("[a.x] = g()", 3);
|
||||
assertTrue(executed_x_setter);
|
||||
assertTrue(executed_return);
|
||||
|
||||
// The TypeError from g().return not being a method should suppress the setter
|
||||
// error.
|
||||
executed_x_setter = false;
|
||||
g.prototype.return = "not a method";
|
||||
assertThrows("[a.x] = g()", TypeError);
|
||||
assertTrue(executed_x_setter);
|
||||
|
||||
// The exception from the access of g().return should suppress the setter
|
||||
// error.
|
||||
executed_x_setter = false;
|
||||
Object.setPrototypeOf(g.prototype, {
|
||||
get return() {
|
||||
throw 4;
|
||||
}
|
||||
});
|
||||
assertThrowsEquals("[a.x] = g()", 4);
|
||||
assertTrue(executed_x_setter);
|
||||
})
|
||||
|
@ -96,7 +96,10 @@ function TestArrayPrototypeUnscopables() {
|
||||
var fill = 'local fill';
|
||||
var find = 'local find';
|
||||
var findIndex = 'local findIndex';
|
||||
var flat = 'local flat';
|
||||
var flatMap = 'local flatMap';
|
||||
var keys = 'local keys';
|
||||
var includes = 'local includes';
|
||||
var values = 'local values';
|
||||
|
||||
var array = [];
|
||||
@ -108,6 +111,9 @@ function TestArrayPrototypeUnscopables() {
|
||||
assertEquals('local fill', fill);
|
||||
assertEquals('local find', find);
|
||||
assertEquals('local findIndex', findIndex);
|
||||
assertEquals('local flat', flat);
|
||||
assertEquals('local flatMap', flatMap);
|
||||
assertEquals('local includes', includes);
|
||||
assertEquals('local keys', keys);
|
||||
assertEquals('local values', values);
|
||||
assertEquals(42, toString);
|
||||
|
@ -2,6 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --noasync-stack-traces
|
||||
|
||||
async function test(func, funcs) {
|
||||
try {
|
||||
await func();
|
||||
@ -81,21 +83,19 @@ async function runTests() {
|
||||
try { await reject(); } catch (e) { throw new Error("FAIL"); }
|
||||
} }).c4, ["c4"]);
|
||||
|
||||
// TODO(caitp): We should infer anonymous async functions as the empty
|
||||
// string, not as the name of a function they're passed as a parameter to.
|
||||
await test(async x => { throw new Error("FAIL") },
|
||||
["test", "test", "runTests"]);
|
||||
["test", "runTests"]);
|
||||
await test(async() => { throw new Error("FAIL") },
|
||||
["test", "test", "runTests"]);
|
||||
["test", "runTests"]);
|
||||
await test(async(a) => { throw new Error("FAIL") },
|
||||
["test", "test", "runTests"]);
|
||||
["test", "runTests"]);
|
||||
await test(async(a, b) => { throw new Error("FAIL") },
|
||||
["test", "test", "runTests"]);
|
||||
["test", "runTests"]);
|
||||
|
||||
await test(async x => { await 1; throw new Error("FAIL") }, ["test"]);
|
||||
await test(async() => { await 1; throw new Error("FAIL") }, ["test"]);
|
||||
await test(async(a) => { await 1; throw new Error("FAIL") }, ["test"]);
|
||||
await test(async(a, b) => { await 1; throw new Error("FAIL") }, ["test"]);
|
||||
await test(async x => { await 1; throw new Error("FAIL") }, []);
|
||||
await test(async() => { await 1; throw new Error("FAIL") }, []);
|
||||
await test(async(a) => { await 1; throw new Error("FAIL") }, []);
|
||||
await test(async(a, b) => { await 1; throw new Error("FAIL") }, []);
|
||||
|
||||
await test(async x => {
|
||||
await 1;
|
||||
@ -104,7 +104,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
|
||||
await test(async() => {
|
||||
await 1;
|
||||
@ -113,7 +113,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
|
||||
await test(async(a) => {
|
||||
await 1;
|
||||
@ -122,7 +122,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
|
||||
await test(async(a, b) => {
|
||||
await 1;
|
||||
@ -131,7 +131,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
|
||||
await test(async x => {
|
||||
await 1;
|
||||
@ -140,7 +140,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
|
||||
await test(async() => {
|
||||
await 1;
|
||||
@ -149,7 +149,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
|
||||
await test(async(a) => {
|
||||
await 1;
|
||||
@ -158,7 +158,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
|
||||
await test(async(a, b) => {
|
||||
await 1;
|
||||
@ -167,7 +167,7 @@ async function runTests() {
|
||||
} catch (e) {
|
||||
throw new Error("FAIL");
|
||||
}
|
||||
}, ["test"]);
|
||||
}, []);
|
||||
}
|
||||
|
||||
runTests().catch(e => {
|
||||
|
@ -0,0 +1,11 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --harmony-hashbang
|
||||
|
||||
// Hashbang syntax is not allowed in eval.
|
||||
assertThrows("#!", SyntaxError);
|
||||
assertThrows("#!\n", SyntaxError);
|
||||
assertThrows("#!---IGNORED---", SyntaxError);
|
||||
assertThrows("#!---IGNORED---\n", SyntaxError);
|
@ -0,0 +1,356 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --harmony-private-fields --allow-natives-syntax
|
||||
|
||||
|
||||
"use strict";
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a;
|
||||
static getA() { return this.#a; }
|
||||
}
|
||||
|
||||
assertEquals(undefined, C.a);
|
||||
assertEquals(undefined, C.getA());
|
||||
|
||||
let c = new C;
|
||||
assertEquals(undefined, c.a);
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a; }
|
||||
}
|
||||
|
||||
assertEquals(undefined, C.a);
|
||||
assertEquals(1, C.getA());
|
||||
|
||||
let c = new C;
|
||||
assertEquals(undefined, c.a);
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = 1;
|
||||
static #b = this.#a;
|
||||
static getB() { return this.#b; }
|
||||
}
|
||||
|
||||
assertEquals(1, C.getB());
|
||||
|
||||
let c = new C;
|
||||
assertEquals(undefined, c.getB);
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a; }
|
||||
constructor() {
|
||||
assertThrows(() => this.#a, TypeError);
|
||||
C.#a = 2;
|
||||
}
|
||||
}
|
||||
|
||||
assertEquals(1, C.getA());
|
||||
|
||||
let c = new C;
|
||||
assertThrows(() => C.prototype.getA.call(c));
|
||||
assertEquals(2, C.getA());
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = this;
|
||||
static #b = () => this;
|
||||
static getA() { return this.#a; }
|
||||
static getB() { return this.#b; }
|
||||
}
|
||||
|
||||
assertSame(C, C.getA());
|
||||
assertSame(C, C.getB()());
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = this;
|
||||
static #b = function() { return this; };
|
||||
static getA() { return this.#a; }
|
||||
static getB() { return this.#b; }
|
||||
}
|
||||
|
||||
assertSame(C, C.getA());
|
||||
assertSame(C, C.getB().call(C));
|
||||
assertSame(undefined, C.getB()());
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = function() { return 1 };
|
||||
static getA() {return this.#a;}
|
||||
}
|
||||
|
||||
assertEquals('#a', C.getA().name);
|
||||
}
|
||||
|
||||
{
|
||||
let d = function() { return new.target; }
|
||||
class C {
|
||||
static #c = d;
|
||||
static getC() { return this.#c; }
|
||||
}
|
||||
|
||||
assertEquals(undefined, C.getC()());
|
||||
assertSame(new d, new (C.getC()));
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = 1;
|
||||
static getA(instance) { return instance.#a; }
|
||||
}
|
||||
|
||||
class B { }
|
||||
|
||||
assertEquals(undefined, C.a);
|
||||
assertEquals(1, C.getA(C));
|
||||
assertThrows(() => C.getA(B), TypeError);
|
||||
}
|
||||
|
||||
{
|
||||
class A {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a; }
|
||||
}
|
||||
|
||||
class B extends A {}
|
||||
assertThrows(() => B.getA(), TypeError);
|
||||
}
|
||||
|
||||
{
|
||||
class A {
|
||||
static #a = 1;
|
||||
static getA() { return A.#a; }
|
||||
}
|
||||
|
||||
class B extends A {}
|
||||
assertSame(1, B.getA());
|
||||
}
|
||||
|
||||
{
|
||||
let prototypeLookup = false;
|
||||
class A {
|
||||
static set a(val) {
|
||||
prototypeLookup = true;
|
||||
}
|
||||
|
||||
static get a() { return undefined; }
|
||||
}
|
||||
|
||||
class C extends A {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a; }
|
||||
}
|
||||
|
||||
assertEquals(1, C.getA());
|
||||
assertEquals(false, prototypeLookup);
|
||||
}
|
||||
|
||||
{
|
||||
class A {
|
||||
static a = 1;
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
static #b = this.a;
|
||||
static getB() { return this.#b; }
|
||||
}
|
||||
|
||||
assertEquals(1, B.getB());
|
||||
}
|
||||
|
||||
{
|
||||
class A {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
static getA() { return super.getA(); }
|
||||
}
|
||||
|
||||
assertThrows(() => B.getA(), TypeError);
|
||||
}
|
||||
|
||||
{
|
||||
class A {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a;}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
static #a = 2;
|
||||
static get_A() { return this.#a;}
|
||||
}
|
||||
|
||||
assertEquals(1, A.getA());
|
||||
assertThrows(() => B.getA(), TypeError);
|
||||
assertEquals(2, B.get_A());
|
||||
}
|
||||
|
||||
{
|
||||
let foo = undefined;
|
||||
class A {
|
||||
static #a = (function() { foo = 1; })();
|
||||
}
|
||||
|
||||
assertEquals(1, foo);
|
||||
}
|
||||
|
||||
{
|
||||
let foo = undefined;
|
||||
class A extends class {} {
|
||||
static #a = (function() { foo = 1; })();
|
||||
}
|
||||
|
||||
assertEquals(1, foo);
|
||||
}
|
||||
|
||||
{
|
||||
function makeClass() {
|
||||
return class {
|
||||
static #a;
|
||||
static setA(val) { this.#a = val; }
|
||||
static getA() { return this.#a; }
|
||||
}
|
||||
}
|
||||
|
||||
let classA = makeClass();
|
||||
let classB = makeClass();
|
||||
|
||||
assertEquals(undefined, classA.getA());
|
||||
assertEquals(undefined, classB.getA());
|
||||
|
||||
classA.setA(3);
|
||||
assertEquals(3, classA.getA());
|
||||
assertEquals(undefined, classB.getA());
|
||||
|
||||
classB.setA(5);
|
||||
assertEquals(3, classA.getA());
|
||||
assertEquals(5, classB.getA());
|
||||
|
||||
assertThrows(() => classA.getA.call(classB), TypeError);
|
||||
assertThrows(() => classB.getA.call(classA), TypeError);
|
||||
}
|
||||
|
||||
{
|
||||
let value = undefined;
|
||||
|
||||
new class {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a; }
|
||||
|
||||
constructor() {
|
||||
new class C {
|
||||
static #a = 2;
|
||||
constructor() {
|
||||
value = C.#a;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assertEquals(2, value);
|
||||
}
|
||||
|
||||
{
|
||||
class A {
|
||||
static #a = 1;
|
||||
static b = class {
|
||||
static getA() { return this.#a; }
|
||||
static get_A(val) { return val.#a; }
|
||||
}
|
||||
}
|
||||
|
||||
assertEquals(1, A.b.getA.call(A));
|
||||
assertEquals(1, A.b.get_A(A));
|
||||
}
|
||||
|
||||
{
|
||||
assertThrows(() => class { static b = this.#a; static #a = 1 }, TypeError);
|
||||
}
|
||||
|
||||
{
|
||||
let symbol = Symbol();
|
||||
|
||||
class C {
|
||||
static #a = 1;
|
||||
static [symbol] = 1;
|
||||
static getA() { return this.#a; }
|
||||
static setA(val) { this.#a = val; }
|
||||
}
|
||||
|
||||
var p = new Proxy(C, {
|
||||
get: function(target, name) {
|
||||
if (typeof(arg) === 'symbol') {
|
||||
assertFalse(%SymbolIsPrivate(name));
|
||||
}
|
||||
return target[name];
|
||||
}
|
||||
});
|
||||
|
||||
assertThrows(() => p.getA(), TypeError);
|
||||
assertThrows(() => p.setA(1), TypeError);
|
||||
assertEquals(1, p[symbol]);
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #b = Object.freeze(this);
|
||||
static getA() { return this.#a; }
|
||||
static #a = 1;
|
||||
}
|
||||
|
||||
assertEquals(1, C.getA());
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = 1;
|
||||
static getA() { return eval('this.#a'); }
|
||||
}
|
||||
|
||||
assertEquals(1, C.getA());
|
||||
}
|
||||
|
||||
{
|
||||
var C;
|
||||
eval('C = class { static #a = 1; static getA() { return eval(\'this.#a\'); }}');
|
||||
|
||||
assertEquals(1, C.getA());
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static #a = 1;
|
||||
static getA() { return this.#a; }
|
||||
static setA() { eval('this.#a = 4'); }
|
||||
}
|
||||
|
||||
assertEquals(1, C.getA());
|
||||
C.setA();
|
||||
assertEquals(4, C.getA());
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
static getA() { return eval('this.#a'); }
|
||||
}
|
||||
|
||||
assertThrows(() => C.getA(), SyntaxError);
|
||||
}
|
@ -268,6 +268,7 @@
|
||||
'regress/regress-trap-allocation-memento': [SKIP],
|
||||
'regress/regress-2249': [SKIP],
|
||||
'regress/regress-4121': [SKIP],
|
||||
'regress/regress-6989': [SKIP],
|
||||
'compare-known-objects-slow': [SKIP],
|
||||
'compiler/array-multiple-receiver-maps': [SKIP],
|
||||
# Tests taking too long
|
||||
@ -322,7 +323,7 @@
|
||||
}], # 'gc_stress == True'
|
||||
|
||||
##############################################################################
|
||||
['lite_mode == True', {
|
||||
['lite_mode', {
|
||||
# Skip tests not suitable for lite_mode.
|
||||
|
||||
# TODO(8596): We cache the templates in the feedback vector. In lite mode
|
||||
@ -348,7 +349,38 @@
|
||||
'spread-large-string': [SKIP],
|
||||
'spread-large-array': [SKIP],
|
||||
|
||||
}], # 'lite_mode == True'
|
||||
# TODO(v8:7777): Re-enable once wasm is supported in jitless mode.
|
||||
'regress/wasm/*': [SKIP],
|
||||
'tools/compiler-trace-flags': [SKIP],
|
||||
'wasm/*': [SKIP],
|
||||
|
||||
# Other tests that use asm / wasm / optimized code.
|
||||
'asm/asm-heap': [SKIP],
|
||||
'asm/asm-validation': [SKIP],
|
||||
'asm/call-stdlib': [SKIP],
|
||||
'asm/call-annotation': [SKIP],
|
||||
'asm/global-imports': [SKIP],
|
||||
'asm/regress-913822': [SKIP],
|
||||
'asm/return-types': [SKIP],
|
||||
'regress/regress-599719': [SKIP],
|
||||
'regress/regress-6196': [SKIP],
|
||||
'regress/regress-6700': [SKIP],
|
||||
'regress/regress-6838-2': [SKIP],
|
||||
'regress/regress-6838-3': [SKIP],
|
||||
|
||||
# Timeouts in lite / jitless mode.
|
||||
'asm/embenchen/*': [SKIP],
|
||||
|
||||
# Tests that generate code at runtime.
|
||||
'code-comments': [SKIP],
|
||||
'regress/regress-617526': [SKIP],
|
||||
'regress/regress-7893': [SKIP],
|
||||
'regress/regress-8377': [SKIP],
|
||||
'regress/regress-863810': [SKIP],
|
||||
'regress/regress-crbug-721835': [SKIP],
|
||||
'regress/regress-crbug-759327': [SKIP],
|
||||
'regress/regress-crbug-898974': [SKIP],
|
||||
}], # 'lite_mode'
|
||||
|
||||
##############################################################################
|
||||
['byteorder == big', {
|
||||
@ -964,4 +996,11 @@
|
||||
# crbug.com/v8/7741
|
||||
'wasm/bigint': [SKIP],
|
||||
}], # arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]
|
||||
|
||||
##############################################################################
|
||||
['arch not in [x64, arm, arm64] or system != linux', {
|
||||
# Unwinding info writer is only supported on x64, arm, and arm64 Linux
|
||||
'regress/regress-913844': [SKIP],
|
||||
}],
|
||||
|
||||
]
|
||||
|
@ -53,9 +53,9 @@ assertEquals(
|
||||
{value: "Module", configurable: false, writable: false, enumerable: false},
|
||||
Reflect.getOwnPropertyDescriptor(foo, Symbol.toStringTag));
|
||||
|
||||
// Nonexistant properties.
|
||||
let nonexistant = ["gaga", 123, Symbol('')];
|
||||
for (let key of nonexistant) {
|
||||
// Nonexistent properties.
|
||||
let nonexistent = ["gaga", 123, Symbol('')];
|
||||
for (let key of nonexistent) {
|
||||
assertSame(undefined, Reflect.getOwnPropertyDescriptor(foo, key));
|
||||
assertTrue(Reflect.deleteProperty(foo, key));
|
||||
assertFalse(Reflect.set(foo, key, true));
|
||||
|
@ -389,3 +389,7 @@ Object.seal(Sealed);
|
||||
assertDoesNotThrow(function() { return new Sealed(); });
|
||||
Sealed.prototype.prototypeExists = true;
|
||||
assertTrue((new Sealed()).prototypeExists);
|
||||
|
||||
obj = new Int32Array(10)
|
||||
Object.seal(obj);
|
||||
assertTrue(Object.isSealed(obj));
|
||||
|
14
implementation-contributed/v8/mjsunit/regress-918763.js
Normal file
14
implementation-contributed/v8/mjsunit/regress-918763.js
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
function C() {}
|
||||
C.__proto__ = null;
|
||||
|
||||
function f(c) { return 0 instanceof c; }
|
||||
|
||||
f(C);
|
||||
%OptimizeFunctionOnNextCall(f);
|
||||
assertThrows(() => f(0));
|
@ -1,5 +0,0 @@
|
||||
// Copyright 2014 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --expose-natives-as 1
|
@ -4,7 +4,10 @@
|
||||
|
||||
// Environment Variables: LC_ALL=pt-BR.UTF8
|
||||
|
||||
// The data files packaged with d8 currently have Brazillian Portuguese
|
||||
// DateTimeFormat but not Collation
|
||||
|
||||
if (this.Intl) {
|
||||
assertEquals('pt-BR', Intl.Collator().resolvedOptions().locale);
|
||||
assertEquals('pt', Intl.Collator().resolvedOptions().locale);
|
||||
assertEquals('pt-BR', Intl.DateTimeFormat().resolvedOptions().locale);
|
||||
}
|
||||
|
@ -0,0 +1,32 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
// Parameters can't have parentheses (both patterns and identifiers)
|
||||
assertThrows("( ({x: 1}) ) => {};", SyntaxError);
|
||||
assertThrows("( (x) ) => {}", SyntaxError);
|
||||
assertThrows("( ({x: 1}) = y ) => {}", SyntaxError);
|
||||
assertThrows("( (x) = y ) => {}", SyntaxError);
|
||||
|
||||
// Declarations can't have parentheses (both patterns and identifiers)
|
||||
assertThrows("let [({x: 1})] = [];", SyntaxError);
|
||||
assertThrows("let [(x)] = [];", SyntaxError);
|
||||
assertThrows("let [({x: 1}) = y] = [];", SyntaxError);
|
||||
assertThrows("let [(x) = y] = [];", SyntaxError);
|
||||
assertThrows("var [({x: 1})] = [];", SyntaxError);
|
||||
assertThrows("var [(x)] = [];", SyntaxError);
|
||||
assertThrows("var [({x: 1}) = y] = [];", SyntaxError);
|
||||
assertThrows("var [(x) = y] = [];", SyntaxError);
|
||||
|
||||
// Patterns in can't have parentheses in assignments either
|
||||
assertThrows("[({x: 1}) = y] = [];", SyntaxError);
|
||||
|
||||
// Parentheses are fine around identifiers in assignments though, even inside a
|
||||
// pattern
|
||||
var x;
|
||||
[(x)] = [2];
|
||||
assertEquals(x, 2);
|
||||
[(x) = 3] = [];
|
||||
assertEquals(x, 3);
|
@ -0,0 +1,5 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
assertThrows("const [(x)] = []", SyntaxError);
|
@ -20,5 +20,4 @@ assertEquals(o51.length, 39);
|
||||
// Sort triggers the bug.
|
||||
o51.sort();
|
||||
|
||||
// TODO(chromium:897512): The length should be 39.
|
||||
assertEquals(o51.length, 101);
|
||||
assertEquals(o51.length, 39);
|
||||
|
@ -0,0 +1,7 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --disable-in-process-stack-traces --perf-prof-unwinding-info --turbo-loop-rotation
|
||||
for (var x = 0; x < 1000000; x++)
|
||||
;
|
@ -0,0 +1,6 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
a: if (true) b: { break a; break b; }
|
||||
else b: { break a; break b; }
|
@ -0,0 +1,12 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
{
|
||||
function a() {}
|
||||
}
|
||||
|
||||
{
|
||||
let a;
|
||||
function a() {};
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Tests if class declarations in parameter list are correctly handled.
|
||||
function v_2(
|
||||
v_3 = class v_4 {
|
||||
get [[] = ';']() { }
|
||||
}
|
||||
) { }
|
||||
v_2();
|
||||
|
||||
// Test object inside a class in a parameter list
|
||||
(function f(
|
||||
v_3 = class v_4 {
|
||||
get [{} = ';']() { }
|
||||
}
|
||||
) { })();
|
||||
|
||||
// Test destructuring of class in parameters
|
||||
(function f( {p, q} = class C { get [[] = ';']() {} } ) {})();
|
||||
|
||||
// Test array destructuring of class in parameters
|
||||
class C {};
|
||||
C[Symbol.iterator] = function() {
|
||||
return {
|
||||
next: function() { return { done: true }; },
|
||||
_first: true
|
||||
};
|
||||
};
|
||||
(function f1([p, q] = class D extends C { get [[]]() {} }) { })();
|
@ -0,0 +1,17 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --opt
|
||||
|
||||
var E = 'Σ';
|
||||
var PI = 123;
|
||||
function f() {
|
||||
print(E = 2, /b/.test(E) || /b/.test(E = 2));
|
||||
((E = 3) * PI);
|
||||
}
|
||||
|
||||
f();
|
||||
f();
|
||||
%OptimizeFunctionOnNextCall(f);
|
||||
f();
|
@ -0,0 +1,5 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
assertThrows("( let ) => { 'use strict'; let }", SyntaxError)
|
@ -0,0 +1,5 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
assertThrows("(d * f * g) * e => 0", SyntaxError)
|
@ -26,5 +26,5 @@ try {
|
||||
} catch(e) { print("Caught: " + e); }
|
||||
try {
|
||||
var obj = {prop: 7};
|
||||
assertThrows("nonexistant(obj)");
|
||||
assertThrows("nonexistent(obj)");
|
||||
} catch(e) { print("Caught: " + e); }
|
||||
|
@ -0,0 +1,20 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
let speciesCounter = 0;
|
||||
|
||||
Object.defineProperty(Promise, Symbol.species, {
|
||||
value: function(...args) {
|
||||
speciesCounter++;
|
||||
return new Promise(...args);
|
||||
}
|
||||
});
|
||||
|
||||
async function foo() { }
|
||||
|
||||
assertPromiseResult(Promise.all([foo()]), () => {
|
||||
assertEquals(3, speciesCounter);
|
||||
});
|
@ -0,0 +1,33 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
const constructors = [
|
||||
[Uint8Array, [0, 1]],
|
||||
[Int8Array, [0, 1]],
|
||||
[Uint16Array, [0, 1]],
|
||||
[Int16Array, [0, 1]],
|
||||
[Uint32Array, [0, 1]],
|
||||
[Int32Array, [0, 1]],
|
||||
[Float32Array, [0, 1]],
|
||||
[Float64Array, [0, 1]],
|
||||
[Uint8ClampedArray, [0, 1]],
|
||||
[BigInt64Array, [0n, 1n]],
|
||||
[BigUint64Array, [0n, 1n]]
|
||||
];
|
||||
|
||||
let typedArray;
|
||||
|
||||
const separator = {
|
||||
toString() {
|
||||
%ArrayBufferDetach(typedArray.buffer);
|
||||
return '*';
|
||||
}
|
||||
};
|
||||
|
||||
constructors.forEach(([constructor, arr]) => {
|
||||
typedArray = new constructor(arr);
|
||||
assertSame(typedArray.join(separator), '*');
|
||||
});
|
@ -0,0 +1,14 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --verify-heap --enable-slow-asserts
|
||||
|
||||
var Ctor = function() {
|
||||
return [];
|
||||
};
|
||||
var a = ["one", "two", "three"];
|
||||
a.constructor = {};
|
||||
a.constructor[Symbol.species] = Ctor;
|
||||
|
||||
a.filter(function() { return true; });
|
14
implementation-contributed/v8/mjsunit/regress/regress-loop-var-assign-without-block-scope.js
Normal file
14
implementation-contributed/v8/mjsunit/regress/regress-loop-var-assign-without-block-scope.js
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
function f() {
|
||||
// Loop with a body that's not wrapped in a block.
|
||||
for (i = 0; i < 2; i++)
|
||||
var x = i, // var x that's assigned on each iteration
|
||||
y = y||(()=>x), // single arrow function that returns x
|
||||
z = (%OptimizeFunctionOnNextCall(y), y()); // optimize y on first iteration
|
||||
return y()
|
||||
};
|
||||
assertEquals(1, f())
|
6
implementation-contributed/v8/mjsunit/regress/regress-sloppy-block-function-hoisting-dynamic.js
Normal file
6
implementation-contributed/v8/mjsunit/regress/regress-sloppy-block-function-hoisting-dynamic.js
Normal file
@ -0,0 +1,6 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
with({}) { eval("{function f(){f}}") };
|
||||
f()
|
@ -0,0 +1,27 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
(function() {
|
||||
const builder = new WasmModuleBuilder();
|
||||
builder.addType(makeSig([], []));
|
||||
builder.addType(makeSig([kWasmI32], [kWasmI32]));
|
||||
builder.addFunction(undefined, 0 /* sig */)
|
||||
.addBodyWithEnd([
|
||||
kExprEnd, // @1
|
||||
]);
|
||||
builder.addFunction(undefined, 1 /* sig */)
|
||||
.addLocals({i32_count: 65})
|
||||
.addBodyWithEnd([
|
||||
kExprLoop, kWasmStmt, // @3
|
||||
kSimdPrefix,
|
||||
kExprF32x4Min,
|
||||
kExprI64UConvertI32,
|
||||
kExprI64RemS,
|
||||
kExprUnreachable,
|
||||
kExprLoop, 0x02, // @10
|
||||
]);
|
||||
})
|
@ -0,0 +1,34 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
const sig = builder.addType(makeSig([kWasmI32, kWasmI64], []));
|
||||
builder.addFunction(undefined, sig)
|
||||
.addBody([
|
||||
kExprI32Const, 0,
|
||||
kExprIf, kWasmI32,
|
||||
kExprI32Const, 0,
|
||||
kExprElse,
|
||||
kExprI32Const, 1,
|
||||
kExprEnd,
|
||||
kExprTeeLocal, 0,
|
||||
kExprGetLocal, 0,
|
||||
kExprLoop, kWasmStmt,
|
||||
kExprI64Const, 0x80, 0x80, 0x80, 0x70,
|
||||
kExprSetLocal, 0x01,
|
||||
kExprI32Const, 0x00,
|
||||
kExprIf, kWasmI32,
|
||||
kExprI32Const, 0x00,
|
||||
kExprElse,
|
||||
kExprI32Const, 0x00,
|
||||
kExprEnd,
|
||||
kExprBrIf, 0x00,
|
||||
kExprUnreachable,
|
||||
kExprEnd,
|
||||
kExprUnreachable,
|
||||
]);
|
||||
builder.instantiate();
|
@ -0,0 +1,26 @@
|
||||
// Copyright 2018 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
const sig = builder.addType(makeSig([], [kWasmF64]));
|
||||
builder.addFunction(undefined, sig)
|
||||
.addLocals({f32_count: 5}).addLocals({f64_count: 3})
|
||||
.addBody([
|
||||
kExprBlock, kWasmF64,
|
||||
kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f,
|
||||
kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
kExprI32Const, 0,
|
||||
kExprIf, kWasmI32,
|
||||
kExprI32Const, 0,
|
||||
kExprElse,
|
||||
kExprI32Const, 1,
|
||||
kExprEnd,
|
||||
kExprBrIf, 0,
|
||||
kExprUnreachable,
|
||||
kExprEnd
|
||||
]);
|
||||
builder.instantiate();
|
@ -0,0 +1,55 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
const sig0 = builder.addType(makeSig([kWasmF32], [kWasmI32]));
|
||||
const sig1 = builder.addType(makeSig([kWasmI64, kWasmI32, kWasmI64, kWasmF32, kWasmI64], [kWasmF32]));
|
||||
const sig2 = builder.addType(makeSig([kWasmF32], [kWasmF32]));
|
||||
// Generate function 1 (out of 3).
|
||||
builder.addFunction(undefined, sig0).addBody([kExprI32Const, 0x00]);
|
||||
// Generate function 2 (out of 3).
|
||||
builder.addFunction(undefined, sig1)
|
||||
.addBody([
|
||||
// signature: f_lilfl
|
||||
kExprBlock, kWasmF32, // @1 f32
|
||||
kExprI32Const, 0x00,
|
||||
kExprIf, kWasmStmt, // @5
|
||||
kExprLoop, kWasmStmt, // @7
|
||||
kExprBlock, kWasmI32, // @9 i32
|
||||
kExprF32Const, 0x00, 0x00, 0x80, 0xc1,
|
||||
kExprF32Const, 0x00, 0x00, 0x80, 0x45,
|
||||
kExprCallFunction, 0x00, // function #0: i_f
|
||||
kExprBrIf, 0x03, // depth=3
|
||||
kExprDrop,
|
||||
kExprI32Const, 0xd8, 0x00,
|
||||
kExprEnd, // @29
|
||||
kExprBrIf, 0x00, // depth=0
|
||||
kExprEnd, // @32
|
||||
kExprF32Const, 0x00, 0x00, 0x80, 0x3f,
|
||||
kExprF32Const, 0x00, 0x00, 0x80, 0xc6,
|
||||
kExprBlock, kWasmI32, // @43 i32
|
||||
kExprF32Const, 0x00, 0x00, 0x80, 0x3f,
|
||||
kExprCallFunction, 0x02, // function #2: f_f
|
||||
kExprDrop,
|
||||
kExprI32Const, 0x68,
|
||||
kExprEnd, // @55
|
||||
kExprBrIf, 0x01, // depth=1
|
||||
kExprI32Const, 0x00,
|
||||
kExprSelect,
|
||||
kExprDrop,
|
||||
kExprUnreachable,
|
||||
kExprElse, // @63
|
||||
kExprNop,
|
||||
kExprEnd, // @65
|
||||
kExprF32Const, 0x00, 0x00, 0x69, 0x43,
|
||||
kExprEnd // @71
|
||||
]);
|
||||
// Generate function 3 (out of 3).
|
||||
builder.addFunction(undefined, sig2).addBody([
|
||||
kExprF32Const, 0x00, 0x00, 0x80, 0x3f
|
||||
]);
|
||||
builder.instantiate();
|
@ -0,0 +1,12 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
const sig =
|
||||
builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI64]));
|
||||
builder.addFunction('main', sig).addBody([kExprI64Const, 1, kExprI64SExtendI8]);
|
||||
builder.instantiate();
|
@ -0,0 +1,21 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
builder.addFunction(undefined, kSig_i_i)
|
||||
.addLocals({i32_count: 7})
|
||||
.addBody([
|
||||
kExprI32Const, 0,
|
||||
kExprIf, kWasmI32, // @11 i32
|
||||
kExprI32Const, 0,
|
||||
kExprElse, // @15
|
||||
kExprI32Const, 1,
|
||||
kExprEnd, // @18
|
||||
kExprTeeLocal, 0,
|
||||
kExprI32Popcnt
|
||||
]);
|
||||
builder.instantiate();
|
@ -0,0 +1,22 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
builder.addFunction(undefined, kSig_v_v)
|
||||
.addLocals({i32_count: 1}).addLocals({f32_count: 1}).addLocals({f64_count: 1})
|
||||
.addBody([
|
||||
kExprGetLocal, 1,
|
||||
kExprGetLocal, 2,
|
||||
kExprGetLocal, 0,
|
||||
kExprIf, kWasmI32,
|
||||
kExprI32Const, 1,
|
||||
kExprElse,
|
||||
kExprUnreachable,
|
||||
kExprEnd,
|
||||
kExprUnreachable
|
||||
]);
|
||||
builder.instantiate();
|
@ -0,0 +1,37 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
builder.addFunction(undefined, kSig_i_i)
|
||||
.addLocals({i32_count: 5})
|
||||
.addBody([
|
||||
kExprGetLocal, 0, // --> 1
|
||||
kExprIf, kWasmI32,
|
||||
kExprGetLocal, 0, // --> 1
|
||||
kExprElse,
|
||||
kExprUnreachable,
|
||||
kExprEnd,
|
||||
kExprIf, kWasmI32,
|
||||
kExprGetLocal, 0, // --> 1
|
||||
kExprElse,
|
||||
kExprUnreachable,
|
||||
kExprEnd,
|
||||
kExprIf, kWasmI32,
|
||||
kExprI32Const, 0,
|
||||
kExprGetLocal, 0,
|
||||
kExprI32Sub, // --> -1
|
||||
kExprGetLocal, 0,
|
||||
kExprGetLocal, 0,
|
||||
kExprI32Sub, // --> 0
|
||||
kExprI32Sub, // --> -1
|
||||
kExprElse,
|
||||
kExprUnreachable,
|
||||
kExprEnd
|
||||
]);
|
||||
builder.addExport('main', 0);
|
||||
const instance = builder.instantiate();
|
||||
assertEquals(-1, instance.exports.main(1));
|
@ -0,0 +1,25 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
const builder = new WasmModuleBuilder();
|
||||
builder.addFunction(undefined, kSig_v_v).addBody([]);
|
||||
builder.addFunction(undefined, kSig_i_i)
|
||||
.addBody([
|
||||
kExprGetLocal, 0,
|
||||
kExprGetLocal, 0,
|
||||
// Stack now contains two copies of the first param register.
|
||||
// Start a loop to create a merge point (values still in registers).
|
||||
kExprLoop, kWasmStmt,
|
||||
// The call spills all values.
|
||||
kExprCallFunction, 0,
|
||||
// Break to the loop. Now the spilled values need to be loaded back *into
|
||||
// the same register*.
|
||||
kExprBr, 0,
|
||||
kExprEnd,
|
||||
kExprDrop
|
||||
]);
|
||||
builder.instantiate();
|
@ -0,0 +1,21 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --experimental-wasm-eh
|
||||
|
||||
load("test/mjsunit/wasm/wasm-constants.js");
|
||||
load("test/mjsunit/wasm/wasm-module-builder.js");
|
||||
|
||||
(function TestTruncatedBrOnExnInLoop() {
|
||||
let builder = new WasmModuleBuilder();
|
||||
let fun = builder.addFunction(undefined, kSig_v_v)
|
||||
.addLocals({except_count: 1})
|
||||
.addBody([
|
||||
kExprLoop, kWasmStmt,
|
||||
kExprGetLocal, 0,
|
||||
kExprBrOnExn // Bytecode truncated here.
|
||||
]).exportFunc();
|
||||
fun.body.pop(); // Pop implicitly added kExprEnd from body.
|
||||
assertThrows(() => builder.instantiate(), WebAssembly.CompileError);
|
||||
})();
|
@ -81,9 +81,6 @@ class TestSuite(testsuite.TestSuite):
|
||||
def _test_class(self):
|
||||
return TestCase
|
||||
|
||||
def _suppressed_test_class(self):
|
||||
return SuppressedTestCase
|
||||
|
||||
|
||||
class TestCase(testcase.D8TestCase):
|
||||
def __init__(self, *args, **kwargs):
|
||||
@ -282,27 +279,5 @@ class CombinedTest(testcase.D8TestCase):
|
||||
test._get_statusfile_flags() for test in self._tests)
|
||||
|
||||
|
||||
class SuppressedTestCase(TestCase):
|
||||
"""The same as a standard mjsunit test case with all asserts as no-ops."""
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(SuppressedTestCase, self).__init__(*args, **kwargs)
|
||||
self._mjsunit_files.append(
|
||||
os.path.join(self.suite.root, "mjsunit_suppressions.js"))
|
||||
|
||||
def _prepare_outcomes(self, *args, **kwargs):
|
||||
super(SuppressedTestCase, self)._prepare_outcomes(*args, **kwargs)
|
||||
# Skip tests expected to fail. We suppress all asserts anyways, but some
|
||||
# tests are expected to fail with type errors or even dchecks, and we
|
||||
# can't differentiate that.
|
||||
if statusfile.FAIL in self._statusfile_outcomes:
|
||||
self._statusfile_outcomes = [statusfile.SKIP]
|
||||
|
||||
def _get_extra_flags(self, *args, **kwargs):
|
||||
return (
|
||||
super(SuppressedTestCase, self)._get_extra_flags(*args, **kwargs) +
|
||||
['--disable-abortjs']
|
||||
)
|
||||
|
||||
|
||||
def GetSuite(*args, **kwargs):
|
||||
return TestSuite(*args, **kwargs)
|
||||
|
@ -142,38 +142,6 @@
|
||||
'language/eval-code/direct/var-env-lower-lex-catch-non-strict': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=4951
|
||||
'language/expressions/assignment/dstr-array-elem-iter-rtrn-close-err': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-iter-thrw-close': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-iter-thrw-close-err': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-list-thrw-close': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-list-thrw-close-err': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-rtrn-close': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-rtrn-close-err': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-rtrn-close-null': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-thrw-close': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-thrw-close-err': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-rest-iter-rtrn-close': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-rest-iter-rtrn-close-err': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-rest-iter-rtrn-close-null': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-rest-iter-thrw-close': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-rest-iter-thrw-close-err': [FAIL],
|
||||
'language/expressions/assignment/dstr-array-rest-lref-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-iter-rtrn-close-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-iter-thrw-close': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-iter-thrw-close-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-trlg-iter-list-thrw-close': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-trlg-iter-list-thrw-close-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-rtrn-close': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-rtrn-close-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-rtrn-close-null': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-thrw-close': [FAIL],
|
||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-thrw-close-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-rest-iter-rtrn-close': [FAIL],
|
||||
'language/statements/for-of/dstr-array-rest-iter-rtrn-close-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-rest-iter-rtrn-close-null': [FAIL],
|
||||
'language/statements/for-of/dstr-array-rest-iter-thrw-close': [FAIL],
|
||||
'language/statements/for-of/dstr-array-rest-iter-thrw-close-err': [FAIL],
|
||||
'language/statements/for-of/dstr-array-rest-lref-err': [FAIL],
|
||||
'language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order': [FAIL],
|
||||
'language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order': [FAIL],
|
||||
|
||||
@ -420,19 +388,6 @@
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5116
|
||||
'built-ins/TypedArray/prototype/fill/fill-values-conversion-operations-consistent-nan': [PASS, FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5135
|
||||
'annexB/language/eval-code/direct/func-block-decl-eval-func-block-scoping': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-block-scoping': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-block-scoping': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-block-scoping': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-block-scoping': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-block-scoping': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-switch-case-eval-func-block-scoping': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-switch-dflt-eval-func-block-scoping': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5139
|
||||
'annexB/built-ins/Date/prototype/setYear/year-number-relative': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=4698
|
||||
'language/expressions/call/tco-call-args': [SKIP],
|
||||
'language/expressions/call/tco-cross-realm-class-construct': [SKIP],
|
||||
@ -479,16 +434,6 @@
|
||||
'built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds': [FAIL],
|
||||
'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5112
|
||||
'annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-try': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-try': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-try': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-try': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-try': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-try': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-try': [FAIL],
|
||||
'annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-try': [FAIL],
|
||||
|
||||
# SharedArrayBuffer tests that require flags
|
||||
'built-ins/SharedArrayBuffer/*': ['--harmony-sharedarraybuffer'],
|
||||
'built-ins/Atomics/*': ['--harmony-sharedarraybuffer'],
|
||||
@ -561,13 +506,15 @@
|
||||
'language/expressions/call/eval-spread-empty-leading': [FAIL],
|
||||
'language/expressions/call/eval-spread-empty-trailing': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8398
|
||||
'intl402/supportedLocalesOf-returned-array-elements-are-frozen': [FAIL],
|
||||
'intl402/ListFormat/constructor/supportedLocalesOf/result-type': [FAIL],
|
||||
'intl402/RelativeTimeFormat/constructor/supportedLocalesOf/result-type': [FAIL],
|
||||
'intl402/Segmenter/constructor/supportedLocalesOf/result-type': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7472
|
||||
'intl402/NumberFormat/currency-digits': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7474
|
||||
'intl402/NumberFormat/prototype/format/format-fraction-digits': [FAIL],
|
||||
'intl402/NumberFormat/prototype/format/format-significant-digits': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7482
|
||||
'intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode': [FAIL],
|
||||
|
||||
@ -577,9 +524,6 @@
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7669
|
||||
'intl402/Intl/getCanonicalLocales/canonicalized-tags': [FAIL],
|
||||
|
||||
# https://github.com/tc39/ecma402/issues/223
|
||||
'intl402/Collator/missing-unicode-ext-value-defaults-to-true': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8260
|
||||
'intl402/Locale/constructor-non-iana-canon': [FAIL],
|
||||
|
||||
@ -592,17 +536,6 @@
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8246
|
||||
'intl402/Locale/constructor-tag': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8244
|
||||
'intl402/Locale/constructor-getter-order': [FAIL],
|
||||
'intl402/Locale/constructor-locale-object': [FAIL],
|
||||
'intl402/Locale/constructor-options-language-grandfathered': [FAIL],
|
||||
'intl402/Locale/constructor-options-language-invalid': [FAIL],
|
||||
'intl402/Locale/constructor-options-region-invalid': [FAIL],
|
||||
'intl402/Locale/constructor-options-region-valid': [FAIL],
|
||||
'intl402/Locale/constructor-options-script-invalid': [FAIL],
|
||||
'intl402/Locale/constructor-options-script-valid': [FAIL],
|
||||
'intl402/Locale/getters': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8243
|
||||
'intl402/Locale/extensions-private': [FAIL],
|
||||
'intl402/Locale/getters-privateuse': [FAIL],
|
||||
@ -615,6 +548,9 @@
|
||||
'intl402/Locale/getters-grandfathered': [FAIL],
|
||||
'intl402/Locale/likely-subtags-grandfathered': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8613
|
||||
'intl402/RelativeTimeFormat/prototype/resolvedOptions/order': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=6705
|
||||
'built-ins/Object/assign/strings-and-symbol-order': [FAIL],
|
||||
|
||||
@ -624,9 +560,6 @@
|
||||
'language/expressions/async-generator/generator-created-after-decl-inst': [FAIL],
|
||||
'language/statements/async-generator/generator-created-after-decl-inst': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8099
|
||||
'intl402/NumberFormat/prototype/format/format-negative-numbers': [FAIL],
|
||||
|
||||
# await tests that require flags
|
||||
'language/expressions/await/async-generator-interleaved': ['--harmony-await-optimization'],
|
||||
'language/expressions/await/await-monkey-patched-promise': ['--harmony-await-optimization'],
|
||||
@ -646,7 +579,6 @@
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8258
|
||||
'intl402/Locale/constructor-options-language-valid-undefined': [FAIL],
|
||||
'intl402/Locale/constructor-options-throwing-getters': [FAIL],
|
||||
'intl402/NumberFormat/prototype/format/format-fraction-digits-precision': [FAIL],
|
||||
'intl402/NumberFormat/prototype/format/format-significant-digits-precision': [FAIL],
|
||||
|
||||
|
@ -9,8 +9,11 @@
|
||||
'table/grow': [FAIL],
|
||||
'table/get-set': [FAIL],
|
||||
'module/customSections': [FAIL],
|
||||
'global/constructor': [FAIL],
|
||||
'global/value-get-set': [FAIL],
|
||||
}], # ALWAYS
|
||||
|
||||
[ALWAYS, {
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8633
|
||||
'limits': [SKIP],
|
||||
}], # ALWAYS
|
||||
|
||||
['arch == s390 or arch == s390x or system == aix', {
|
||||
@ -18,4 +21,10 @@
|
||||
'instance/constructor': [SKIP],
|
||||
}], # 'arch == s390 or arch == s390x or system == aix'
|
||||
|
||||
##############################################################################
|
||||
['lite_mode', {
|
||||
# TODO(v8:7777): Re-enable once wasm is supported in jitless mode.
|
||||
'*': [SKIP],
|
||||
}], # lite_mode
|
||||
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user