Add support for builtin/builtin routine 'name' property (#3810)

JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
Robert Fancsik
2020-05-29 14:28:52 +02:00
committed by GitHub
parent 5895b96bdb
commit 3b4c259281
29 changed files with 512 additions and 112 deletions
+287
View File
@@ -0,0 +1,287 @@
// Copyright JS Foundation and other contributors, http://js.foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
function assertNameExists(func) {
assert(func.hasOwnProperty('name') === true);
}
function assertNameNotExists(func) {
assert(func.hasOwnProperty('name') === false);
assert(Function.prototype.name === '');
assert(func.name === '');
}
function assertConfigurableOnlyMethod(func) {
let desc = Object.getOwnPropertyDescriptor(func, 'name');
assert(desc.configurable === true);
assert(desc.writable === false);
assert(desc.enumerable === false);
delete func.name;
assertNameNotExists(func);
Object.defineProperty(func, 'name', {value: 'newName', configurable: true});
assert (Object.getOwnPropertyDescriptor(func, 'name').value === 'newName');
assertNameExists(func);
delete func.name;
assertNameNotExists(func);
Object.defineProperty(func, 'name', desc);
}
function assertConfigurableOnlyAccessor(func, name, method) {
let accessor = Object.getOwnPropertyDescriptor(func, name)[method];
assertConfigurableOnlyMethod(accessor);
}
function assertMethodName(func, name, functionName = name) {
assertNameExists(func);
assertConfigurableOnlyMethod(func)
assert(Object.getOwnPropertyDescriptor(func, 'name').value === functionName)
}
function assertGetterName(obj, name, functionName = name) {
assertConfigurableOnlyAccessor(obj, name, 'get');
assert(Object.getOwnPropertyDescriptor(obj, name).get['name'] === 'get ' + functionName)
}
function assertSetterName(obj, name, functionName = name) {
assertConfigurableOnlyAccessor(obj, name, 'set');
assert(Object.getOwnPropertyDescriptor(obj, name).set['name'] === 'set ' + functionName)
}
var func1 = function () {};
assertMethodName(func1, 'func1');
var func2 = function bar() {};
assertMethodName(func2, 'bar');
var func3 = (function () {}).prototype.constructor;
assert(typeof func3 === 'function');
assertNameNotExists(func3);
var func4;
func4 = function () {}
assertMethodName(func4, 'func4');
var func5;
func5 = function bar () {}
assertMethodName(func5, 'bar');
var func6;
(func6) = function () {}
assertNameNotExists(func6);
var func7;
(func7) = function bar () {}
assertMethodName(func7, 'bar');
let emptySymbolMethod = Symbol();
let namedSymbolMethod = Symbol('foo');
let emptySymbolGetter = Symbol();
let namedSymbolGetter = Symbol('foo');
let emptySymbolSetter = Symbol();
let namedSymbolSetter = Symbol('foo');
var o = {
func1() {},
func2: function () {},
func3: function bar() {},
func4: () => {},
func5: class {},
func6: class A {},
func7: class name { static name () {} },
['func' + '8']() {},
['func' + '9']: function () {},
['func' + '10']: function bar() {},
['func' + '11']: () => {},
['func' + '12']: class {},
['func' + '13']: class A {},
['func' + '14']: class name { static name () {} },
get func15() {},
get ['func' + '16']() {},
set func17(a) {},
set ['func' + '18'](a) {},
[emptySymbolMethod]() {},
[namedSymbolMethod]() {},
get [emptySymbolGetter]() {},
get [namedSymbolGetter]() {},
set [emptySymbolSetter](a) {},
set [namedSymbolSetter](a) {},
}
assertMethodName(o.func1, 'func1');
assertMethodName(o.func2, 'func2');
assertMethodName(o.func3, 'bar');
assertMethodName(o.func4, 'func4');
assertMethodName(o.func5, 'func5');
assertMethodName(o.func6, 'A');
assert(typeof o.func7 === 'function');
assertMethodName(o.func8, 'func8');
assertMethodName(o.func9, 'func9');
assertMethodName(o.func10, 'bar');
assertMethodName(o.func11, 'func11');
assertMethodName(o.func12, 'func12');
assertMethodName(o.func13, 'A');
assert(typeof o.func14 === 'function');
assertGetterName(o, 'func15');
assertGetterName(o, 'func16');
assertSetterName(o, 'func17');
assertSetterName(o, 'func17');
assertMethodName(o[emptySymbolMethod], '');
assertMethodName(o[namedSymbolMethod], '[foo]');
assertGetterName(o, emptySymbolGetter, '');
assertGetterName(o, namedSymbolGetter, '[foo]');
assertSetterName(o, emptySymbolSetter, '');
assertSetterName(o, namedSymbolSetter, '[foo]');
class A {
constructor () {}
func1() {}
get func2() {}
set func3(a) {}
static func4() {}
static get func5() {}
static set func6(a) {}
['func' + '7']() {}
get ['func' + '8']() {}
set ['func' + '9'](a) {}
static ['func' + '10']() {}
static get ['func' + '11']() {}
static set ['func' + '12'](a) {}
[emptySymbolMethod]() {}
[namedSymbolMethod]() {}
get [emptySymbolGetter]() {}
get [namedSymbolGetter]() {}
set [emptySymbolSetter](a) {}
set [namedSymbolSetter](a) {}
static [emptySymbolMethod]() {}
static [namedSymbolMethod]() {}
static get [emptySymbolGetter]() {}
static get [namedSymbolGetter]() {}
static set [emptySymbolSetter](a) {}
static set [namedSymbolSetter](a) {}
}
assertMethodName(A.prototype.func1, 'func1');
assertGetterName(A.prototype, 'func2');
assertSetterName(A.prototype, 'func3');
assertMethodName(A.func4, 'func4');
assertGetterName(A, 'func5');
assertSetterName(A, 'func6');
assertMethodName(A.prototype.func7, 'func7');
assertGetterName(A.prototype, 'func8');
assertSetterName(A.prototype, 'func9');
assertMethodName(A.func10, 'func10');
assertGetterName(A, 'func11');
assertSetterName(A, 'func12');
assertMethodName(A[emptySymbolMethod], '');
assertMethodName(A[namedSymbolMethod], '[foo]');
assertGetterName(A, emptySymbolGetter, '');
assertGetterName(A, namedSymbolGetter, '[foo]');
assertSetterName(A, emptySymbolSetter, '');
assertSetterName(A, namedSymbolSetter, '[foo]');
assertMethodName(A.prototype[emptySymbolMethod], '');
assertMethodName(A.prototype[namedSymbolMethod], '[foo]');
assertGetterName(A.prototype, emptySymbolGetter, '');
assertGetterName(A.prototype, namedSymbolGetter, '[foo]');
assertSetterName(A.prototype, emptySymbolSetter, '');
assertSetterName(A.prototype, namedSymbolSetter, '[foo]');
class B {
func1() {}
get func2() {}
set func3(a) {}
static func4() {}
static get func5() {}
static set func6(a) {}
['func' + '7']() {}
get ['func' + '8']() {}
set ['func' + '9'](a) {}
static ['func' + '10']() {}
static get ['func' + '11']() {}
static set ['func' + '12'](a) {}
[emptySymbolMethod]() {}
[namedSymbolMethod]() {}
get [emptySymbolGetter]() {}
get [namedSymbolGetter]() {}
set [emptySymbolSetter](a) {}
set [namedSymbolSetter](a) {}
static [emptySymbolMethod]() {}
static [namedSymbolMethod]() {}
static get [emptySymbolGetter]() {}
static get [namedSymbolGetter]() {}
static set [emptySymbolSetter](a) {}
static set [namedSymbolSetter](a) {}
}
assertMethodName(B.prototype.func1, 'func1');
assertGetterName(B.prototype, 'func2');
assertSetterName(B.prototype, 'func3');
assertMethodName(B.func4, 'func4');
assertGetterName(B, 'func5');
assertSetterName(B, 'func6');
assertMethodName(B.prototype.func7, 'func7');
assertGetterName(B.prototype, 'func8');
assertSetterName(B.prototype, 'func9');
assertMethodName(B.func10, 'func10');
assertGetterName(B, 'func11');
assertSetterName(B, 'func12');
assertMethodName(B[emptySymbolMethod], '');
assertMethodName(B[namedSymbolMethod], '[foo]');
assertGetterName(B, emptySymbolGetter, '');
assertGetterName(B, namedSymbolGetter, '[foo]');
assertSetterName(B, emptySymbolSetter, '');
assertSetterName(B, namedSymbolSetter, '[foo]');
assertMethodName(B.prototype[emptySymbolMethod], '');
assertMethodName(B.prototype[namedSymbolMethod], '[foo]');
assertGetterName(B.prototype, emptySymbolGetter, '');
assertGetterName(B.prototype, namedSymbolGetter, '[foo]');
assertSetterName(B.prototype, emptySymbolSetter, '');
assertSetterName(B.prototype, namedSymbolSetter, '[foo]');
let names = ['push', 'pop', 'reduce', 'reduceRight'];
for (let n of names) {
assert(Array.prototype[n].name === n);
}
assert(Array.prototype[Symbol.iterator].name === 'values');
assert(Array.prototype.values.name === 'values');
assert(Object.getOwnPropertyDescriptor(Array, Symbol.species).get.name === 'get [Symbol.species]');
assert(Object.getOwnPropertyDescriptor(String.prototype, Symbol.iterator).value.name === '[Symbol.iterator]');
assert(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').get.name === 'get __proto__');
assert(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set.name === 'set __proto__');
-97
View File
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<excludeList>
<test id="annexB/B.2.2.1.1.js"><reason></reason></test>
<test id="annexB/B.2.2.1.2.js"><reason></reason></test>
<test id="annexB/B.2.3.10.js"><reason></reason></test>
<test id="annexB/B.2.3.11.js"><reason></reason></test>
@@ -15,17 +14,6 @@
<test id="annexB/B.2.3.7.js"><reason></reason></test>
<test id="annexB/B.2.3.8.js"><reason></reason></test>
<test id="annexB/B.2.3.9.js"><reason></reason></test>
<test id="built-ins/ArrayBuffer/prototype/byteLength/name.js"><reason></reason></test>
<test id="built-ins/ArrayBuffer/symbol-species.js"><reason></reason></test>
<test id="built-ins/ArrayBuffer/symbol-species-name.js"><reason></reason></test>
<test id="built-ins/Array/from/Array.from-name.js"><reason></reason></test>
<test id="built-ins/Array/of/name.js"><reason></reason></test>
<test id="built-ins/Array/prototype/copyWithin/name.js"><reason></reason></test>
<test id="built-ins/Array/prototype/entries/name.js"><reason></reason></test>
<test id="built-ins/Array/prototype/fill/name.js"><reason></reason></test>
<test id="built-ins/Array/prototype/findIndex/name.js"><reason></reason></test>
<test id="built-ins/Array/prototype/find/name.js"><reason></reason></test>
<test id="built-ins/Array/prototype/keys/name.js"><reason></reason></test>
<test id="built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-28.js"><reason></reason></test>
<test id="built-ins/Array/prototype/map/15.4.4.19-3-14.js"><reason></reason></test>
<test id="built-ins/Array/prototype/map/15.4.4.19-3-28.js"><reason></reason></test>
@@ -41,44 +29,24 @@
<test id="built-ins/Array/prototype/splice/S15.4.4.12_A3_T1.js"><reason></reason></test>
<test id="built-ins/Array/prototype/toLocaleString/primitive_this_value_getter.js"><reason></reason></test>
<test id="built-ins/Array/prototype/toLocaleString/primitive_this_value.js"><reason></reason></test>
<test id="built-ins/Array/prototype/values/name.js"><reason></reason></test>
<test id="built-ins/Array/symbol-species-name.js"><reason></reason></test>
<test id="built-ins/Boolean/prototype/S15.6.3.1_A1.js"><reason></reason></test>
<test id="built-ins/Boolean/prototype/S15.6.4_A1.js"><reason></reason></test>
<test id="built-ins/Boolean/prototype/toString/S15.6.4.2_A1_T1.js"><reason></reason></test>
<test id="built-ins/Boolean/prototype/toString/S15.6.4.2_A1_T2.js"><reason></reason></test>
<test id="built-ins/Boolean/prototype/valueOf/S15.6.4.3_A1_T1.js"><reason></reason></test>
<test id="built-ins/Boolean/prototype/valueOf/S15.6.4.3_A1_T2.js"><reason></reason></test>
<test id="built-ins/DataView/prototype/buffer/name.js"><reason></reason></test>
<test id="built-ins/DataView/prototype/byteLength/name.js"><reason></reason></test>
<test id="built-ins/DataView/prototype/byteOffset/name.js"><reason></reason></test>
<test id="built-ins/Date/construct_with_date.js"><reason></reason></test>
<test id="built-ins/Date/prototype/Symbol.toPrimitive/hint-invalid.js"><reason></reason></test>
<test id="built-ins/Date/prototype/Symbol.toPrimitive/name.js"><reason></reason></test>
<test id="built-ins/decodeURIComponent/S15.1.3.2_A2.5_T1.js"><reason></reason></test>
<test id="built-ins/decodeURI/S15.1.3.1_A2.5_T1.js"><reason></reason></test>
<test id="built-ins/Function/prototype/bind/15.3.4.5-15-5.js"><reason></reason></test>
<test id="built-ins/Function/prototype/bind/BoundFunction_restricted-properties.js"><reason></reason></test>
<test id="built-ins/Function/prototype/name.js"><reason></reason></test>
<test id="built-ins/Function/prototype/Symbol.hasInstance/name.js"><reason></reason></test>
<test id="built-ins/Function/StrictFunction_restricted-properties.js"><reason></reason></test>
<test id="built-ins/GeneratorFunction/instance-restricted-properties.js"><reason></reason></test>
<test id="built-ins/GeneratorPrototype/next/context-constructor-invocation.js"><reason></reason></test>
<test id="built-ins/GeneratorPrototype/throw/from-state-completed.js"><reason></reason></test>
<test id="built-ins/IteratorPrototype/Symbol.iterator/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/clear/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/delete/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/entries/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/forEach/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/get/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/has/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/keys/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/set/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/size/name.js"><reason></reason></test>
<test id="built-ins/Map/prototype/size/size.js"><reason></reason></test>
<test id="built-ins/Map/prototype/Symbol.iterator.js"><reason></reason></test>
<test id="built-ins/Map/prototype/values/name.js"><reason></reason></test>
<test id="built-ins/Map/symbol-species-name.js"><reason></reason></test>
<test id="built-ins/Number/15.7.4-1.js"><reason></reason></test>
<test id="built-ins/Number/prototype/S15.7.3.1_A2_T1.js"><reason></reason></test>
<test id="built-ins/Number/prototype/S15.7.3.1_A2_T2.js"><reason></reason></test>
@@ -124,9 +92,6 @@
<test id="built-ins/Number/prototype/toString/S15.7.4.2_A2_T34.js"><reason></reason></test>
<test id="built-ins/Number/prototype/valueOf/S15.7.4.4_A1_T01.js"><reason></reason></test>
<test id="built-ins/Number/prototype/valueOf/S15.7.4.4_A1_T02.js"><reason></reason></test>
<test id="built-ins/Object/assign/name.js"><reason></reason></test>
<test id="built-ins/Object/is/name.js"><reason></reason></test>
<test id="built-ins/Object/is/object-is.js"><reason></reason></test>
<test id="built-ins/Object/prototype/hasOwnProperty/symbol_property_toPrimitive.js"><reason></reason></test>
<test id="built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js"><reason></reason></test>
<test id="built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js"><reason></reason></test>
@@ -135,57 +100,28 @@
<test id="built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js"><reason></reason></test>
<test id="built-ins/Object/prototype/toLocaleString/primitive_this_value_getter.js"><reason></reason></test>
<test id="built-ins/Object/prototype/toLocaleString/primitive_this_value.js"><reason></reason></test>
<test id="built-ins/Object/setPrototypeOf/name.js"><reason></reason></test>
<test id="built-ins/Promise/all/invoke-then.js"><reason></reason></test>
<test id="built-ins/Promise/all/name.js"><reason></reason></test>
<test id="built-ins/Promise/all/species-get-error.js"><reason></reason></test>
<test id="built-ins/Promise/exec-args.js"><reason></reason></test>
<test id="built-ins/Promise/name.js"><reason></reason></test>
<test id="built-ins/Promise/prototype/catch/invokes-then.js"><reason></reason></test>
<test id="built-ins/Promise/prototype/catch/name.js"><reason></reason></test>
<test id="built-ins/Promise/prototype/then/ctor-custom.js"><reason></reason></test>
<test id="built-ins/Promise/prototype/then/name.js"><reason></reason></test>
<test id="built-ins/Promise/prototype/then/on-fulfilled-return-thenable.js"><reason></reason></test>
<test id="built-ins/Promise/race/invoke-then.js"><reason></reason></test>
<test id="built-ins/Promise/race/name.js"><reason></reason></test>
<test id="built-ins/Promise/race/species-get-error.js"><reason></reason></test>
<test id="built-ins/Promise/reject/name.js"><reason></reason></test>
<test id="built-ins/Promise/resolve/name.js"><reason></reason></test>
<test id="built-ins/Promise/symbol-species-name.js"><reason></reason></test>
<test id="built-ins/Proxy/enumerate/call-parameters.js"><reason></reason></test>
<test id="built-ins/Proxy/enumerate/return-is-abrupt.js"><reason></reason></test>
<test id="built-ins/Proxy/enumerate/return-trap-result.js"><reason></reason></test>
<test id="built-ins/Proxy/enumerate/return-trap-result-no-value.js"><reason></reason></test>
<test id="built-ins/Proxy/enumerate/trap-is-undefined.js"><reason></reason></test>
<test id="built-ins/Proxy/getOwnPropertyDescriptor/trap-is-undefined.js"><reason></reason></test>
<test id="built-ins/Proxy/name.js"><reason></reason></test>
<test id="built-ins/Reflect/apply/name.js"><reason></reason></test>
<test id="built-ins/Reflect/construct/name.js"><reason></reason></test>
<test id="built-ins/Reflect/defineProperty/name.js"><reason></reason></test>
<test id="built-ins/Reflect/deleteProperty/name.js"><reason></reason></test>
<test id="built-ins/Reflect/enumerate/does-not-iterate-over-symbol-properties.js"><reason></reason></test>
<test id="built-ins/Reflect/enumerate/enumerate.js"><reason></reason></test>
<test id="built-ins/Reflect/enumerate/length.js"><reason></reason></test>
<test id="built-ins/Reflect/enumerate/name.js"><reason></reason></test>
<test id="built-ins/Reflect/enumerate/return-abrupt-from-result.js"><reason></reason></test>
<test id="built-ins/Reflect/enumerate/return-iterator.js"><reason></reason></test>
<test id="built-ins/Reflect/get/name.js"><reason></reason></test>
<test id="built-ins/Reflect/getOwnPropertyDescriptor/name.js"><reason></reason></test>
<test id="built-ins/Reflect/getPrototypeOf/name.js"><reason></reason></test>
<test id="built-ins/Reflect/has/name.js"><reason></reason></test>
<test id="built-ins/Reflect/isExtensible/name.js"><reason></reason></test>
<test id="built-ins/Reflect/ownKeys/name.js"><reason></reason></test>
<test id="built-ins/Reflect/preventExtensions/name.js"><reason></reason></test>
<test id="built-ins/Reflect/set/name.js"><reason></reason></test>
<test id="built-ins/Reflect/setPrototypeOf/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/exec/get-sticky-coerce.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/exec/get-sticky-err.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/flags/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/global/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/ignoreCase/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/multiline/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/source/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/sticky/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.match/builtin-coerce-global.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.match/builtin-coerce-lastindex-err.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.match/builtin-coerce-sticky.js"><reason></reason></test>
@@ -198,11 +134,9 @@
<test id="built-ins/RegExp/prototype/Symbol.match/coerce-global.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.match/coerce-sticky.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.match/get-sticky-err.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.match/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.replace/coerce-global.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.replace/coerce-unicode.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.replace/get-sticky-coerce.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.replace/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.replace/y-fail-global-return.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex-no-write.js"><reason></reason></test>
@@ -210,27 +144,10 @@
<test id="built-ins/RegExp/prototype/Symbol.replace/y-set-lastindex.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.search/get-sticky-coerce.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.search/get-sticky-err.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.search/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/Symbol.split/name.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/test/get-sticky-err.js"><reason></reason></test>
<test id="built-ins/RegExp/prototype/unicode/name.js"><reason></reason></test>
<test id="built-ins/RegExp/symbol-species-name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/add/name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/clear/name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/delete/name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/entries/name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/forEach/name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/has/name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/keys/keys.js"><reason></reason></test>
<test id="built-ins/Set/prototype/size/name.js"><reason></reason></test>
<test id="built-ins/Set/prototype/size/size.js"><reason></reason></test>
<test id="built-ins/Set/prototype/Symbol.iterator.js"><reason></reason></test>
<test id="built-ins/Set/prototype/values/name.js"><reason></reason></test>
<test id="built-ins/Set/symbol-species-name.js"><reason></reason></test>
<test id="built-ins/String/fromCodePoint/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/codePointAt/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/endsWith/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/includes/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/normalize/form-is-not-valid-throws.js"><reason></reason></test>
<test id="built-ins/String/prototype/normalize/length.js"><reason></reason></test>
<test id="built-ins/String/prototype/normalize/name.js"><reason></reason></test>
@@ -240,30 +157,17 @@
<test id="built-ins/String/prototype/normalize/return-normalized-string-from-coerced-form.js"><reason></reason></test>
<test id="built-ins/String/prototype/normalize/return-normalized-string.js"><reason></reason></test>
<test id="built-ins/String/prototype/normalize/return-normalized-string-using-default-parameter.js"><reason></reason></test>
<test id="built-ins/String/prototype/repeat/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/S15.5.4_A1.js"><reason></reason></test>
<test id="built-ins/String/prototype/S15.5.4_A2.js"><reason></reason></test>
<test id="built-ins/String/prototype/S15.5.4_A3.js"><reason></reason></test>
<test id="built-ins/String/prototype/split/S15.5.4.14_A2_T37.js"><reason></reason></test>
<test id="built-ins/String/prototype/startsWith/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/Symbol.iterator/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/toLocaleLowerCase/special_casing_conditional.js"><reason></reason></test>
<test id="built-ins/String/prototype/toLocaleLowerCase/supplementary_plane.js"><reason></reason></test>
<test id="built-ins/String/prototype/toLocaleUpperCase/supplementary_plane.js"><reason></reason></test>
<test id="built-ins/String/prototype/toLowerCase/special_casing_conditional.js"><reason></reason></test>
<test id="built-ins/String/prototype/toLowerCase/supplementary_plane.js"><reason></reason></test>
<test id="built-ins/String/prototype/toUpperCase/supplementary_plane.js"><reason></reason></test>
<test id="built-ins/String/raw/name.js"><reason></reason></test>
<test id="built-ins/Symbol/prototype/Symbol.toPrimitive/length.js"><reason></reason></test>
<test id="built-ins/Symbol/prototype/Symbol.toPrimitive/name.js"><reason></reason></test>
<test id="built-ins/Symbol/species/builtin-getter-name.js"><reason></reason></test>
<test id="built-ins/WeakMap/prototype/delete/name.js"><reason></reason></test>
<test id="built-ins/WeakMap/prototype/get/name.js"><reason></reason></test>
<test id="built-ins/WeakMap/prototype/has/name.js"><reason></reason></test>
<test id="built-ins/WeakMap/prototype/set/name.js"><reason></reason></test>
<test id="built-ins/WeakSet/prototype/add/name.js"><reason></reason></test>
<test id="built-ins/WeakSet/prototype/delete/name.js"><reason></reason></test>
<test id="built-ins/WeakSet/prototype/has/name.js"><reason></reason></test>
<test id="intl402/6.2.2_a.js"><reason></reason></test>
<test id="intl402/6.2.2_b.js"><reason></reason></test>
<test id="intl402/6.2.2_c.js"><reason></reason></test>
@@ -459,7 +363,6 @@
<test id="language/expressions/compound-assignment/S11.13.2_A7.9_T4.js"><reason></reason></test>
<test id="language/expressions/equals/coerce-symbol-to-prim-return-prim.js"><reason></reason></test>
<test id="language/expressions/generators/has-instance.js"><reason></reason></test>
<test id="language/expressions/generators/no-name.js"><reason></reason></test>
<test id="language/expressions/generators/prototype-value.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/generator-invoke-ctor.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/generator-super-prop-body.js"><reason></reason></test>