[es6] Function length property should be configurable
ES6 specs the function length property (it was not part of ES5) and it makes it configurable. BUG=v8:3045 LOG=N R=mstarzinger@chromium.org, adamk@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/993073002 Cr-Commit-Position: refs/heads/master@{#27190}
This commit is contained in:
parent
a8289230a3
commit
e625844648
@ -1095,12 +1095,52 @@ void Accessors::FunctionLengthGetter(
|
||||
}
|
||||
|
||||
|
||||
MUST_USE_RESULT static MaybeHandle<Object> ReplaceAccessorWithDataProperty(
|
||||
Isolate* isolate, Handle<JSObject> object, Handle<Name> name,
|
||||
Handle<Object> value, bool is_observed, Handle<Object> old_value) {
|
||||
LookupIterator it(object, name);
|
||||
CHECK_EQ(LookupIterator::ACCESSOR, it.state());
|
||||
DCHECK(it.HolderIsReceiverOrHiddenPrototype());
|
||||
it.ReconfigureDataProperty(value, it.property_details().attributes());
|
||||
value = it.WriteDataValue(value);
|
||||
|
||||
if (is_observed && !old_value->SameValue(*value)) {
|
||||
return JSObject::EnqueueChangeRecord(object, "update", name, old_value);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
MUST_USE_RESULT static MaybeHandle<Object> SetFunctionLength(
|
||||
Isolate* isolate, Handle<JSFunction> function, Handle<Object> value) {
|
||||
Handle<Object> old_value;
|
||||
bool is_observed = function->map()->is_observed();
|
||||
if (is_observed) {
|
||||
old_value = handle(Smi::FromInt(function->shared()->length()), isolate);
|
||||
}
|
||||
|
||||
return ReplaceAccessorWithDataProperty(isolate, function,
|
||||
isolate->factory()->length_string(),
|
||||
value, is_observed, old_value);
|
||||
}
|
||||
|
||||
|
||||
void Accessors::FunctionLengthSetter(
|
||||
v8::Local<v8::Name> name,
|
||||
v8::Local<v8::Value> val,
|
||||
const v8::PropertyCallbackInfo<void>& info) {
|
||||
// Function length is non writable, non configurable.
|
||||
UNREACHABLE();
|
||||
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
|
||||
HandleScope scope(isolate);
|
||||
Handle<Object> value = Utils::OpenHandle(*val);
|
||||
|
||||
if (SetPropertyOnInstanceIfInherited(isolate, info, name, value)) return;
|
||||
|
||||
Handle<JSFunction> object =
|
||||
Handle<JSFunction>::cast(Utils::OpenHandle(*info.Holder()));
|
||||
if (SetFunctionLength(isolate, object, value).is_null()) {
|
||||
isolate->OptionalRescheduleException(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1139,18 +1179,9 @@ MUST_USE_RESULT static MaybeHandle<Object> SetFunctionName(
|
||||
old_value = handle(function->shared()->name(), isolate);
|
||||
}
|
||||
|
||||
Handle<Name> name = isolate->factory()->name_string();
|
||||
LookupIterator it(function, name);
|
||||
CHECK_EQ(LookupIterator::ACCESSOR, it.state());
|
||||
DCHECK(it.HolderIsReceiverOrHiddenPrototype());
|
||||
it.ReconfigureDataProperty(value, it.property_details().attributes());
|
||||
value = it.WriteDataValue(value);
|
||||
|
||||
if (is_observed && !old_value->SameValue(*value)) {
|
||||
return JSObject::EnqueueChangeRecord(function, "update", name, old_value);
|
||||
}
|
||||
|
||||
return value;
|
||||
return ReplaceAccessorWithDataProperty(isolate, function,
|
||||
isolate->factory()->name_string(),
|
||||
value, is_observed, old_value);
|
||||
}
|
||||
|
||||
|
||||
|
@ -388,10 +388,10 @@ void Genesis::SetFunctionInstanceDescriptor(
|
||||
static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY);
|
||||
|
||||
Handle<AccessorInfo> length =
|
||||
Accessors::FunctionLengthInfo(isolate(), ro_attribs);
|
||||
Accessors::FunctionLengthInfo(isolate(), roc_attribs);
|
||||
{ // Add length.
|
||||
AccessorConstantDescriptor d(Handle<Name>(Name::cast(length->name())),
|
||||
length, ro_attribs);
|
||||
length, roc_attribs);
|
||||
map->AppendDescriptor(&d);
|
||||
}
|
||||
Handle<AccessorInfo> name =
|
||||
@ -555,9 +555,9 @@ void Genesis::SetStrictFunctionInstanceDescriptor(
|
||||
function_mode == FUNCTION_WITH_READONLY_PROTOTYPE ||
|
||||
function_mode == FUNCTION_WITHOUT_PROTOTYPE);
|
||||
Handle<AccessorInfo> length =
|
||||
Accessors::FunctionLengthInfo(isolate(), ro_attribs);
|
||||
Accessors::FunctionLengthInfo(isolate(), roc_attribs);
|
||||
AccessorConstantDescriptor d(Handle<Name>(Name::cast(length->name())),
|
||||
length, ro_attribs);
|
||||
length, roc_attribs);
|
||||
map->AppendDescriptor(&d);
|
||||
}
|
||||
Handle<AccessorInfo> name =
|
||||
|
119
test/mjsunit/es6/function-length-configurable.js
Normal file
119
test/mjsunit/es6/function-length-configurable.js
Normal file
@ -0,0 +1,119 @@
|
||||
// Copyright 2015 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 getStrictF() {
|
||||
'use strict';
|
||||
return function f(x) {};
|
||||
}
|
||||
|
||||
|
||||
function getSloppyF() {
|
||||
return function f(x) {};
|
||||
}
|
||||
|
||||
|
||||
function getStrictGenerator() {
|
||||
'use strict';
|
||||
return function* f(x) {};
|
||||
}
|
||||
|
||||
|
||||
function getSloppyGenerator() {
|
||||
return function* f(x) {};
|
||||
}
|
||||
|
||||
|
||||
function test(testFunction) {
|
||||
testFunction(getStrictF());
|
||||
testFunction(getSloppyF());
|
||||
testFunction(getStrictGenerator());
|
||||
testFunction(getSloppyGenerator());
|
||||
}
|
||||
|
||||
|
||||
function testDescriptor(f) {
|
||||
var descr = Object.getOwnPropertyDescriptor(f, 'length');
|
||||
assertTrue(descr.configurable);
|
||||
assertFalse(descr.enumerable);
|
||||
assertEquals(1, descr.value);
|
||||
assertFalse(descr.writable);
|
||||
}
|
||||
test(testDescriptor);
|
||||
|
||||
|
||||
function testSet(f) {
|
||||
f.length = 2;
|
||||
assertEquals(1, f.length);
|
||||
}
|
||||
test(testSet);
|
||||
|
||||
|
||||
function testSetStrict(f) {
|
||||
'use strict';
|
||||
assertThrows(function() {
|
||||
f.length = 2;
|
||||
}, TypeError);
|
||||
}
|
||||
test(testSetStrict);
|
||||
|
||||
|
||||
function testReconfigureAsDataProperty(f) {
|
||||
Object.defineProperty(f, 'length', {
|
||||
value: 2,
|
||||
});
|
||||
assertEquals(2, f.length);
|
||||
Object.defineProperty(f, 'length', {
|
||||
writable: true
|
||||
});
|
||||
f.length = 3;
|
||||
assertEquals(3, f.length);
|
||||
|
||||
f.length = 42;
|
||||
assertEquals(42, f.length);
|
||||
}
|
||||
test(testReconfigureAsDataProperty);
|
||||
|
||||
|
||||
function testReconfigureAsAccessorProperty(f) {
|
||||
var length = 2;
|
||||
Object.defineProperty(f, 'length', {
|
||||
get: function() { return length; },
|
||||
set: function(v) { length = v; }
|
||||
});
|
||||
assertEquals(2, f.length);
|
||||
f.length = 3;
|
||||
assertEquals(3, f.length);
|
||||
}
|
||||
test(testReconfigureAsAccessorProperty);
|
||||
|
||||
|
||||
(function testSetOnInstance() {
|
||||
// This needs to come before testDelete below
|
||||
assertTrue(Function.prototype.hasOwnProperty('length'));
|
||||
|
||||
function f() {}
|
||||
delete f.length;
|
||||
assertEquals(0, f.length);
|
||||
|
||||
f.length = 42;
|
||||
assertEquals(0, f.length); // non writable prototype property.
|
||||
assertFalse(f.hasOwnProperty('length'));
|
||||
|
||||
Object.defineProperty(Function.prototype, 'length', {writable: true});
|
||||
|
||||
f.length = 123;
|
||||
assertTrue(f.hasOwnProperty('length'));
|
||||
assertEquals(123, f.length);
|
||||
})();
|
||||
|
||||
|
||||
(function testDelete() {
|
||||
function f(x) {}
|
||||
assertTrue(delete f.length);
|
||||
assertFalse(f.hasOwnProperty('length'));
|
||||
assertEquals(0, f.length);
|
||||
|
||||
assertTrue(delete Function.prototype.length);
|
||||
assertEquals(undefined, f.length);
|
||||
})();
|
@ -1143,7 +1143,8 @@ function blacklisted(obj, prop) {
|
||||
return (obj instanceof Int32Array && prop == 1) ||
|
||||
(obj instanceof Int32Array && prop === "length") ||
|
||||
(obj instanceof ArrayBuffer && prop == 1) ||
|
||||
(obj instanceof Function && prop === "name"); // Has its own test.
|
||||
(obj instanceof Function && prop === "name") || // Has its own test.
|
||||
(obj instanceof Function && prop === "length"); // Has its own test.
|
||||
}
|
||||
|
||||
for (var i in objects) for (var j in properties) {
|
||||
@ -1826,6 +1827,31 @@ for (var b1 = 0; b1 < 2; ++b1)
|
||||
})();
|
||||
|
||||
|
||||
(function TestFunctionLength() {
|
||||
reset();
|
||||
|
||||
function fun(x) {}
|
||||
Object.observe(fun, observer.callback);
|
||||
fun.length = 'x'; // No change. Not writable.
|
||||
Object.defineProperty(fun, 'length', {value: 'a'});
|
||||
Object.defineProperty(fun, 'length', {writable: true});
|
||||
fun.length = 'b';
|
||||
delete fun.length;
|
||||
fun.length = 'x'; // No change. Function.prototype.length is non writable
|
||||
Object.defineProperty(Function.prototype, 'length', {writable: true});
|
||||
fun.length = 'c';
|
||||
fun.length = 'c'; // Same, no update.
|
||||
Object.deliverChangeRecords(observer.callback);
|
||||
observer.assertCallbackRecords([
|
||||
{ object: fun, type: 'update', name: 'length', oldValue: 1 },
|
||||
{ object: fun, type: 'reconfigure', name: 'length'},
|
||||
{ object: fun, type: 'update', name: 'length', oldValue: 'a' },
|
||||
{ object: fun, type: 'delete', name: 'length', oldValue: 'b' },
|
||||
{ object: fun, type: 'add', name: 'length' },
|
||||
]);
|
||||
})();
|
||||
|
||||
|
||||
(function TestObserveInvalidAcceptMessage() {
|
||||
var ex;
|
||||
try {
|
||||
|
@ -82,7 +82,8 @@ assertThrows("Object.defineProperty(f, 'prototype', { value: {} })");
|
||||
|
||||
// Verify that non-configurability of other properties is respected, but
|
||||
// non-writability is ignored by Object.defineProperty().
|
||||
// name and length are configurable in ES6
|
||||
Object.defineProperty(f, 'name', { value: {} });
|
||||
assertThrows("Object.defineProperty(f, 'length', { value: {} })");
|
||||
Object.defineProperty(f, 'length', { value: {} });
|
||||
assertThrows("Object.defineProperty(f, 'caller', { value: {} })");
|
||||
assertThrows("Object.defineProperty(f, 'arguments', { value: {} })");
|
||||
|
@ -37,5 +37,5 @@ var desc = Object.getOwnPropertyDescriptor(foo, 'length');
|
||||
assertEquals(3, desc.value);
|
||||
assertFalse(desc.writable);
|
||||
assertFalse(desc.enumerable);
|
||||
assertFalse(desc.configurable);
|
||||
assertTrue(desc.configurable);
|
||||
assertThrows(function() { foo.length = 2; }, TypeError);
|
||||
|
@ -61,6 +61,19 @@
|
||||
# TODO(turbofan): Large switch statements crash.
|
||||
'js1_5/Regress/regress-398085-01': [PASS, NO_VARIANTS],
|
||||
|
||||
############################ INVALID TESTS #############################
|
||||
|
||||
# Function length properties are configurable in ES6
|
||||
'ecma/Array/15.4.4.3-1': [FAIL],
|
||||
'ecma/Array/15.4.4.4-1': [FAIL],
|
||||
'ecma/Array/15.4.4.4-2': [FAIL],
|
||||
'ecma/String/15.5.4.10-1': [FAIL],
|
||||
'ecma/String/15.5.4.11-1': [FAIL],
|
||||
'ecma/String/15.5.4.7-2': [FAIL],
|
||||
'ecma/String/15.5.4.8-1': [FAIL],
|
||||
'ecma/String/15.5.4.9-1': [FAIL],
|
||||
|
||||
|
||||
##################### SKIPPED TESTS #####################
|
||||
|
||||
# This test checks that we behave properly in an out-of-memory
|
||||
|
@ -174,6 +174,132 @@
|
||||
'es6/String.prototype.contains/String.prototype.contains_Success' : [FAIL_OK],
|
||||
'es6/String.prototype.contains/String.prototype.contains_SuccessNoLocation' : [FAIL_OK],
|
||||
|
||||
# Function length properties are configurable in ES6
|
||||
'ch11/11.4/11.4.1/11.4.1-5-a-28-s': [FAIL],
|
||||
'ch13/13.2/13.2-15-1': [FAIL],
|
||||
'ch15/15.1/15.1.2/15.1.2.1/S15.1.2.1_A4.2': [FAIL],
|
||||
'ch15/15.1/15.1.2/15.1.2.2/S15.1.2.2_A9.2': [FAIL],
|
||||
'ch15/15.1/15.1.2/15.1.2.3/S15.1.2.3_A7.2': [FAIL],
|
||||
'ch15/15.1/15.1.2/15.1.2.4/S15.1.2.4_A2.2': [FAIL],
|
||||
'ch15/15.1/15.1.2/15.1.2.5/S15.1.2.5_A2.2': [FAIL],
|
||||
'ch15/15.1/15.1.3/15.1.3.1/S15.1.3.1_A5.2': [FAIL],
|
||||
'ch15/15.1/15.1.3/15.1.3.2/S15.1.3.2_A5.2': [FAIL],
|
||||
'ch15/15.1/15.1.3/15.1.3.3/S15.1.3.3_A5.2': [FAIL],
|
||||
'ch15/15.1/15.1.3/15.1.3.4/S15.1.3.4_A5.2': [FAIL],
|
||||
'ch15/15.10/15.10.6/15.10.6.2/S15.10.6.2_A9': [FAIL],
|
||||
'ch15/15.10/15.10.6/15.10.6.3/S15.10.6.3_A9': [FAIL],
|
||||
'ch15/15.10/15.10.6/15.10.6.4/S15.10.6.4_A9': [FAIL],
|
||||
'ch15/15.2/15.2.3/15.2.3.3/15.2.3.3-4-186': [FAIL],
|
||||
'ch15/15.2/15.2.3/15.2.3.3/15.2.3.3-4-187': [FAIL],
|
||||
'ch15/15.2/15.2.3/15.2.3.3/15.2.3.3-4-191': [FAIL],
|
||||
'ch15/15.2/15.2.3/15.2.3.3/15.2.3.3-4-194': [FAIL],
|
||||
'ch15/15.2/15.2.3/15.2.3.3/15.2.3.3-4-201': [FAIL],
|
||||
'ch15/15.2/15.2.4/15.2.4.2/S15.2.4.2_A9': [FAIL],
|
||||
'ch15/15.2/15.2.4/15.2.4.3/S15.2.4.3_A9': [FAIL],
|
||||
'ch15/15.2/15.2.4/15.2.4.4/S15.2.4.4_A9': [FAIL],
|
||||
'ch15/15.2/15.2.4/15.2.4.5/S15.2.4.5_A9': [FAIL],
|
||||
'ch15/15.2/15.2.4/15.2.4.6/S15.2.4.6_A9': [FAIL],
|
||||
'ch15/15.2/15.2.4/15.2.4.7/S15.2.4.7_A9': [FAIL],
|
||||
'ch15/15.3/15.3.3/15.3.3.2/15.3.3.2-1': [FAIL],
|
||||
'ch15/15.3/15.3.4/15.3.4.2/S15.3.4.2_A9': [FAIL],
|
||||
'ch15/15.3/15.3.4/15.3.4.3/S15.3.4.3_A9': [FAIL],
|
||||
'ch15/15.3/15.3.4/15.3.4.4/S15.3.4.4_A9': [FAIL],
|
||||
'ch15/15.3/15.3.5/S15.3.5.1_A2_T1': [FAIL],
|
||||
'ch15/15.3/15.3.5/S15.3.5.1_A2_T2': [FAIL],
|
||||
'ch15/15.3/15.3.5/S15.3.5.1_A2_T3': [FAIL],
|
||||
'ch15/15.4/15.4.3/S15.4.3_A2.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.10/S15.4.4.10_A5.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.11/S15.4.4.11_A7.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.12/S15.4.4.12_A5.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.13/S15.4.4.13_A5.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.2/S15.4.4.2_A4.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.3/S15.4.4.3_A4.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.4/S15.4.4.4_A4.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.5/S15.4.4.5_A6.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.6/S15.4.4.6_A5.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.7/S15.4.4.7_A6.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.8/S15.4.4.8_A5.2': [FAIL],
|
||||
'ch15/15.4/15.4.4/15.4.4.9/S15.4.4.9_A5.2': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.10/S15.5.4.10_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.11/S15.5.4.11_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.12/S15.5.4.12_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.13/S15.5.4.13_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.14/S15.5.4.14_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.15/S15.5.4.15_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.16/S15.5.4.16_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.17/S15.5.4.17_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.18/S15.5.4.18_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.19/S15.5.4.19_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.4/S15.5.4.4_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.5/S15.5.4.5_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.6/S15.5.4.6_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.7/S15.5.4.7_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.8/S15.5.4.8_A9': [FAIL],
|
||||
'ch15/15.5/15.5.4/15.5.4.9/S15.5.4.9_A9': [FAIL],
|
||||
'ch15/15.9/15.9.4/15.9.4.2/S15.9.4.2_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.4/15.9.4.3/S15.9.4.3_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.1/S15.9.5.1_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.10/S15.9.5.10_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.11/S15.9.5.11_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.12/S15.9.5.12_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.13/S15.9.5.13_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.14/S15.9.5.14_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.15/S15.9.5.15_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.16/S15.9.5.16_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.17/S15.9.5.17_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.18/S15.9.5.18_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.19/S15.9.5.19_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.2/S15.9.5.2_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.20/S15.9.5.20_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.21/S15.9.5.21_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.22/S15.9.5.22_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.23/S15.9.5.23_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.24/S15.9.5.24_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.25/S15.9.5.25_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.26/S15.9.5.26_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.27/S15.9.5.27_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.28/S15.9.5.28_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.29/S15.9.5.29_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.3/S15.9.5.3_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.30/S15.9.5.30_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.31/S15.9.5.31_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.32/S15.9.5.32_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.33/S15.9.5.33_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.34/S15.9.5.34_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.35/S15.9.5.35_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.36/S15.9.5.36_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.37/S15.9.5.37_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.38/S15.9.5.38_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.39/S15.9.5.39_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.4/S15.9.5.4_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.40/S15.9.5.40_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.41/S15.9.5.41_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.42/S15.9.5.42_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.5/S15.9.5.5_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.6/S15.9.5.6_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.7/S15.9.5.7_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.8/S15.9.5.8_A3_T2': [FAIL],
|
||||
'ch15/15.9/15.9.5/15.9.5.9/S15.9.5.9_A3_T2': [FAIL],
|
||||
'intl402/ch10/10.1/10.1_L15': [FAIL],
|
||||
'intl402/ch10/10.2/10.2.2_L15': [FAIL],
|
||||
'intl402/ch10/10.3/10.3.2_1_a_L15': [FAIL],
|
||||
'intl402/ch10/10.3/10.3.2_L15': [FAIL],
|
||||
'intl402/ch10/10.3/10.3.3_L15': [FAIL],
|
||||
'intl402/ch11/11.1/11.1_L15': [FAIL],
|
||||
'intl402/ch11/11.2/11.2.2_L15': [FAIL],
|
||||
'intl402/ch11/11.3/11.3.2_1_a_L15': [FAIL],
|
||||
'intl402/ch11/11.3/11.3.2_L15': [FAIL],
|
||||
'intl402/ch11/11.3/11.3.3_L15': [FAIL],
|
||||
'intl402/ch12/12.1/12.1_L15': [FAIL],
|
||||
'intl402/ch12/12.2/12.2.2_L15': [FAIL],
|
||||
'intl402/ch12/12.3/12.3.2_1_a_L15': [FAIL],
|
||||
'intl402/ch12/12.3/12.3.2_L15': [FAIL],
|
||||
'intl402/ch12/12.3/12.3.3_L15': [FAIL],
|
||||
'intl402/ch13/13.1/13.1.1_L15': [FAIL],
|
||||
'intl402/ch13/13.2/13.2.1_L15': [FAIL],
|
||||
'intl402/ch13/13.3/13.3.1_L15': [FAIL],
|
||||
'intl402/ch13/13.3/13.3.2_L15': [FAIL],
|
||||
'intl402/ch13/13.3/13.3.3_L15': [FAIL],
|
||||
|
||||
############################ SKIPPED TESTS #############################
|
||||
|
||||
|
@ -62,6 +62,133 @@
|
||||
'11.1.5_4-4-d-3': [FAIL],
|
||||
'11.1.5_4-4-d-4': [FAIL],
|
||||
|
||||
# Function length properties are configurable in ES6
|
||||
'10.1_L15': [FAIL],
|
||||
'10.2.2_L15': [FAIL],
|
||||
'10.3.2_1_a_L15': [FAIL],
|
||||
'10.3.2_L15': [FAIL],
|
||||
'10.3.3_L15': [FAIL],
|
||||
'11.1_L15': [FAIL],
|
||||
'11.2.2_L15': [FAIL],
|
||||
'11.3.2_1_a_L15': [FAIL],
|
||||
'11.3.2_L15': [FAIL],
|
||||
'11.3.3_L15': [FAIL],
|
||||
'11.4.1-5-a-28-s': [FAIL],
|
||||
'12.1_L15': [FAIL],
|
||||
'12.2.2_L15': [FAIL],
|
||||
'12.3.2_1_a_L15': [FAIL],
|
||||
'12.3.2_L15': [FAIL],
|
||||
'12.3.3_L15': [FAIL],
|
||||
'13.1.1_L15': [FAIL],
|
||||
'13.2-15-1': [FAIL],
|
||||
'13.2.1_L15': [FAIL],
|
||||
'13.3.1_L15': [FAIL],
|
||||
'13.3.2_L15': [FAIL],
|
||||
'13.3.3_L15': [FAIL],
|
||||
'15.2.3.3-4-186': [FAIL],
|
||||
'15.2.3.3-4-187': [FAIL],
|
||||
'15.2.3.3-4-191': [FAIL],
|
||||
'15.2.3.3-4-194': [FAIL],
|
||||
'15.2.3.3-4-201': [FAIL],
|
||||
'15.3.3.2-1': [FAIL],
|
||||
'S15.1.2.1_A4.2': [FAIL],
|
||||
'S15.1.2.2_A9.2': [FAIL],
|
||||
'S15.1.2.3_A7.2': [FAIL],
|
||||
'S15.1.2.4_A2.2': [FAIL],
|
||||
'S15.1.2.5_A2.2': [FAIL],
|
||||
'S15.1.3.1_A5.2': [FAIL],
|
||||
'S15.1.3.2_A5.2': [FAIL],
|
||||
'S15.1.3.3_A5.2': [FAIL],
|
||||
'S15.1.3.4_A5.2': [FAIL],
|
||||
'S15.10.6.2_A9': [FAIL],
|
||||
'S15.10.6.3_A9': [FAIL],
|
||||
'S15.10.6.4_A9': [FAIL],
|
||||
'S15.2.4.2_A9': [FAIL],
|
||||
'S15.2.4.3_A9': [FAIL],
|
||||
'S15.2.4.4_A9': [FAIL],
|
||||
'S15.2.4.5_A9': [FAIL],
|
||||
'S15.2.4.6_A9': [FAIL],
|
||||
'S15.2.4.7_A9': [FAIL],
|
||||
'S15.3.4.2_A9': [FAIL],
|
||||
'S15.3.4.3_A9': [FAIL],
|
||||
'S15.3.4.4_A9': [FAIL],
|
||||
'S15.3.5.1_A2_T1': [FAIL],
|
||||
'S15.3.5.1_A2_T2': [FAIL],
|
||||
'S15.3.5.1_A2_T3': [FAIL],
|
||||
'S15.4.3_A2.2': [FAIL],
|
||||
'S15.4.4.10_A5.2': [FAIL],
|
||||
'S15.4.4.11_A7.2': [FAIL],
|
||||
'S15.4.4.12_A5.2': [FAIL],
|
||||
'S15.4.4.13_A5.2': [FAIL],
|
||||
'S15.4.4.2_A4.2': [FAIL],
|
||||
'S15.4.4.3_A4.2': [FAIL],
|
||||
'S15.4.4.4_A4.2': [FAIL],
|
||||
'S15.4.4.5_A6.2': [FAIL],
|
||||
'S15.4.4.6_A5.2': [FAIL],
|
||||
'S15.4.4.7_A6.2': [FAIL],
|
||||
'S15.4.4.8_A5.2': [FAIL],
|
||||
'S15.4.4.9_A5.2': [FAIL],
|
||||
'S15.5.4.10_A9': [FAIL],
|
||||
'S15.5.4.11_A9': [FAIL],
|
||||
'S15.5.4.12_A9': [FAIL],
|
||||
'S15.5.4.13_A9': [FAIL],
|
||||
'S15.5.4.14_A9': [FAIL],
|
||||
'S15.5.4.15_A9': [FAIL],
|
||||
'S15.5.4.16_A9': [FAIL],
|
||||
'S15.5.4.17_A9': [FAIL],
|
||||
'S15.5.4.18_A9': [FAIL],
|
||||
'S15.5.4.19_A9': [FAIL],
|
||||
'S15.5.4.4_A9': [FAIL],
|
||||
'S15.5.4.5_A9': [FAIL],
|
||||
'S15.5.4.6_A9': [FAIL],
|
||||
'S15.5.4.7_A9': [FAIL],
|
||||
'S15.5.4.8_A9': [FAIL],
|
||||
'S15.5.4.9_A9': [FAIL],
|
||||
'S15.9.4.2_A3_T2': [FAIL],
|
||||
'S15.9.4.3_A3_T2': [FAIL],
|
||||
'S15.9.5.10_A3_T2': [FAIL],
|
||||
'S15.9.5.11_A3_T2': [FAIL],
|
||||
'S15.9.5.12_A3_T2': [FAIL],
|
||||
'S15.9.5.13_A3_T2': [FAIL],
|
||||
'S15.9.5.14_A3_T2': [FAIL],
|
||||
'S15.9.5.15_A3_T2': [FAIL],
|
||||
'S15.9.5.16_A3_T2': [FAIL],
|
||||
'S15.9.5.17_A3_T2': [FAIL],
|
||||
'S15.9.5.18_A3_T2': [FAIL],
|
||||
'S15.9.5.19_A3_T2': [FAIL],
|
||||
'S15.9.5.1_A3_T2': [FAIL],
|
||||
'S15.9.5.20_A3_T2': [FAIL],
|
||||
'S15.9.5.21_A3_T2': [FAIL],
|
||||
'S15.9.5.22_A3_T2': [FAIL],
|
||||
'S15.9.5.23_A3_T2': [FAIL],
|
||||
'S15.9.5.24_A3_T2': [FAIL],
|
||||
'S15.9.5.25_A3_T2': [FAIL],
|
||||
'S15.9.5.26_A3_T2': [FAIL],
|
||||
'S15.9.5.27_A3_T2': [FAIL],
|
||||
'S15.9.5.28_A3_T2': [FAIL],
|
||||
'S15.9.5.29_A3_T2': [FAIL],
|
||||
'S15.9.5.2_A3_T2': [FAIL],
|
||||
'S15.9.5.30_A3_T2': [FAIL],
|
||||
'S15.9.5.31_A3_T2': [FAIL],
|
||||
'S15.9.5.32_A3_T2': [FAIL],
|
||||
'S15.9.5.33_A3_T2': [FAIL],
|
||||
'S15.9.5.34_A3_T2': [FAIL],
|
||||
'S15.9.5.35_A3_T2': [FAIL],
|
||||
'S15.9.5.36_A3_T2': [FAIL],
|
||||
'S15.9.5.37_A3_T2': [FAIL],
|
||||
'S15.9.5.38_A3_T2': [FAIL],
|
||||
'S15.9.5.39_A3_T2': [FAIL],
|
||||
'S15.9.5.3_A3_T2': [FAIL],
|
||||
'S15.9.5.40_A3_T2': [FAIL],
|
||||
'S15.9.5.41_A3_T2': [FAIL],
|
||||
'S15.9.5.42_A3_T2': [FAIL],
|
||||
'S15.9.5.4_A3_T2': [FAIL],
|
||||
'S15.9.5.5_A3_T2': [FAIL],
|
||||
'S15.9.5.6_A3_T2': [FAIL],
|
||||
'S15.9.5.7_A3_T2': [FAIL],
|
||||
'S15.9.5.8_A3_T2': [FAIL],
|
||||
'S15.9.5.9_A3_T2': [FAIL],
|
||||
|
||||
######################## NEEDS INVESTIGATION ###########################
|
||||
|
||||
# These test failures are specific to the intl402 suite and need investigation
|
||||
|
@ -39,7 +39,7 @@ PASS Array.prototype.length is 6
|
||||
PASS Function.prototype.length is 0
|
||||
PASS String.prototype.length is 0
|
||||
PASS delete Array.prototype.length is false
|
||||
PASS delete Function.prototype.length is false
|
||||
PASS delete Function.prototype.length is true
|
||||
PASS delete String.prototype.length is false
|
||||
PASS foundArrayPrototypeLength is false
|
||||
PASS foundFunctionPrototypeLength is false
|
||||
|
2
test/webkit/fast/js/kde/prototype_length.js
vendored
2
test/webkit/fast/js/kde/prototype_length.js
vendored
@ -43,7 +43,7 @@ shouldBe("String.prototype.length","0");
|
||||
|
||||
// check DontDelete
|
||||
shouldBe("delete Array.prototype.length","false");
|
||||
shouldBe("delete Function.prototype.length","false");
|
||||
shouldBe("delete Function.prototype.length","true");
|
||||
shouldBe("delete String.prototype.length","false");
|
||||
|
||||
// check DontEnum
|
||||
|
Loading…
Reference in New Issue
Block a user