mirror of https://github.com/tc39/test262.git
Merge pull request #1999 from test262-automation/v8-test262-automation-export-ae464533ad
Import test changes from V8
This commit is contained in:
commit
e87b5d6dab
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"sourceRevisionAtLastExport": "44b1b245",
|
||||
"targetRevisionAtLastExport": "ae464533ad",
|
||||
"sourceRevisionAtLastExport": "dde25872",
|
||||
"targetRevisionAtLastExport": "468a67ade5",
|
||||
"curatedFiles": {}
|
||||
}
|
|
@ -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.
|
||||
|
||||
let invalid_co = [
|
||||
"invalid",
|
||||
"search",
|
||||
"standard",
|
||||
"abce",
|
||||
];
|
||||
|
||||
let valid_locales = [
|
||||
"zh-u-co-zhuyin",
|
||||
"zh-u-co-stroke",
|
||||
"ar-u-co-compat",
|
||||
"en-u-co-emoji",
|
||||
"en-u-co-eor",
|
||||
"zh-Hant-u-co-pinyin",
|
||||
"ko-u-co-searchjl",
|
||||
"ja-u-co-unihan",
|
||||
];
|
||||
|
||||
invalid_co.forEach(function(co) {
|
||||
let col = new Intl.Collator(["en-u-co-" + co]);
|
||||
assertEquals("en", col.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_locales.forEach(function(l) {
|
||||
let col = new Intl.Collator([l + "-fo-obar"]);
|
||||
assertEquals(l, col.resolvedOptions().locale);
|
||||
}
|
||||
);
|
|
@ -0,0 +1,36 @@
|
|||
// 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.
|
||||
|
||||
let invalid_kf = [
|
||||
"invalid",
|
||||
"abce",
|
||||
"none",
|
||||
"true",
|
||||
];
|
||||
|
||||
let valid_kf= [
|
||||
"false",
|
||||
"upper",
|
||||
"lower",
|
||||
];
|
||||
|
||||
let locales = [
|
||||
"en",
|
||||
"fr",
|
||||
];
|
||||
|
||||
invalid_kf.forEach(function(kf) {
|
||||
let col = new Intl.Collator(["en-u-kf-" + kf + "-fo-obar"]);
|
||||
assertEquals("en", col.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_kf.forEach(function(kf) {
|
||||
locales.forEach(function(base) {
|
||||
let l = base + "-u-kf-" + kf;
|
||||
let col = new Intl.Collator([l + "-fo-obar"]);
|
||||
assertEquals(l, col.resolvedOptions().locale);
|
||||
});
|
||||
}
|
||||
);
|
|
@ -0,0 +1,29 @@
|
|||
// 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.
|
||||
|
||||
let invalid_kn = [
|
||||
"invalid",
|
||||
"search",
|
||||
"standard",
|
||||
"abce",
|
||||
];
|
||||
|
||||
let valid_kn = [
|
||||
["en-u-kn", true, "en-u-kn"],
|
||||
["en-u-kn-true", true, "en-u-kn"],
|
||||
["en-u-kn-false",false, "en-u-kn-false"],
|
||||
];
|
||||
|
||||
invalid_kn.forEach(function(kn) {
|
||||
let col = new Intl.Collator(["en-u-kn-" + kn]);
|
||||
assertEquals("en", col.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_kn.forEach(function(l) {
|
||||
let col = new Intl.Collator([l[0] + "-fo-obar"]);
|
||||
assertEquals(l[1], col.resolvedOptions().numeric);
|
||||
assertEquals(l[2], col.resolvedOptions().locale);
|
||||
}
|
||||
);
|
|
@ -0,0 +1,51 @@
|
|||
// 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.
|
||||
|
||||
|
||||
let invalid_ca = [
|
||||
"invalid",
|
||||
"abce",
|
||||
];
|
||||
|
||||
// https://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml
|
||||
let valid_ca= [
|
||||
"buddhist",
|
||||
"chinese",
|
||||
"coptic",
|
||||
"dangi",
|
||||
"ethioaa",
|
||||
"ethiopic",
|
||||
"gregory",
|
||||
"hebrew",
|
||||
"indian",
|
||||
"islamic",
|
||||
"islamic-umalqura",
|
||||
"islamic-tbla",
|
||||
"islamic-civil",
|
||||
"islamic-rgsa",
|
||||
"iso8601",
|
||||
"japanese",
|
||||
"persian",
|
||||
"roc",
|
||||
];
|
||||
|
||||
let locales = [
|
||||
"en",
|
||||
"ar",
|
||||
];
|
||||
|
||||
invalid_ca.forEach(function(ca) {
|
||||
let df = new Intl.DateTimeFormat(["en-u-ca-" + ca + "-fo-obar"]);
|
||||
assertEquals("en", df.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_ca.forEach(function(ca) {
|
||||
locales.forEach(function(base) {
|
||||
let l = base + "-u-ca-" + ca;
|
||||
let df = new Intl.DateTimeFormat([l + "-fo-obar"]);
|
||||
assertEquals(l, df.resolvedOptions().locale);
|
||||
});
|
||||
}
|
||||
);
|
|
@ -0,0 +1,41 @@
|
|||
// 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.
|
||||
|
||||
|
||||
let invalid_hc = [
|
||||
"invalid",
|
||||
"abce",
|
||||
"h10",
|
||||
"h13",
|
||||
"h22",
|
||||
"h25",
|
||||
];
|
||||
|
||||
// https://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml
|
||||
let valid_hc= [
|
||||
"h11",
|
||||
"h12",
|
||||
"h23",
|
||||
"h24",
|
||||
];
|
||||
|
||||
let locales = [
|
||||
"en",
|
||||
"ar",
|
||||
];
|
||||
|
||||
invalid_hc.forEach(function(hc) {
|
||||
let df = new Intl.DateTimeFormat(["en-u-hc-" + hc + "-fo-obar"]);
|
||||
assertEquals("en", df.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_hc.forEach(function(hc) {
|
||||
locales.forEach(function(base) {
|
||||
let l = base + "-u-hc-" + hc;
|
||||
let df = new Intl.DateTimeFormat([l + "-fo-obar"]);
|
||||
assertEquals(l, df.resolvedOptions().locale);
|
||||
});
|
||||
}
|
||||
);
|
|
@ -0,0 +1,59 @@
|
|||
// 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.
|
||||
|
||||
|
||||
let invalid_nu = [
|
||||
"invalid",
|
||||
"abce",
|
||||
"finance",
|
||||
"native",
|
||||
"traditio",
|
||||
];
|
||||
|
||||
// https://tc39.github.io/ecma402/#table-numbering-system-digits
|
||||
let valid_nu= [
|
||||
"arab",
|
||||
"arabext",
|
||||
"bali",
|
||||
"beng",
|
||||
"deva",
|
||||
"fullwide",
|
||||
"gujr",
|
||||
"guru",
|
||||
"hanidec",
|
||||
"khmr",
|
||||
"knda",
|
||||
"laoo",
|
||||
"latn",
|
||||
"limb",
|
||||
"mlym",
|
||||
"mong",
|
||||
"mymr",
|
||||
"orya",
|
||||
"tamldec",
|
||||
"telu",
|
||||
"thai",
|
||||
"tibt",
|
||||
];
|
||||
|
||||
let locales = [
|
||||
"en",
|
||||
"ar",
|
||||
];
|
||||
|
||||
|
||||
invalid_nu.forEach(function(nu) {
|
||||
let df = new Intl.DateTimeFormat(["en-u-nu-" + nu + "-fo-obar"]);
|
||||
assertEquals("en", df.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_nu.forEach(function(nu) {
|
||||
locales.forEach(function(base) {
|
||||
let l = base + "-u-nu-" + nu;
|
||||
let df = new Intl.DateTimeFormat([l + "-fo-obar"]);
|
||||
assertEquals(l, df.resolvedOptions().locale);
|
||||
});
|
||||
}
|
||||
);
|
|
@ -29,9 +29,6 @@
|
|||
[ALWAYS, {
|
||||
# TODO(jochen): The following test is flaky.
|
||||
'overrides/caching': [PASS, FAIL],
|
||||
|
||||
# https://crbug.com/v8/8469
|
||||
'regress-8469': [FAIL],
|
||||
}], # ALWAYS
|
||||
|
||||
['variant == no_wasm_traps', {
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
// 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.
|
||||
|
||||
|
||||
let invalid_nu = [
|
||||
"invalid",
|
||||
"abce",
|
||||
"finance",
|
||||
"native",
|
||||
"traditio",
|
||||
];
|
||||
|
||||
// https://tc39.github.io/ecma402/#table-numbering-system-digits
|
||||
let valid_nu= [
|
||||
"arab",
|
||||
"arabext",
|
||||
"bali",
|
||||
"beng",
|
||||
"deva",
|
||||
"fullwide",
|
||||
"gujr",
|
||||
"guru",
|
||||
"hanidec",
|
||||
"khmr",
|
||||
"knda",
|
||||
"laoo",
|
||||
"latn",
|
||||
"limb",
|
||||
"mlym",
|
||||
"mong",
|
||||
"mymr",
|
||||
"orya",
|
||||
"tamldec",
|
||||
"telu",
|
||||
"thai",
|
||||
"tibt",
|
||||
];
|
||||
|
||||
let locales = [
|
||||
"en",
|
||||
"ar",
|
||||
];
|
||||
|
||||
|
||||
invalid_nu.forEach(function(nu) {
|
||||
let nf = new Intl.NumberFormat(["en-u-nu-" + nu + "-fo-obar"]);
|
||||
assertEquals("en", nf.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_nu.forEach(function(nu) {
|
||||
locales.forEach(function(base) {
|
||||
let l = base + "-u-nu-" + nu;
|
||||
let nf = new Intl.NumberFormat([l + "-fo-obar"]);
|
||||
assertEquals(l, nf.resolvedOptions().locale);
|
||||
});
|
||||
}
|
||||
);
|
|
@ -0,0 +1,39 @@
|
|||
// 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.
|
||||
assertEquals(
|
||||
"en-u-hc-h11-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h11-nu-arab"]).resolvedOptions().locale
|
||||
);
|
||||
assertEquals(
|
||||
"en-u-hc-h12-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h12-nu-arab"]).resolvedOptions().locale
|
||||
);
|
||||
assertEquals(
|
||||
"en-u-hc-h23-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h23-nu-arab"]).resolvedOptions().locale
|
||||
);
|
||||
assertEquals(
|
||||
"en-u-hc-h24-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h24-nu-arab"]).resolvedOptions().locale
|
||||
);
|
||||
|
||||
// https://tc39.github.io/ecma402/#sec-intl.datetimeformat-internal-slots
|
||||
// invalid hc should be removed
|
||||
// [[LocaleData]][locale].hc must be « null, "h11", "h12", "h23", "h24" » for all locale values.
|
||||
assertEquals(
|
||||
"en-u-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h10-nu-arab"]).resolvedOptions().locale
|
||||
);
|
||||
assertEquals(
|
||||
"en-u-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h13-nu-arab"]).resolvedOptions().locale
|
||||
);
|
||||
assertEquals(
|
||||
"en-u-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h22-nu-arab"]).resolvedOptions().locale
|
||||
);
|
||||
assertEquals(
|
||||
"en-u-nu-arab",
|
||||
new Intl.DateTimeFormat(["en-u-hc-h25-nu-arab"]).resolvedOptions().locale
|
||||
);
|
|
@ -0,0 +1,41 @@
|
|||
// 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-segmenter
|
||||
|
||||
let invalid_lb = [
|
||||
"invalid",
|
||||
"abce",
|
||||
"breakall",
|
||||
"keepall",
|
||||
"none",
|
||||
"standard",
|
||||
];
|
||||
|
||||
let valid_lb= [
|
||||
"strict",
|
||||
"normal",
|
||||
"loose",
|
||||
];
|
||||
|
||||
let locales = [
|
||||
"en",
|
||||
"ja",
|
||||
"zh",
|
||||
];
|
||||
|
||||
invalid_lb.forEach(function(lb) {
|
||||
let df = new Intl.Segmenter(["en-u-lb-" + lb + "-fo-obar"]);
|
||||
assertEquals("en", df.resolvedOptions().locale);
|
||||
}
|
||||
);
|
||||
|
||||
valid_lb.forEach(function(lb) {
|
||||
locales.forEach(function(base) {
|
||||
let l = base + "-u-lb-" + lb;
|
||||
let df = new Intl.Segmenter([l + "-fo-obar"]);
|
||||
assertEquals(l, df.resolvedOptions().locale);
|
||||
});
|
||||
}
|
||||
);
|
|
@ -356,7 +356,7 @@ var kTests = {
|
|||
|
||||
Detached_Int8Array() {
|
||||
var array = new Int8Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -391,7 +391,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint8Array() {
|
||||
var array = new Uint8Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -421,7 +421,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint8ClampedArray() {
|
||||
var array = new Uint8ClampedArray(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -453,7 +453,7 @@ var kTests = {
|
|||
|
||||
Detached_Int16Array() {
|
||||
var array = new Int16Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -485,7 +485,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint16Array() {
|
||||
var array = new Uint16Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -517,7 +517,7 @@ var kTests = {
|
|||
|
||||
Detached_Int32Array() {
|
||||
var array = new Int32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -550,7 +550,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint32Array() {
|
||||
var array = new Uint32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -583,7 +583,7 @@ var kTests = {
|
|||
|
||||
Detached_Float32Array() {
|
||||
var array = new Float32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
@ -616,7 +616,7 @@ var kTests = {
|
|||
|
||||
Detached_Float64Array() {
|
||||
var array = new Float32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0), -1);
|
||||
assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1);
|
||||
},
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
// 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
|
||||
|
||||
(function TestNewlineInCPPComment() {
|
||||
function Module() {
|
||||
"use asm" // Crash by comment!
|
||||
function f() {}
|
||||
return f
|
||||
}
|
||||
Module();
|
||||
assertTrue(%IsAsmWasmCode(Module));
|
||||
})();
|
||||
|
||||
(function TestNewlineInCComment() {
|
||||
function Module() {
|
||||
"use asm" /* Crash by
|
||||
comment! */ function f() {}
|
||||
return f
|
||||
}
|
||||
Module();
|
||||
assertTrue(%IsAsmWasmCode(Module));
|
||||
})();
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --no-always-opt
|
||||
// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode
|
||||
// Files: test/mjsunit/code-coverage-utils.js
|
||||
|
||||
// Test code coverage without explicitly activating it upfront.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --no-always-opt
|
||||
// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode
|
||||
// Flags: --no-opt
|
||||
// Files: test/mjsunit/code-coverage-utils.js
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --no-always-opt --opt
|
||||
// Flags: --no-stress-flush-bytecode
|
||||
// Files: test/mjsunit/code-coverage-utils.js
|
||||
|
||||
if (isNeverOptimizeLiteMode()) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --no-always-opt
|
||||
// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode
|
||||
// Files: test/mjsunit/code-coverage-utils.js
|
||||
|
||||
%DebugToggleBlockCoverage(true);
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --no-always-opt --harmony-public-fields --harmony-static-fields
|
||||
// Flags: --allow-natives-syntax --no-always-opt --harmony-public-fields
|
||||
// Flags: --harmony-static-fields --no-stress-flush-bytecode
|
||||
// Files: test/mjsunit/code-coverage-utils.js
|
||||
|
||||
%DebugToggleBlockCoverage(true);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --no-always-opt
|
||||
// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode
|
||||
// Flags: --no-stress-incremental-marking
|
||||
// Files: test/mjsunit/code-coverage-utils.js
|
||||
|
||||
|
|
|
@ -173,14 +173,14 @@ assertUnoptimized(readFloat64);
|
|||
assertUnoptimized(readUint8);
|
||||
})();
|
||||
|
||||
// TurboFan neutered buffer deopts.
|
||||
// TurboFan detached buffer deopts.
|
||||
(function() {
|
||||
function readInt8Handled(offset) {
|
||||
try { return dataview.getInt8(offset); } catch (e) { return e; }
|
||||
}
|
||||
warmup(readInt8Handled);
|
||||
assertOptimized(readInt8Handled);
|
||||
%ArrayBufferNeuter(buffer);
|
||||
%ArrayBufferDetach(buffer);
|
||||
assertInstanceof(readInt8Handled(0), TypeError);
|
||||
assertUnoptimized(readInt8Handled);
|
||||
})();
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
// 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 --noalways-opt
|
||||
// Flags: --allow-natives-syntax --opt --noalways-opt --no-stress-flush-bytecode
|
||||
|
||||
// Invalidate the neutering protector.
|
||||
%ArrayBufferNeuter(new ArrayBuffer(1));
|
||||
// Invalidate the detaching protector.
|
||||
%ArrayBufferDetach(new ArrayBuffer(1));
|
||||
|
||||
// Check DataView.prototype.getInt8() optimization.
|
||||
(function() {
|
||||
|
@ -21,7 +21,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -43,7 +43,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -65,7 +65,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -87,7 +87,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -109,7 +109,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -131,7 +131,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -153,7 +153,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -175,7 +175,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0, foo(dv));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -199,7 +199,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -223,7 +223,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -247,7 +247,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -271,7 +271,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -295,7 +295,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -319,7 +319,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -343,7 +343,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
@ -367,7 +367,7 @@
|
|||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(undefined, foo(dv, 3));
|
||||
assertOptimized(foo);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
assertThrows(() => foo(dv, 4), TypeError);
|
||||
assertUnoptimized(foo);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
// 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
|
||||
|
||||
function* E(b) {
|
||||
while (true) {
|
||||
for (yield* 0; b; yield* 0) {}
|
||||
}
|
||||
}
|
||||
|
||||
%OptimizeFunctionOnNextCall(E);
|
||||
E();
|
|
@ -11,13 +11,13 @@ function Baseline() {
|
|||
assertEquals(0, it.next().value);
|
||||
assertEquals(1, it.next().value);
|
||||
assertEquals(2, it.next().value);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
it.next();
|
||||
};
|
||||
%NeverOptimizeFunction(Baseline);
|
||||
|
||||
assertThrows(Baseline, TypeError,
|
||||
"Cannot perform Array Iterator.prototype.next on a detached ArrayBuffer");
|
||||
"Cannot perform Array Iterator.prototype.next on a neutered ArrayBuffer");
|
||||
|
||||
function Turbo(count = 10000) {
|
||||
let array = Array(10000);
|
||||
|
@ -32,7 +32,7 @@ function Turbo(count = 10000) {
|
|||
for (let i = 0; i < count; ++i) {
|
||||
let result = it.next();
|
||||
if (result.value === 255) {
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
}
|
||||
sum += result.value;
|
||||
}
|
||||
|
@ -44,4 +44,4 @@ Turbo(10);
|
|||
%OptimizeFunctionOnNextCall(Turbo);
|
||||
|
||||
assertThrows(Turbo, TypeError,
|
||||
"Cannot perform Array Iterator.prototype.next on a detached ArrayBuffer");
|
||||
"Cannot perform Array Iterator.prototype.next on a neutered ArrayBuffer");
|
||||
|
|
|
@ -217,7 +217,7 @@ let tests = {
|
|||
|
||||
// Throw when detached
|
||||
let clone = new array.constructor(array);
|
||||
%ArrayBufferNeuter(clone.buffer);
|
||||
%ArrayBufferDetach(clone.buffer);
|
||||
assertThrows(() => sum(clone), TypeError);
|
||||
|
||||
// Clear the slate for the next iteration.
|
||||
|
|
|
@ -23,10 +23,41 @@
|
|||
assertEquals('D2', D2.name);
|
||||
|
||||
var E = class {}
|
||||
assertEquals('E', E.name); // Should be 'E'.
|
||||
assertEquals('E', E.name);
|
||||
|
||||
var F = class { constructor() {} };
|
||||
assertEquals('F', F.name); // Should be 'F'.
|
||||
assertEquals('F', F.name);
|
||||
|
||||
var literal = { E: class {} };
|
||||
assertEquals('E', literal.E.name);
|
||||
|
||||
literal = { E: class F {} };
|
||||
assertEquals('F', literal.E.name);
|
||||
|
||||
literal = { __proto__: class {} };
|
||||
assertEquals('', literal.__proto__.name);
|
||||
assertEquals(
|
||||
undefined, Object.getOwnPropertyDescriptor(literal.__proto__, 'name'));
|
||||
|
||||
literal = { __proto__: class F {} };
|
||||
assertEquals('F', literal.__proto__.name);
|
||||
assertNotEquals(
|
||||
undefined, Object.getOwnPropertyDescriptor(literal.__proto__, 'name'));
|
||||
|
||||
class G {};
|
||||
literal = { __proto__: G };
|
||||
assertEquals('G', literal.__proto__.name);
|
||||
|
||||
var H = class { static name() { return 'A'; } };
|
||||
literal = { __proto__ : H };
|
||||
assertEquals('A', literal.__proto__.name());
|
||||
|
||||
literal = {
|
||||
__proto__: class {
|
||||
static name() { return 'A'; }
|
||||
}
|
||||
};
|
||||
assertEquals('A', literal.__proto__.name());
|
||||
})();
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ var buf = new ArrayBuffer(0x10000);
|
|||
var arr = new Uint8Array(buf).fill(55);
|
||||
var tmp = {};
|
||||
tmp[Symbol.toPrimitive] = function () {
|
||||
%ArrayBufferNeuter(arr.buffer);
|
||||
%ArrayBufferDetach(arr.buffer);
|
||||
return 50;
|
||||
}
|
||||
arr.copyWithin(tmp);
|
||||
|
|
|
@ -194,7 +194,7 @@ tests.push(function TestFromTypedArraySpecies(constr) {
|
|||
assertEquals(1, constructor_read);
|
||||
});
|
||||
|
||||
tests.push(function TestFromTypedArraySpeciesNeutersBuffer(constr) {
|
||||
tests.push(function TestFromTypedArraySpeciesDetachsBuffer(constr) {
|
||||
var b = new ArrayBuffer(16);
|
||||
var a1 = new constr(b);
|
||||
|
||||
|
@ -203,7 +203,7 @@ tests.push(function TestFromTypedArraySpeciesNeutersBuffer(constr) {
|
|||
|
||||
Object.defineProperty(b, 'constructor', {
|
||||
get: function() {
|
||||
%ArrayBufferNeuter(b);
|
||||
%ArrayBufferDetach(b);
|
||||
return cons;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -232,13 +232,13 @@ CheckEachTypedArray(function parametersNotCalledIfDetached(constructor) {
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
|
||||
assertThrows(() => array.copyWithin(tmp, tmp, tmp), TypeError);
|
||||
assertEquals(0, array.length, "array.[[ViewedArrayBuffer]] is detached");
|
||||
|
|
|
@ -15,7 +15,7 @@ var typedArrayConstructors = [
|
|||
Float32Array,
|
||||
Float64Array];
|
||||
|
||||
function CheckTypedArrayIsNeutered(array) {
|
||||
function CheckTypedArrayIsDetached(array) {
|
||||
assertEquals(0, array.byteLength);
|
||||
assertEquals(0, array.byteOffset);
|
||||
assertEquals(0, array.length);
|
||||
|
@ -81,21 +81,21 @@ function TestTypedArrayForEach(constructor) {
|
|||
CheckWrapping(3.14, Number);
|
||||
CheckWrapping({}, Object);
|
||||
|
||||
// Neutering the buffer backing the typed array mid-way should
|
||||
// Detaching the buffer backing the typed array mid-way should
|
||||
// still make .forEach() finish, and the array should keep being
|
||||
// empty after neutering it.
|
||||
// empty after detaching it.
|
||||
count = 0;
|
||||
a = new constructor(3);
|
||||
result = a.every(function (n, index, array) {
|
||||
assertFalse(array[index] === undefined); // don't get here if neutered
|
||||
if (count > 0) %ArrayBufferNeuter(array.buffer);
|
||||
assertFalse(array[index] === undefined); // don't get here if detached
|
||||
if (count > 0) %ArrayBufferDetach(array.buffer);
|
||||
array[index] = n + 1;
|
||||
count++;
|
||||
return count > 1 ? array[index] === undefined : true;
|
||||
});
|
||||
assertEquals(2, count);
|
||||
assertEquals(true, result);
|
||||
CheckTypedArrayIsNeutered(a);
|
||||
CheckTypedArrayIsDetached(a);
|
||||
assertEquals(undefined, a[0]);
|
||||
|
||||
// Calling array.buffer midway can change the backing store.
|
||||
|
@ -161,7 +161,7 @@ function TestTypedArrayForEach(constructor) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.every(() => true), TypeError);
|
||||
}
|
||||
|
||||
|
|
|
@ -74,12 +74,12 @@ for (var constructor of typedArrayConstructors) {
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.fill(tmp), TypeError);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ function TestTypedArrayFilter(constructor) {
|
|||
// Throw type error if source array is detached while executing a callback
|
||||
let ta1 = new constructor(10);
|
||||
assertThrows(() =>
|
||||
ta1.filter(() => %ArrayBufferNeuter(ta1.buffer))
|
||||
ta1.filter(() => %ArrayBufferDetach(ta1.buffer))
|
||||
, TypeError);
|
||||
|
||||
// A new typed array should be created after finishing callbacks
|
||||
|
|
|
@ -190,13 +190,13 @@ assertEquals(x, 4);
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
|
||||
assertThrows(() => array.find(tmp), TypeError);
|
||||
}
|
||||
|
|
|
@ -190,11 +190,11 @@ assertEquals(x, 4);
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.findIndex(tmp), TypeError);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ var typedArrayConstructors = [
|
|||
Float32Array,
|
||||
Float64Array];
|
||||
|
||||
function CheckTypedArrayIsNeutered(array) {
|
||||
function CheckTypedArrayIsDetached(array) {
|
||||
assertEquals(0, array.byteLength);
|
||||
assertEquals(0, array.byteOffset);
|
||||
assertEquals(0, array.length);
|
||||
|
@ -84,7 +84,7 @@ function TestTypedArrayForEach(constructor) {
|
|||
assertEquals(43, a[0]);
|
||||
assertEquals(42, a[1]);
|
||||
|
||||
// Neutering the buffer backing the typed array mid-way should
|
||||
// Detaching the buffer backing the typed array mid-way should
|
||||
// still make .forEach() finish, but exiting early due to the missing
|
||||
// elements, and the array should keep being empty after detaching it.
|
||||
// TODO(dehrenberg): According to the ES6 spec, accessing or testing
|
||||
|
@ -94,12 +94,12 @@ function TestTypedArrayForEach(constructor) {
|
|||
a = new constructor(3);
|
||||
count = 0;
|
||||
a.forEach(function (n, index, array) {
|
||||
if (count > 0) %ArrayBufferNeuter(array.buffer);
|
||||
if (count > 0) %ArrayBufferDetach(array.buffer);
|
||||
array[index] = n + 1;
|
||||
count++;
|
||||
});
|
||||
assertEquals(2, count);
|
||||
CheckTypedArrayIsNeutered(a);
|
||||
CheckTypedArrayIsDetached(a);
|
||||
assertEquals(undefined, a[0]);
|
||||
|
||||
// The method must work for typed arrays created from ArrayBuffer.
|
||||
|
@ -150,7 +150,7 @@ function TestTypedArrayForEach(constructor) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.forEach(() => true), TypeError);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,6 @@ var typedArrayConstructors = [
|
|||
|
||||
for (constructor of typedArrayConstructors) {
|
||||
var ta = new constructor(10);
|
||||
%ArrayBufferNeuter(ta.buffer);
|
||||
%ArrayBufferDetach(ta.buffer);
|
||||
assertThrows(() => constructor.from(ta), TypeError);
|
||||
}
|
||||
|
|
|
@ -208,7 +208,7 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
let ta2 = new constructor(3).fill(1);
|
||||
Object.defineProperty(ta2, "length", {get: function() {
|
||||
%ArrayBufferNeuter(ta2.buffer);
|
||||
%ArrayBufferDetach(ta2.buffer);
|
||||
return 6;
|
||||
}});
|
||||
assertArrayLikeEquals(constructor.from(ta2), [d, d, d, d, d, d], constructor);
|
||||
|
|
|
@ -19,7 +19,7 @@ var typedArrayConstructors = [
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
@ -65,7 +65,7 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.indexOf(tmp), TypeError);
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
@ -107,6 +107,6 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.lastIndexOf(tmp), TypeError);
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.filter(() => false), TypeError);
|
||||
})();
|
||||
|
||||
|
@ -140,7 +140,7 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.map((v) => v), TypeError);
|
||||
})();
|
||||
|
||||
|
@ -204,7 +204,7 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.some((v) => false), TypeError);
|
||||
})();
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ function TestTypedArrayMap(constructor) {
|
|||
new DetachingArray(5).map(function(v,i,a){
|
||||
print(i);
|
||||
if (i == 1) {
|
||||
%ArrayBufferNeuter(target.buffer);
|
||||
%ArrayBufferDetach(target.buffer);
|
||||
}
|
||||
})
|
||||
}, TypeError);
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
// Disable the neutering protector.
|
||||
%ArrayBufferNeuter(new ArrayBuffer(1024));
|
||||
// Disable the detaching protector.
|
||||
%ArrayBufferDetach(new ArrayBuffer(1024));
|
||||
|
||||
// ArrayBuffer
|
||||
|
||||
|
|
|
@ -254,13 +254,13 @@ for (var constructor of typedArrayConstructors) {
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.reduce(sum, tmp), TypeError);
|
||||
assertThrows(() => array.reduceRight(sum, tmp), TypeError);
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ for (var constructor of arrayConstructors) {
|
|||
// Detached Operation
|
||||
if (constructor != ArrayMaker) {
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.reverse(), TypeError);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,12 +73,12 @@ for (var constructor of typedArrayConstructors) {
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.slice(tmp, tmp), TypeError);
|
||||
|
||||
// Check that the species array must be a typed array
|
||||
|
|
|
@ -65,7 +65,7 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.sort(), TypeError);
|
||||
}
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ for (var constructor of typedArrayConstructors) {
|
|||
|
||||
// Detached Operation
|
||||
var array = new constructor([1, 2, 3]);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertThrows(() => array.join(), TypeError);
|
||||
assertThrows(() => array.toLocalString(), TypeError);
|
||||
assertThrows(() => array.toString(), TypeError);
|
||||
|
|
|
@ -636,7 +636,7 @@ function TestTypedArraySet() {
|
|||
var detached = false;
|
||||
evilarr[1] = {
|
||||
[Symbol.toPrimitive]() {
|
||||
%ArrayBufferNeuter(a111.buffer);
|
||||
%ArrayBufferDetach(a111.buffer);
|
||||
detached = true;
|
||||
return 1;
|
||||
}
|
||||
|
@ -648,7 +648,7 @@ function TestTypedArraySet() {
|
|||
var tmp = {
|
||||
[Symbol.toPrimitive]() {
|
||||
assertUnreachable("Parameter should not be processed when " +
|
||||
"array.[[ViewedArrayBuffer]] is neutered.");
|
||||
"array.[[ViewedArrayBuffer]] is detached.");
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
@ -662,7 +662,7 @@ function TestTypedArraySet() {
|
|||
let detached = false;
|
||||
const offset = {
|
||||
[Symbol.toPrimitive]() {
|
||||
%ArrayBufferNeuter(xs.buffer);
|
||||
%ArrayBufferDetach(xs.buffer);
|
||||
detached = true;
|
||||
return 0;
|
||||
}
|
||||
|
@ -677,7 +677,7 @@ function TestTypedArraySet() {
|
|||
for (const klass of typedArrayConstructors) {
|
||||
const a = new klass(2);
|
||||
for (let i = 0; i < a.length; i++) a[i] = i;
|
||||
%ArrayBufferNeuter(a.buffer);
|
||||
%ArrayBufferDetach(a.buffer);
|
||||
|
||||
const b = new klass(2);
|
||||
assertThrows(() => b.set(a), TypeError);
|
||||
|
|
|
@ -356,7 +356,7 @@ var kTests = {
|
|||
|
||||
Detached_Int8Array() {
|
||||
var array = new Int8Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -391,7 +391,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint8Array() {
|
||||
var array = new Uint8Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -421,7 +421,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint8ClampedArray() {
|
||||
var array = new Uint8ClampedArray(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -453,7 +453,7 @@ var kTests = {
|
|||
|
||||
Detached_Int16Array() {
|
||||
var array = new Int16Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -485,7 +485,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint16Array() {
|
||||
var array = new Uint16Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -517,7 +517,7 @@ var kTests = {
|
|||
|
||||
Detached_Int32Array() {
|
||||
var array = new Int32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -550,7 +550,7 @@ var kTests = {
|
|||
|
||||
Detached_Uint32Array() {
|
||||
var array = new Uint32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -583,7 +583,7 @@ var kTests = {
|
|||
|
||||
Detached_Float32Array() {
|
||||
var array = new Float32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
@ -616,7 +616,7 @@ var kTests = {
|
|||
|
||||
Detached_Float64Array() {
|
||||
var array = new Float32Array(10);
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
assertFalse(Array.prototype.includes.call(array, 0));
|
||||
assertFalse(Array.prototype.includes.call(array, 0, 10));
|
||||
},
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// 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: --always-opt --harmony-object-from-entries --allow-natives-syntax
|
||||
|
||||
function test() {
|
||||
Object.fromEntries([[]]);
|
||||
%DeoptimizeNow();
|
||||
}
|
||||
test();
|
|
@ -0,0 +1,9 @@
|
|||
// 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-string-matchall
|
||||
|
||||
delete RegExp.prototype[Symbol.matchAll];
|
||||
const str = 'a';
|
||||
assertThrows(() => str.matchAll(/\w/g), TypeError);
|
|
@ -3,6 +3,7 @@
|
|||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
|
||||
// Flags: --no-stress-flush-bytecode
|
||||
|
||||
let cleanup0_call_count = 0;
|
||||
let cleanup0_weak_cell_count = 0;
|
||||
|
|
|
@ -171,15 +171,15 @@ test(function() {
|
|||
for (constructor of typedArrayConstructors) {
|
||||
test(() => {
|
||||
const ta = new constructor([1]);
|
||||
%ArrayBufferNeuter(ta.buffer);
|
||||
%ArrayBufferDetach(ta.buffer);
|
||||
ta.find(() => {});
|
||||
}, "Cannot perform %TypedArray%.prototype.find on a detached ArrayBuffer", TypeError);
|
||||
}, "Cannot perform %TypedArray%.prototype.find on a neutered ArrayBuffer", TypeError);
|
||||
|
||||
test(() => {
|
||||
const ta = new constructor([1]);
|
||||
%ArrayBufferNeuter(ta.buffer);
|
||||
%ArrayBufferDetach(ta.buffer);
|
||||
ta.findIndex(() => {});
|
||||
}, "Cannot perform %TypedArray%.prototype.findIndex on a detached ArrayBuffer", TypeError);
|
||||
}, "Cannot perform %TypedArray%.prototype.findIndex on a neutered ArrayBuffer", TypeError);
|
||||
}
|
||||
|
||||
// kFirstArgumentNotRegExp
|
||||
|
|
|
@ -107,12 +107,12 @@
|
|||
|
||||
##############################################################################
|
||||
# Skip long running tests that time out in debug mode.
|
||||
'generated-transition-stub': [PASS, ['mode == debug or dcheck_always_on', SKIP]],
|
||||
'generated-transition-stub': [PASS, ['mode == debug', SKIP]],
|
||||
'migrations': [SKIP],
|
||||
'array-functions-prototype-misc': [PASS, SLOW, ['mode == debug or dcheck_always_on', SKIP]],
|
||||
'compiler/regress-808472': [PASS, ['mode == debug or dcheck_always_on', SKIP]],
|
||||
'array-functions-prototype-misc': [PASS, SLOW, ['mode == debug', SKIP]],
|
||||
'compiler/regress-808472': [PASS, ['mode == debug', SKIP]],
|
||||
'es6/promise-all-overflow-1': [SKIP],
|
||||
'es6/promise-all-overflow-2': [PASS, SLOW, ['mode == debug or dcheck_always_on or arch != x64', SKIP]],
|
||||
'es6/promise-all-overflow-2': [PASS, SLOW, ['mode == debug or arch != x64', SKIP]],
|
||||
|
||||
##############################################################################
|
||||
# This test sets the umask on a per-process basis and hence cannot be
|
||||
|
@ -140,7 +140,7 @@
|
|||
##############################################################################
|
||||
# Tests verifying CHECK and ASSERT.
|
||||
'verify-check-false': [FAIL, NO_VARIANTS],
|
||||
'verify-assert-false': [NO_VARIANTS, ['mode == release and dcheck_always_on == False', PASS], ['mode == debug or dcheck_always_on == True', FAIL]],
|
||||
'verify-assert-false': [NO_VARIANTS, ['mode == release and dcheck_always_on == False', PASS], ['mode == debug', FAIL]],
|
||||
|
||||
##############################################################################
|
||||
# Tests with different versions for release and debug.
|
||||
|
@ -214,10 +214,10 @@
|
|||
|
||||
# TODO(vogelheim): big-object-literal exceeds the stack in debug builds,
|
||||
# which makes the test useless.
|
||||
'big-object-literal': [PASS, ['mode == debug or dcheck_always_on', SKIP]],
|
||||
'big-object-literal': [PASS, ['mode == debug', SKIP]],
|
||||
|
||||
# Runs out of stack space in debug builds.
|
||||
'big-array-literal': [PASS, ['mode == debug or dcheck_always_on', SKIP]],
|
||||
'big-array-literal': [PASS, ['mode == debug', SKIP]],
|
||||
|
||||
# BUG(v8:6306).
|
||||
'wasm/huge-memory': [SKIP],
|
||||
|
@ -929,4 +929,10 @@
|
|||
'wasm/asm-wasm-f64': [SKIP],
|
||||
}], # arch == x64
|
||||
|
||||
##############################################################################
|
||||
['arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]', {
|
||||
# TODO(ssauleau): implement BigInt<>Wasm conversion for other arch -
|
||||
# crbug.com/v8/7741
|
||||
'wasm/bigint': [SKIP],
|
||||
}], # arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]
|
||||
]
|
||||
|
|
|
@ -5,5 +5,5 @@
|
|||
// Flags: --allow-natives-syntax
|
||||
|
||||
var ab = new ArrayBuffer(100);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferNeuter(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
%ArrayBufferDetach(ab);
|
||||
|
|
|
@ -8,7 +8,7 @@ var buffer1 = new ArrayBuffer(100 * 1024);
|
|||
|
||||
assertThrows(function() {
|
||||
var array1 = new Uint8Array(buffer1, {valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer1);
|
||||
%ArrayBufferDetach(buffer1);
|
||||
return 0;
|
||||
}});
|
||||
}, TypeError);
|
||||
|
@ -17,7 +17,7 @@ var buffer2 = new ArrayBuffer(100 * 1024);
|
|||
|
||||
assertThrows(function() {
|
||||
var array2 = new Uint8Array(buffer2, 0, {valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer2);
|
||||
%ArrayBufferDetach(buffer2);
|
||||
return 100 * 1024;
|
||||
}});
|
||||
}, TypeError);
|
||||
|
@ -30,7 +30,7 @@ assertThrows(() =>
|
|||
return 0;
|
||||
}}, {valueOf : function() {
|
||||
convertedLength = true;
|
||||
%ArrayBufferNeuter(buffer1);
|
||||
%ArrayBufferDetach(buffer1);
|
||||
return 0;
|
||||
}}), TypeError);
|
||||
assertTrue(convertedOffset);
|
||||
|
@ -38,7 +38,7 @@ assertTrue(convertedLength);
|
|||
|
||||
var buffer3 = new ArrayBuffer(100 * 1024 * 1024);
|
||||
var dataView1 = new DataView(buffer3, {valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer3);
|
||||
%ArrayBufferDetach(buffer3);
|
||||
return 0;
|
||||
}});
|
||||
|
||||
|
@ -47,7 +47,7 @@ assertEquals(0, dataView1.byteLength);
|
|||
var buffer4 = new ArrayBuffer(100 * 1024);
|
||||
assertThrows(function() {
|
||||
var dataView2 = new DataView(buffer4, 0, {valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer4);
|
||||
%ArrayBufferDetach(buffer4);
|
||||
return 100 * 1024 * 1024;
|
||||
}});
|
||||
}, RangeError);
|
||||
|
@ -56,7 +56,7 @@ assertThrows(function() {
|
|||
var buffer5 = new ArrayBuffer(100 * 1024);
|
||||
assertThrows(function() {
|
||||
buffer5.slice({valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer5);
|
||||
%ArrayBufferDetach(buffer5);
|
||||
return 0;
|
||||
}}, 100 * 1024 * 1024);
|
||||
}, TypeError);
|
||||
|
@ -65,7 +65,7 @@ assertThrows(function() {
|
|||
var buffer7 = new ArrayBuffer(100 * 1024 * 1024);
|
||||
assertThrows(function() {
|
||||
buffer7.slice(0, {valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer7);
|
||||
%ArrayBufferDetach(buffer7);
|
||||
return 100 * 1024 * 1024;
|
||||
}});
|
||||
}, TypeError);
|
||||
|
@ -74,7 +74,7 @@ var buffer9 = new ArrayBuffer(1024);
|
|||
var array9 = new Uint8Array(buffer9);
|
||||
assertThrows(() =>
|
||||
array9.subarray({valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer9);
|
||||
%ArrayBufferDetach(buffer9);
|
||||
return 0;
|
||||
}}, 1024), TypeError);
|
||||
assertEquals(0, array9.length);
|
||||
|
@ -83,7 +83,7 @@ var buffer11 = new ArrayBuffer(1024);
|
|||
var array11 = new Uint8Array(buffer11);
|
||||
assertThrows(() =>
|
||||
array11.subarray(0, {valueOf : function() {
|
||||
%ArrayBufferNeuter(buffer11);
|
||||
%ArrayBufferDetach(buffer11);
|
||||
return 1024;
|
||||
}}), TypeError);
|
||||
assertEquals(0, array11.length);
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
// Neutered source
|
||||
// Detached source
|
||||
var ab = new ArrayBuffer(10);
|
||||
ab.constructor = { get [Symbol.species]() { %ArrayBufferNeuter(ab); return ArrayBuffer; } };
|
||||
ab.constructor = { get [Symbol.species]() { %ArrayBufferDetach(ab); return ArrayBuffer; } };
|
||||
assertThrows(() => ab.slice(0), TypeError);
|
||||
|
||||
// Neutered target
|
||||
class NeuteredArrayBuffer extends ArrayBuffer {
|
||||
// Detached target
|
||||
class DetachedArrayBuffer extends ArrayBuffer {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
%ArrayBufferNeuter(this);
|
||||
%ArrayBufferDetach(this);
|
||||
}
|
||||
}
|
||||
|
||||
var ab2 = new ArrayBuffer(10);
|
||||
ab2.constructor = NeuteredArrayBuffer;
|
||||
ab2.constructor = DetachedArrayBuffer;
|
||||
assertThrows(() => ab2.slice(0), TypeError);
|
||||
|
|
|
@ -4,10 +4,7 @@
|
|||
|
||||
// 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', Intl.Collator().resolvedOptions().locale);
|
||||
assertEquals('pt-BR', Intl.Collator().resolvedOptions().locale);
|
||||
assertEquals('pt-BR', Intl.DateTimeFormat().resolvedOptions().locale);
|
||||
}
|
||||
|
|
|
@ -5,5 +5,5 @@
|
|||
// Flags: --allow-natives-syntax
|
||||
|
||||
var a = new Uint8Array(1024*1024);
|
||||
%ArrayBufferNeuter(a.buffer);
|
||||
%ArrayBufferDetach(a.buffer);
|
||||
assertThrows(() => new Uint8Array(a));
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
// 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.
|
||||
|
||||
(function testFunctionNames() {
|
||||
let descriptor = {
|
||||
value: '',
|
||||
writable: false,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
};
|
||||
// Functions have a "name" property by default.
|
||||
assertEquals(
|
||||
descriptor, Object.getOwnPropertyDescriptor(function(){}, 'name'));
|
||||
let a = { fn: function(){} };
|
||||
assertSame('fn', a.fn.name);
|
||||
descriptor.value = 'fn';
|
||||
assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name'));
|
||||
|
||||
let b = { __proto__: function(){} };
|
||||
assertSame('', b.__proto__.name);
|
||||
descriptor.value = '';
|
||||
assertEquals(
|
||||
descriptor, Object.getOwnPropertyDescriptor(b.__proto__, 'name'));
|
||||
|
||||
let c = { fn: function F(){} };
|
||||
assertSame('F', c.fn.name);
|
||||
descriptor.value = 'F';
|
||||
assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name'));
|
||||
|
||||
let d = { __proto__: function E(){} };
|
||||
assertSame('E', d.__proto__.name);
|
||||
descriptor.value = 'E';
|
||||
assertEquals(
|
||||
descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name'));
|
||||
})();
|
||||
|
||||
(function testClassNames() {
|
||||
let descriptor = {
|
||||
value: '',
|
||||
writable: false,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
};
|
||||
|
||||
// Anonymous classes do not have a "name" property by default.
|
||||
assertSame(undefined, Object.getOwnPropertyDescriptor(class {}, 'name'));
|
||||
descriptor.value = 'C';
|
||||
assertEquals(descriptor, Object.getOwnPropertyDescriptor(class C {}, 'name'));
|
||||
|
||||
let a = { fn: class {} };
|
||||
assertSame('fn', a.fn.name);
|
||||
descriptor.value = 'fn';
|
||||
assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name'));
|
||||
|
||||
let b = { __proto__: class {} };
|
||||
assertSame('', b.__proto__.name);
|
||||
assertSame(
|
||||
undefined, Object.getOwnPropertyDescriptor(b.__proto__, 'name'));
|
||||
|
||||
let c = { fn: class F {} };
|
||||
assertSame('F', c.fn.name);
|
||||
descriptor.value = 'F';
|
||||
assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name'));
|
||||
|
||||
let d = { __proto__: class F {} };
|
||||
assertSame('F', d.__proto__.name);
|
||||
descriptor.value = 'F';
|
||||
assertEquals(
|
||||
descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name'));
|
||||
})();
|
|
@ -8,7 +8,7 @@ var buffer = new ArrayBuffer(1024 * 1024);
|
|||
buffer.constructor = {
|
||||
[Symbol.species]: new Proxy(function() {}, {
|
||||
get: _ => {
|
||||
%ArrayBufferNeuter(buffer);
|
||||
%ArrayBufferDetach(buffer);
|
||||
}
|
||||
})
|
||||
};
|
||||
|
|
|
@ -8,7 +8,7 @@ delete Float64Array.prototype.__proto__[Symbol.iterator];
|
|||
|
||||
let a = new Float64Array(9);
|
||||
Object.defineProperty(a, "length", {
|
||||
get: function () { %ArrayBufferNeuter(a.buffer); return 6; }
|
||||
get: function () { %ArrayBufferDetach(a.buffer); return 6; }
|
||||
});
|
||||
|
||||
Float64Array.from(a);
|
||||
|
|
|
@ -7,7 +7,7 @@ var buffer = new ArrayBuffer(0x100);
|
|||
var array = new Uint8Array(buffer).fill(55);
|
||||
var tmp = {};
|
||||
tmp[Symbol.toPrimitive] = function () {
|
||||
%ArrayBufferNeuter(array.buffer)
|
||||
%ArrayBufferDetach(array.buffer)
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
@ -18,7 +18,7 @@ buffer = new ArrayBuffer(0x100);
|
|||
array = new Uint8Array(buffer).fill(55);
|
||||
tmp = {};
|
||||
tmp[Symbol.toPrimitive] = function () {
|
||||
%ArrayBufferNeuter(array.buffer)
|
||||
%ArrayBufferDetach(array.buffer)
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
@ -29,7 +29,7 @@ buffer = new ArrayBuffer(0x100);
|
|||
array = new Uint8Array(buffer).fill(55);
|
||||
tmp = {};
|
||||
tmp[Symbol.toPrimitive] = function () {
|
||||
%ArrayBufferNeuter(array.buffer)
|
||||
%ArrayBufferDetach(array.buffer)
|
||||
return 0;
|
||||
};
|
||||
assertEquals(true, Array.prototype.includes.call(array, undefined, tmp));
|
||||
|
|
|
@ -8,7 +8,7 @@ for (var i = 0; i < 3; i++) {
|
|||
var array = new BigInt64Array(200);
|
||||
|
||||
function evil_callback() {
|
||||
%ArrayBufferNeuter(array.buffer);
|
||||
%ArrayBufferDetach(array.buffer);
|
||||
gc();
|
||||
return 1094795585n;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// 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.
|
||||
|
||||
const globalThis = this;
|
||||
Object.setPrototypeOf(this, new Proxy({}, {
|
||||
get(target, prop, receiver) {
|
||||
assertTrue(receiver === globalThis);
|
||||
}
|
||||
}));
|
||||
undefined_name_access
|
|
@ -0,0 +1,13 @@
|
|||
// 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
|
||||
|
||||
function foo(trigger) {
|
||||
return Object.is((trigger ? -0 : 0) - 0, -0);
|
||||
}
|
||||
|
||||
assertFalse(foo(false));
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertTrue(foo(true));
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
var v17 = {};
|
||||
var v32 = {};
|
||||
var v17 = 42;
|
||||
var v32 = { initial: 1 };
|
||||
v39 = new WebAssembly.Memory(v32);
|
||||
v49 = v39.grow(v17);
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
load('test/mjsunit/wasm/wasm-constants.js');
|
||||
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||
|
||||
let mem = new WebAssembly.Memory({});
|
||||
let mem = new WebAssembly.Memory({initial: 0});
|
||||
let builder = new WasmModuleBuilder();
|
||||
builder.addImportedMemory("mod", "imported_mem");
|
||||
builder.addFunction('mem_size', kSig_i_v)
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
(new Int8Array((new WebAssembly.Memory({})).buffer)).buffer;
|
||||
(new Int8Array((new WebAssembly.Memory({initial: 0})).buffer)).buffer;
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// 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();
|
||||
builder.addFunction('main', kSig_v_v).addBody([
|
||||
kExprLoop, kWasmStmt, // loop
|
||||
/**/ kExprBr, 0x01, // br depth=1
|
||||
/**/ kExprBlock, kWasmStmt, // block
|
||||
/**/ /**/ kExprBr, 0x02, // br depth=2
|
||||
/**/ /**/ kExprEnd, // end [block]
|
||||
/**/ kExprEnd // end [loop]
|
||||
]);
|
||||
builder.instantiate();
|
|
@ -26,7 +26,7 @@
|
|||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
// Flags: --expose-natives-as natives --allow-natives-syntax
|
||||
// Flags: --allow-natives-syntax
|
||||
// Test the SameValue and SameValueZero internal methods.
|
||||
|
||||
var obj1 = {x: 10, y: 11, z: "test"};
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
// found in the LICENSE file.
|
||||
|
||||
function $DETACHBUFFER(buffer) {
|
||||
%ArrayBufferNeuter(buffer);
|
||||
%ArrayBufferDetach(buffer);
|
||||
}
|
||||
|
||||
$262.detachArrayBuffer = $DETACHBUFFER;
|
||||
|
|
|
@ -179,232 +179,232 @@
|
|||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=896
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-end': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-no-dash-end': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-no-dash-start': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-start': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-empty': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-empty-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-invalid': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-invalid-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-only': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unclosed': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unopened': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unopened-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-01': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-01-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-02': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-02-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-03': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-03-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-04': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-04-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-05': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-05-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-06': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-06-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-07': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-07-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-08': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-08-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-09': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-09-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-10': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-10-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-11': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-11-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-12': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-12-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-13': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-13-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-14': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-14-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-binary-property': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-binary-property-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-and-value': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-and-value-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-existing-value': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-general-category': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated': [FAIL],
|
||||
'language/literals/regexp/early-err-pattern': [FAIL],
|
||||
'language/literals/regexp/invalid-braced-quantifier-exact': [FAIL],
|
||||
'language/literals/regexp/invalid-braced-quantifier-lower': [FAIL],
|
||||
'language/literals/regexp/invalid-braced-quantifier-range': [FAIL],
|
||||
'language/literals/regexp/invalid-optional-lookbehind': [FAIL],
|
||||
'language/literals/regexp/invalid-optional-negative-lookbehind': [FAIL],
|
||||
'language/literals/regexp/invalid-range-lookbehind': [FAIL],
|
||||
'language/literals/regexp/invalid-range-negative-lookbehind': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-2': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-2-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-3': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-3-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-4': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-4-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-5': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-empty-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-empty-groupspecifier-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-2': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-3': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-4': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-5': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-6': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-3': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-6': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-7': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-9-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-numeric-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier-2': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier': [FAIL],
|
||||
'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u': [FAIL],
|
||||
'language/literals/regexp/u-dec-esc': [FAIL],
|
||||
'language/literals/regexp/u-invalid-class-escape': [FAIL],
|
||||
'language/literals/regexp/u-invalid-extended-pattern-char': [FAIL],
|
||||
'language/literals/regexp/u-invalid-identity-escape': [FAIL],
|
||||
'language/literals/regexp/u-invalid-legacy-octal-escape': [FAIL],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges': [FAIL],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a': [FAIL],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab': [FAIL],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b': [FAIL],
|
||||
'language/literals/regexp/u-invalid-oob-decimal-escape': [FAIL],
|
||||
'language/literals/regexp/u-invalid-optional-lookahead': [FAIL],
|
||||
'language/literals/regexp/u-invalid-optional-lookbehind': [FAIL],
|
||||
'language/literals/regexp/u-invalid-optional-negative-lookahead': [FAIL],
|
||||
'language/literals/regexp/u-invalid-optional-negative-lookbehind': [FAIL],
|
||||
'language/literals/regexp/u-invalid-range-lookahead': [FAIL],
|
||||
'language/literals/regexp/u-invalid-range-lookbehind': [FAIL],
|
||||
'language/literals/regexp/u-invalid-range-negative-lookahead': [FAIL],
|
||||
'language/literals/regexp/u-invalid-range-negative-lookbehind': [FAIL],
|
||||
'language/literals/regexp/u-unicode-esc-bounds': [FAIL],
|
||||
'language/literals/regexp/u-unicode-esc-non-hex': [FAIL],
|
||||
'language/literals/regexp/unicode-escape-nls-err': [FAIL],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-end': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-no-dash-end': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-no-dash-start': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/character-class-range-start': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-empty': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-empty-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-invalid': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-invalid-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-only': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unclosed': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unopened': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/grammar-extension-unopened-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-01': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-01-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-02': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-02-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-03': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-03-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-04': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-04-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-05': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-05-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-06': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-06-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-07': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-07-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-08': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-08-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-09': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-09-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-10': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-10-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-11': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-11-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-12': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-12-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-13': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-13-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-14': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/loose-matching-14-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-binary-property': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-binary-property-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-and-value': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-and-value-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-existing-value': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/non-existent-property-value-general-category': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value': [FAIL_PHASE_ONLY],
|
||||
'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/early-err-pattern': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/invalid-braced-quantifier-exact': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/invalid-braced-quantifier-lower': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/invalid-braced-quantifier-range': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/invalid-optional-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/invalid-range-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-2': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-2-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-3': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-3-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-4': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-4-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-5': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-empty-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-empty-groupspecifier-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-2': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-3': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-4': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-5': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-6': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-3': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-6': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-7': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-9-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-numeric-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier-2': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-dec-esc': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-class-escape': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-extended-pattern-char': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-identity-escape': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-legacy-octal-escape': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-oob-decimal-escape': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-optional-lookahead': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-optional-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-optional-negative-lookahead': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-range-lookahead': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-range-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-range-negative-lookahead': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-unicode-esc-bounds': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/u-unicode-esc-non-hex': [FAIL_PHASE_ONLY],
|
||||
'language/literals/regexp/unicode-escape-nls-err': [FAIL_PHASE_ONLY],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7828
|
||||
'language/statements/try/early-catch-function': [FAIL],
|
||||
|
@ -586,10 +586,6 @@
|
|||
'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=7481
|
||||
'intl402/NumberFormat/ignore-invalid-unicode-ext-values': [FAIL],
|
||||
'intl402/DateTimeFormat/ignore-invalid-unicode-ext-values': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7482
|
||||
'intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode': [FAIL],
|
||||
|
||||
|
@ -604,7 +600,9 @@
|
|||
# https://crbug.com/v8/7808
|
||||
'intl402/String/prototype/localeCompare/returns-same-results-as-Collator': [SKIP],
|
||||
'intl402/Collator/prototype/compare/bound-to-collator-instance': [SKIP],
|
||||
'intl402/Collator/ignore-invalid-unicode-ext-values': [SKIP],
|
||||
|
||||
# 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],
|
||||
|
@ -672,14 +670,13 @@
|
|||
'intl402/Segmenter/prototype/segment/segment-word': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8021
|
||||
'built-ins/Object/fromEntries/requires-argument': [FAIL],
|
||||
'built-ins/Object/fromEntries/requires-argument': [SKIP],
|
||||
######################## NEEDS INVESTIGATION ###########################
|
||||
|
||||
# These test failures are specific to the intl402 suite and need investigation
|
||||
# to be either marked as bugs with issues filed for them or as deliberate
|
||||
# incompatibilities if the test cases turn out to be broken or ambiguous.
|
||||
# Some of these are related to v8:4361 in being visible side effects from Intl.
|
||||
'intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7833
|
||||
'built-ins/Atomics/wait/cannot-suspend-throws': [SKIP],
|
||||
|
@ -734,6 +731,10 @@
|
|||
'harness/detachArrayBuffer': [SKIP],
|
||||
'harness/detachArrayBuffer-host-detachArrayBuffer': [SKIP],
|
||||
|
||||
# Test needs to be updated to spec changes.
|
||||
# https://github.com/tc39/test262/pull/1990
|
||||
'built-ins/String/prototype/matchAll/regexp-prototype-has-no-matchAll': [FAIL],
|
||||
|
||||
############################ SKIPPED TESTS #############################
|
||||
|
||||
# These tests take a looong time to run.
|
||||
|
|
|
@ -87,15 +87,23 @@ class VariantsGenerator(testsuite.VariantsGenerator):
|
|||
def gen(self, test):
|
||||
flags_set = self._get_flags_set(test)
|
||||
test_record = test.test_record
|
||||
for n, variant in enumerate(self._get_variants(test)):
|
||||
flags = flags_set[variant][0]
|
||||
if 'noStrict' in test_record:
|
||||
yield (variant, flags, str(n))
|
||||
elif 'onlyStrict' in test_record:
|
||||
yield (variant, flags + ['--use-strict'], 'strict-%d' % n)
|
||||
else:
|
||||
yield (variant, flags, str(n))
|
||||
yield (variant, flags + ['--use-strict'], 'strict-%d' % n)
|
||||
|
||||
# Add a reverse test ensuring that FAIL_PHASE_ONLY is only used for tests
|
||||
# that actually fail to throw an exception at wrong phase.
|
||||
phase_variants = ['']
|
||||
if test.fail_phase_only:
|
||||
phase_variants.append('-fail-phase-reverse')
|
||||
|
||||
for phase_var in phase_variants:
|
||||
for n, variant in enumerate(self._get_variants(test)):
|
||||
flags = flags_set[variant][0]
|
||||
if 'noStrict' in test_record:
|
||||
yield (variant, flags, str(n) + phase_var)
|
||||
elif 'onlyStrict' in test_record:
|
||||
yield (variant, flags + ['--use-strict'], 'strict-%d' % n + phase_var)
|
||||
else:
|
||||
yield (variant, flags, str(n))
|
||||
yield (variant, flags + ['--use-strict'], 'strict-%d' % n + phase_var)
|
||||
|
||||
|
||||
class TestSuite(testsuite.TestSuite):
|
||||
|
@ -169,13 +177,34 @@ class TestCase(testcase.D8TestCase):
|
|||
.get('type', None)
|
||||
)
|
||||
|
||||
# We disallow combining FAIL_PHASE_ONLY with any other fail outcome types.
|
||||
# Outcome parsing logic in the base class converts all outcomes specified in
|
||||
# the status file into either FAIL, CRASH or PASS, thus we do not need to
|
||||
# handle FAIL_OK, FAIL_SLOPPY and various other outcomes.
|
||||
if self.fail_phase_only:
|
||||
assert (
|
||||
statusfile.FAIL not in self.expected_outcomes and
|
||||
statusfile.CRASH not in self.expected_outcomes), self.name
|
||||
|
||||
@property
|
||||
def fail_phase_only(self):
|
||||
# The FAIL_PHASE_ONLY is defined in tools/testrunner/local/statusfile.py and
|
||||
# can be used in status files to mark tests that throw an exception at wrong
|
||||
# phase, e.g. SyntaxError is thrown at execution phase instead of parsing
|
||||
# phase. See https://crbug.com/v8/8467 for more details.
|
||||
return statusfile.FAIL_PHASE_ONLY in self._statusfile_outcomes
|
||||
|
||||
@property
|
||||
def _fail_phase_reverse(self):
|
||||
return 'fail-phase-reverse' in self.procid
|
||||
|
||||
def _get_files_params(self):
|
||||
return (
|
||||
list(self.suite.harness) +
|
||||
([os.path.join(self.suite.root, "harness-agent.js")]
|
||||
if self.path.startswith('built-ins/Atomics') else []) +
|
||||
([os.path.join(self.suite.root, "harness-adapt-donotevaluate.js")]
|
||||
if self.fail_phase_only else []) +
|
||||
if self.fail_phase_only and not self._fail_phase_reverse else []) +
|
||||
self._get_includes() +
|
||||
(["--module"] if "module" in self.test_record else []) +
|
||||
[self._get_source_path()]
|
||||
|
@ -213,7 +242,12 @@ class TestCase(testcase.D8TestCase):
|
|||
def output_proc(self):
|
||||
if self._expected_exception is not None:
|
||||
return test262.ExceptionOutProc(self.expected_outcomes,
|
||||
self._expected_exception)
|
||||
self._expected_exception,
|
||||
self._fail_phase_reverse)
|
||||
else:
|
||||
# We only support fail phase reverse on tests that expect an exception.
|
||||
assert not self._fail_phase_reverse
|
||||
|
||||
if self.expected_outcomes == outproc.OUTCOMES_PASS:
|
||||
return test262.PASS_NO_EXCEPTION
|
||||
return test262.NoExceptionOutProc(self.expected_outcomes)
|
||||
|
|
|
@ -6,9 +6,7 @@
|
|||
[ALWAYS, {
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8319
|
||||
'memory/grow': [FAIL],
|
||||
'memory/constructor': [FAIL],
|
||||
'table/grow': [FAIL],
|
||||
'table/constructor': [FAIL],
|
||||
'table/get-set': [FAIL],
|
||||
'module/customSections': [FAIL],
|
||||
'global/constructor': [FAIL],
|
||||
|
|
Loading…
Reference in New Issue