Changeset 197205 in webkit


Ignore:
Timestamp:
Feb 26, 2016 2:29:59 PM (8 years ago)
Author:
mark.lam@apple.com
Message:

Function.name and Function.length should be configurable.
https://bugs.webkit.org/show_bug.cgi?id=154604

Reviewed by Saam Barati.

Source/JavaScriptCore:

According to https://tc39.github.io/ecma262/#sec-ecmascript-language-functions-and-classes,
"Unless otherwise specified, the name property of a built-in Function object,
if it exists, has the attributes { Writable?: false, Enumerable?: false,
Configurable?: true }."

Similarly, "the length property of a built-in Function object has the attributes
{ Writable?: false, Enumerable?: false, Configurable?: true }."

This patch makes Function.name and Function.length configurable.

We do this by lazily reifying the JSFunction name and length properties on first
access. We track whether each of these properties have been reified using flags
in the FunctionRareData. On first access, if not already reified, we will put
the property into the object with its default value and attributes and set the
reified flag. Thereafter, we rely on the base JSObject to handle access to the
property.

Also, lots of test results have to be re-baselined because the old Function.length
has attribute DontDelete, which is in conflict with the ES6 requirement that it
is configurable.

  • runtime/FunctionRareData.h:

(JSC::FunctionRareData::hasReifiedLength):
(JSC::FunctionRareData::setHasReifiedLength):
(JSC::FunctionRareData::hasReifiedName):
(JSC::FunctionRareData::setHasReifiedName):

  • Flags for tracking whether each property has been reified.
  • runtime/JSFunction.cpp:

(JSC::JSFunction::finishCreation):
(JSC::JSFunction::createBuiltinFunction):

  • Host and builtin functions currently always reify their name and length properties. Currently, for builtins, the default names that are used may differ from the executable name. For now, we'll stay with keeping this alternate approach to getting the name and length properties for host and builtin functions. However, we need their default attribute to be configurable as well.

(JSC::JSFunction::getOwnPropertySlot):
(JSC::JSFunction::getOwnNonIndexPropertyNames):
(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):
(JSC::JSFunction::reifyLength):
(JSC::JSFunction::reifyName):
(JSC::JSFunction::reifyLazyPropertyIfNeeded):
(JSC::JSFunction::lengthGetter): Deleted.
(JSC::JSFunction::nameGetter): Deleted.

  • runtime/JSFunction.h:
  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::hasReifiedLength):
(JSC::JSFunction::hasReifiedName):

  • tests/es6.yaml:
  • 4 new passing tests.
  • tests/mozilla/ecma/Array/15.4.4.3-1.js:
  • tests/mozilla/ecma/Array/15.4.4.4-1.js:
  • tests/mozilla/ecma/Array/15.4.4.4-2.js:
  • tests/mozilla/ecma/GlobalObject/15.1.2.1-1.js:
  • tests/mozilla/ecma/GlobalObject/15.1.2.2-1.js:
  • tests/mozilla/ecma/GlobalObject/15.1.2.3-1.js:
  • tests/mozilla/ecma/GlobalObject/15.1.2.4.js:
  • tests/mozilla/ecma/GlobalObject/15.1.2.5-1.js:
  • tests/mozilla/ecma/GlobalObject/15.1.2.6.js:
  • tests/mozilla/ecma/GlobalObject/15.1.2.7.js:
  • tests/mozilla/ecma/String/15.5.4.10-1.js:
  • tests/mozilla/ecma/String/15.5.4.11-1.js:
  • tests/mozilla/ecma/String/15.5.4.11-5.js:
  • tests/mozilla/ecma/String/15.5.4.12-1.js:
  • tests/mozilla/ecma/String/15.5.4.6-2.js:
  • tests/mozilla/ecma/String/15.5.4.7-2.js:
  • tests/mozilla/ecma/String/15.5.4.8-1.js:
  • tests/mozilla/ecma/String/15.5.4.9-1.js:
  • Rebase expected test results.
  • tests/stress/function-configurable-properties.js: Added.

LayoutTests:

  • ietestcenter/Javascript/TestCases/15.2.3.3-4-187.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.3.4.5-15-2.js:

(ES5Harness.registerTest.test):

  • js/dom/function-name-expected.txt:
  • js/dom/getOwnPropertyDescriptor-expected.txt:
  • js/dom/script-tests/function-name.js:
  • js/mozilla/strict/15.3.5.1-expected.txt:
  • js/mozilla/strict/function-name-arity-expected.txt:
  • js/mozilla/strict/script-tests/15.3.5.1.js:
  • js/mozilla/strict/script-tests/function-name-arity.js:
  • js/resources/getOwnPropertyDescriptor.js:
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.1_eval/S15.1.2.1_A4.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.2_parseInt/S15.1.2.2_A9.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.3_parseFloat/S15.1.2.3_A7.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.4_isNaN/S15.1.2.4_A2.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.5_isFinite/S15.1.2.5_A2.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.1_decodeURI/S15.1.3.1_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.3_encodeURI/S15.1.3.3_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.2_Object.prototype.toString/S15.2.4.2_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.2_Function.prototype.toString/S15.3.4.2_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.3_Function.prototype.apply/S15.3.4.3_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.4_Function.prototype.call/S15.3.4.4_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T1.html:
  • sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T3.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.2.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.11_String.prototype.replace/S15.5.4.11_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.13_String.prototype.slice/S15.5.4.13_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.14_String.prototype.split/S15.5.4.14_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.15_String.prototype.substring/S15.5.4.15_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.4_String.prototype.charAt/S15.5.4.4_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.6_String.prototype.concat/S15.5.4.6_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A9.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.4/15.9.4.2_Date.parse/S15.9.4.2_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.4/15.9.4.3_Date.UTC/S15.9.4.3_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T2.html:
Location:
trunk
Files:
1 added
130 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r197201 r197205  
     12016-02-26  Mark Lam  <mark.lam@apple.com>
     2
     3        Function.name and Function.length should be configurable.
     4        https://bugs.webkit.org/show_bug.cgi?id=154604
     5
     6        Reviewed by Saam Barati.
     7
     8        * ietestcenter/Javascript/TestCases/15.2.3.3-4-187.js:
     9        (ES5Harness.registerTest.test):
     10        * ietestcenter/Javascript/TestCases/15.3.4.5-15-2.js:
     11        (ES5Harness.registerTest.test):
     12        * js/dom/function-name-expected.txt:
     13        * js/dom/getOwnPropertyDescriptor-expected.txt:
     14        * js/dom/script-tests/function-name.js:
     15        * js/mozilla/strict/15.3.5.1-expected.txt:
     16        * js/mozilla/strict/function-name-arity-expected.txt:
     17        * js/mozilla/strict/script-tests/15.3.5.1.js:
     18        * js/mozilla/strict/script-tests/function-name-arity.js:
     19        * js/resources/getOwnPropertyDescriptor.js:
     20        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A9.html:
     21        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A9.html:
     22        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A9.html:
     23        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.1_eval/S15.1.2.1_A4.2.html:
     24        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.2_parseInt/S15.1.2.2_A9.2.html:
     25        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.3_parseFloat/S15.1.2.3_A7.2.html:
     26        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.4_isNaN/S15.1.2.4_A2.2.html:
     27        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.5_isFinite/S15.1.2.5_A2.2.html:
     28        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.1_decodeURI/S15.1.3.1_A5.2.html:
     29        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.2.html:
     30        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.3_encodeURI/S15.1.3.3_A5.2.html:
     31        * sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.2.html:
     32        * sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.2_Object.prototype.toString/S15.2.4.2_A9.html:
     33        * sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A9.html:
     34        * sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A9.html:
     35        * sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A9.html:
     36        * sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A9.html:
     37        * sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A9.html:
     38        * sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.2_Function.prototype.toString/S15.3.4.2_A9.html:
     39        * sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.3_Function.prototype.apply/S15.3.4.3_A9.html:
     40        * sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.4_Function.prototype.call/S15.3.4.4_A9.html:
     41        * sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T1.html:
     42        * sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T2.html:
     43        * sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T3.html:
     44        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.2.html:
     45        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.2.html:
     46        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.2.html:
     47        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.2.html:
     48        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.2.html:
     49        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.2.html:
     50        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.2.html:
     51        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.2.html:
     52        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.2.html:
     53        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.2.html:
     54        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.2.html:
     55        * sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.2.html:
     56        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A9.html:
     57        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.11_String.prototype.replace/S15.5.4.11_A9.html:
     58        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A9.html:
     59        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.13_String.prototype.slice/S15.5.4.13_A9.html:
     60        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.14_String.prototype.split/S15.5.4.14_A9.html:
     61        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.15_String.prototype.substring/S15.5.4.15_A9.html:
     62        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A9.html:
     63        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A9.html:
     64        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A9.html:
     65        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A9.html:
     66        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.4_String.prototype.charAt/S15.5.4.4_A9.html:
     67        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A9.html:
     68        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.6_String.prototype.concat/S15.5.4.6_A9.html:
     69        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A9.html:
     70        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A9.html:
     71        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A9.html:
     72        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.4/15.9.4.2_Date.parse/S15.9.4.2_A3_T2.html:
     73        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.4/15.9.4.3_Date.UTC/S15.9.4.3_A3_T2.html:
     74        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T2.html:
     75        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T2.html:
     76        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T2.html:
     77        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T2.html:
     78        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T2.html:
     79        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T2.html:
     80        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T2.html:
     81        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T2.html:
     82        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T2.html:
     83        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T2.html:
     84        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T2.html:
     85        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T2.html:
     86        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T2.html:
     87        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T2.html:
     88        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T2.html:
     89        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T2.html:
     90        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T2.html:
     91        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T2.html:
     92        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T2.html:
     93        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T2.html:
     94        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T2.html:
     95        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T2.html:
     96        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T2.html:
     97        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T2.html:
     98        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T2.html:
     99        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T2.html:
     100        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T2.html:
     101        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T2.html:
     102        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T2.html:
     103        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T2.html:
     104        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T2.html:
     105        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T2.html:
     106        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T2.html:
     107        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T2.html:
     108        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T2.html:
     109        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T2.html:
     110        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T2.html:
     111        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T2.html:
     112        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T2.html:
     113        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T2.html:
     114        * sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T2.html:
     115
    11162016-02-26  Chris Dumez  <cdumez@apple.com>
    2117
  • trunk/LayoutTests/ietestcenter/Javascript/TestCases/15.2.3.3-4-187.js

    r62810 r197205  
    3434  if (desc.writable === false &&
    3535      desc.enumerable === false &&
    36       desc.configurable === false &&
     36      desc.configurable === true &&
    3737      desc.hasOwnProperty('get') === false &&
    3838      desc.hasOwnProperty('set') === false) {
  • trunk/LayoutTests/ietestcenter/Javascript/TestCases/15.3.4.5-15-2.js

    r62810 r197205  
    3636      desc.enumerable === false &&
    3737      desc.writable === false &&
    38       desc.configurable == false) {
     38      desc.configurable == true) {
    3939    return true;
    4040  }
  • trunk/LayoutTests/js/dom/function-name-expected.txt

    r156066 r197205  
    55
    66PASS (function f() {}).name is 'f'
    7 PASS delete (function f() {}).name is false
     7PASS delete (function f() {}).name is true
    88PASS (function() {}).name is ''
    99PASS Math.name is undefined
  • trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt

    r196145 r197205  
    8484PASS Object.getOwnPropertyDescriptor(function(){}, 'length').hasOwnProperty('set') is false
    8585PASS Object.getOwnPropertyDescriptor(function(){}, 'length').enumerable is false
    86 PASS Object.getOwnPropertyDescriptor(function(){}, 'length').configurable is false
     86PASS Object.getOwnPropertyDescriptor(function(){}, 'length').configurable is true
    8787PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').value is 1
    8888PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').hasOwnProperty('get') is false
    8989PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').hasOwnProperty('set') is false
    9090PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').enumerable is false
    91 PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').configurable is false
     91PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').configurable is true
    9292PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').value is 'sin'
    9393PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').hasOwnProperty('get') is false
    9494PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').hasOwnProperty('set') is false
    9595PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').enumerable is false
    96 PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').configurable is false
     96PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').configurable is true
    9797PASS Object.getOwnPropertyDescriptor(global, 'global').value is global
    9898PASS Object.getOwnPropertyDescriptor(global, 'global').hasOwnProperty('get') is false
  • trunk/LayoutTests/js/dom/script-tests/function-name.js

    r156066 r197205  
    44
    55shouldBe("(function f() {}).name", "'f'");
    6 shouldBe("delete (function f() {}).name", "false");
     6shouldBe("delete (function f() {}).name", "true");
    77shouldBe("(function() {}).name", "''");
    88shouldBe("Math.name", "undefined");
  • trunk/LayoutTests/js/mozilla/strict/15.3.5.1-expected.txt

    r109949 r197205  
    22PASS var f = fn(); f.length = 1; f.length is 3
    33PASS true === true
    4 PASS 'use strict'; var f = fn(); delete f.length threw exception of type TypeError.
    5 PASS var f = fn(); delete f.length is false
     4PASS 'use strict'; var f = fn(); delete f.length is true
     5PASS var f = fn(); delete f.length is true
    66PASS true === true
    77 PASSED!
  • trunk/LayoutTests/js/mozilla/strict/function-name-arity-expected.txt

    r109489 r197205  
    22PASS var f = fn(); f.name = "g"; f.name is "f"
    33PASS true === true
    4 PASS 'use strict'; var f = fn(); delete f.name threw exception of type TypeError.
    5 PASS var f = fn(); delete f.name is false
     4PASS 'use strict'; var f = fn(); delete f.name is true
     5PASS var f = fn(); delete f.name is true
    66PASS true === true
    77PASS 'use strict'; var f = fn(); f.arity = 4; f.arity is 4
  • trunk/LayoutTests/js/mozilla/strict/script-tests/15.3.5.1.js

    r78731 r197205  
    1414         true);
    1515assertEq(testLenientAndStrict('var f = fn(); delete f.length',
    16                               returns(false), raisesException(TypeError)),
     16                              returns(true), returns(true)),
    1717         true);
    1818
  • trunk/LayoutTests/js/mozilla/strict/script-tests/function-name-arity.js

    r109489 r197205  
    1414         true);
    1515assertEq(testLenientAndStrict('var f = fn(); delete f.name',
    16                               returns(false), raisesException(TypeError)),
     16                              returns(true), returns(true)),
    1717         true);
    1818
  • trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js

    r196145 r197205  
    3434descriptorShouldBe("/(a)*/g.exec('a')", "0", {writable: true, enumerable: true, configurable: true, value:"'a'"});
    3535descriptorShouldBe("/(a)*/g.exec('a')", "'length'", {writable: true, enumerable: false, configurable: false, value:2});
    36 descriptorShouldBe("function(){}", "'length'", {writable: false, enumerable: false, configurable: false, value:0});
    37 descriptorShouldBe("Math.sin", "'length'", {writable: false, enumerable: false, configurable: false, value:1});
    38 descriptorShouldBe("Math.sin", "'name'", {writable: false, enumerable: false, configurable: false, value:"'sin'"});
     36descriptorShouldBe("function(){}", "'length'", {writable: false, enumerable: false, configurable: true, value:0});
     37descriptorShouldBe("Math.sin", "'length'", {writable: false, enumerable: false, configurable: true, value:1});
     38descriptorShouldBe("Math.sin", "'name'", {writable: false, enumerable: false, configurable: true, value:"'sin'"});
    3939var global = this;
    4040descriptorShouldBe("global", "'global'", {writable: true, enumerable: true, configurable: false, value:"global"});
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A9.html

    r120489 r197205  
    6969* @name: S15.10.6.2_A9;
    7070* @section: 15.10.6.2;
    71 * @assertion: The RegExp.prototype.exec.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the RegExp.prototype.exec.length property fails;
     71* @assertion: The RegExp.prototype.exec.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the RegExp.prototype.exec.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete RegExp.prototype.exec.length !== false) {
    82   testFailed('#1: delete RegExp.prototype.exec.length === false');
     81if (delete RegExp.prototype.exec.length !== true) {
     82  testFailed('#1: delete RegExp.prototype.exec.length === true');
    8383}
    8484
    8585//CHECK#2
    86 if (RegExp.prototype.exec.hasOwnProperty('length') !== true) {
    87   testFailed('#2: delete RegExp.prototype.exec.length; RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
     86if (RegExp.prototype.exec.hasOwnProperty('length') !== false) {
     87  testFailed('#2: delete RegExp.prototype.exec.length; RegExp.prototype.exec.hasOwnProperty(\'length\') === false');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A9.html

    r120489 r197205  
    6969* @name: S15.10.6.3_A9;
    7070* @section: 15.10.6.3;
    71 * @assertion: The RegExp.prototype.test.length property has the attribute DontDelete;
    72 * @description: Checking if deleting RegExp.prototype.test.length property fails;
     71* @assertion: The RegExp.prototype.test.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting RegExp.prototype.test.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete RegExp.prototype.exec.length !== false) {
    82   testFailed('#1: delete RegExp.prototype.exec.length === false');
     81if (delete RegExp.prototype.exec.length !== true) {
     82  testFailed('#1: delete RegExp.prototype.exec.length === true');
    8383}
    8484
    8585//CHECK#2
    86 if (RegExp.prototype.exec.hasOwnProperty('length') !== true) {
    87   testFailed('#2: delete RegExp.prototype.exec.length; RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
     86if (RegExp.prototype.exec.hasOwnProperty('length') !== false) {
     87  testFailed('#2: delete RegExp.prototype.exec.length; RegExp.prototype.exec.hasOwnProperty(\'length\') === false');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A9.html

    r120489 r197205  
    6969* @name: S15.10.6.4_A9;
    7070* @section: 15.10.6.4;
    71 * @assertion: The RegExp.prototype.toString.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the RegExp.prototype.toString.length property fails;
     71* @assertion: The RegExp.prototype.toString.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the RegExp.prototype.toString.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete RegExp.prototype.toString.length !== false) {
    82         testFailed('#1: delete RegExp.prototype.toString.length === false');
     81if (delete RegExp.prototype.toString.length !== true) {
     82        testFailed('#1: delete RegExp.prototype.toString.length === true');
    8383}
    8484
    8585//CHECK#2
    86 if (RegExp.prototype.toString.hasOwnProperty('length') !== true) {
    87         testFailed('#2: delete RegExp.prototype.toString.length; RegExp.prototype.toString.hasOwnProperty(\'length\') === true');
     86if (RegExp.prototype.toString.hasOwnProperty('length') !== false) {
     87        testFailed('#2: delete RegExp.prototype.toString.length; RegExp.prototype.toString.hasOwnProperty(\'length\') === false');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.1_eval/S15.1.2.1_A4.2.html

    r120489 r197205  
    6969 * @name: S15.1.2.1_A4.2;
    7070 * @section: 15.1.2.1, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of eval has the attribute DontDelete;
     71 * @assertion: The length property of eval has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (eval.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete eval.length; eval.hasOwnProperty(\'length\') === true. Actual: ' + (eval.hasOwnProperty('length')));
     83if (eval.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete eval.length; eval.hasOwnProperty(\'length\') === false. Actual: ' + (eval.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (eval.length === undefined) {
    89   testFailed('#3: delete eval.length; eval.length !== undefined');
     88if (eval.length !== 0) {
     89  testFailed('#3: delete eval.length; eval.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.2_parseInt/S15.1.2.2_A9.2.html

    r120489 r197205  
    6969 * @name: S15.1.2.2_A9.2;
    7070 * @section: 15.1.2.2, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of parseInt has the attribute DontDelete;
     71 * @assertion: The length property of parseInt has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (parseInt.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete parseInt.length; parseInt.hasOwnProperty(\'length\') === true. Actual: ' + (parseInt.hasOwnProperty('length')));
     83if (parseInt.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete parseInt.length; parseInt.hasOwnProperty(\'length\') === false. Actual: ' + (parseInt.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (parseInt.length === undefined) {
    89   testFailed('#3: delete parseInt.length; parseInt.length !== undefined');
     88if (parseInt.length !== 0) {
     89  testFailed('#3: delete parseInt.length; parseInt.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.3_parseFloat/S15.1.2.3_A7.2.html

    r120489 r197205  
    6969 * @name: S15.1.2.3_A7.2;
    7070 * @section: 15.1.2.3, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of parseFloat has the attribute DontDelete;
     71 * @assertion: The length property of parseFloat has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (parseFloat.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete parseFloat.length; parseFloat.hasOwnProperty(\'length\') === true. Actual: ' + (parseFloat.hasOwnProperty('length')));
     83if (parseFloat.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete parseFloat.length; parseFloat.hasOwnProperty(\'length\') === false. Actual: ' + (parseFloat.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (parseFloat.length === undefined) {
    89   testFailed('#3: delete parseFloat.length; parseFloat.length !== undefined');
     88if (parseFloat.length !== 0) {
     89  testFailed('#3: delete parseFloat.length; parseFloat.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.4_isNaN/S15.1.2.4_A2.2.html

    r120489 r197205  
    6969 * @name: S15.1.2.4_A2.2;
    7070 * @section: 15.1.2.4, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of isNaN has the attribute DontDelete;
     71 * @assertion: The length property of isNaN has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (isNaN.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete isNaN.length; isNaN.hasOwnProperty(\'length\') === true. Actual: ' + (isNaN.hasOwnProperty('length')));
     83if (isNaN.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete isNaN.length; isNaN.hasOwnProperty(\'length\') === false. Actual: ' + (isNaN.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (isNaN.length === undefined) {
    89   testFailed('#3: delete isNaN.length; isNaN.length !== undefined');
     88if (isNaN.length !== 0) {
     89  testFailed('#3: delete isNaN.length; isNaN.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.2/15.1.2.5_isFinite/S15.1.2.5_A2.2.html

    r120489 r197205  
    6969 * @name: S15.1.2.5_A2.2;
    7070 * @section: 15.1.2.5, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of isFinite has the attribute DontDelete;
     71 * @assertion: The length property of isFinite has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (isFinite.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete isFinite.length; isFinite.hasOwnProperty(\'length\') === true. Actual: ' + (isFinite.hasOwnProperty('length')));
     83if (isFinite.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete isFinite.length; isFinite.hasOwnProperty(\'length\') === false. Actual: ' + (isFinite.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (isFinite.length === undefined) {
    89   testFailed('#3: delete isFinite.length; isFinite.length !== undefined');
     88if (isFinite.length !== 0) {
     89  testFailed('#3: delete isFinite.length; isFinite.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.1_decodeURI/S15.1.3.1_A5.2.html

    r120489 r197205  
    6969 * @name: S15.1.3.1_A5.2;
    7070 * @section: 15.1.3.1, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of decodeURI has the attribute DontDelete;
     71 * @assertion: The length property of decodeURI has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (decodeURI.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete decodeURI.length; decodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (decodeURI.hasOwnProperty('length')));
     83if (decodeURI.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete decodeURI.length; decodeURI.hasOwnProperty(\'length\') === false. Actual: ' + (decodeURI.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (decodeURI.length === undefined) {
    89   testFailed('#3: delete decodeURI.length; decodeURI.length !== undefined');
     88if (decodeURI.length !== 0) {
     89  testFailed('#3: delete decodeURI.length; decodeURI.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.2.html

    r120489 r197205  
    6969 * @name: S15.1.3.2_A5.2;
    7070 * @section: 15.1.3.2, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of decodeURIComponent has the attribute DontDelete;
     71 * @assertion: The length property of decodeURIComponent has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (decodeURIComponent.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete decodeURIComponent.length; decodeURIComponent.hasOwnProperty(\'length\') === true. Actual: ' + (decodeURIComponent.hasOwnProperty('length')));
     83if (decodeURIComponent.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete decodeURIComponent.length; decodeURIComponent.hasOwnProperty(\'length\') === false. Actual: ' + (decodeURIComponent.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (decodeURIComponent.length === undefined) {
    89   testFailed('#3: delete decodeURIComponent.length; decodeURIComponent.length !== undefined');
     88if (decodeURIComponent.length !== 0) {
     89  testFailed('#3: delete decodeURIComponent.length; decodeURIComponent.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.3_encodeURI/S15.1.3.3_A5.2.html

    r120489 r197205  
    6969 * @name: S15.1.3.3_A5.2;
    7070 * @section: 15.1.3.3, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of encodeURI has the attribute DontDelete;
     71 * @assertion: The length property of encodeURI has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (encodeURI.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete encodeURI.length; encodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURI.hasOwnProperty('length')));
     83if (encodeURI.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete encodeURI.length; encodeURI.hasOwnProperty(\'length\') === false. Actual: ' + (encodeURI.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (encodeURI.length === undefined) {
    89   testFailed('#3: delete encodeURI.length; encodeURI.length !== undefined');
     88if (encodeURI.length !== 0) {
     89  testFailed('#3: delete encodeURI.length; encodeURI.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.2.html

    r120489 r197205  
    6969 * @name: S15.1.3.4_A5.2;
    7070 * @section: 15.1.3.4, 15.2.4.5, 11.4.1;
    71  * @assertion: The length property of encodeURIComponent has the attribute DontDelete;
     71 * @assertion: The length property of encodeURIComponent has the attribute [[Configurable]]:true;
    7272 * @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (encodeURIComponent.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete encodeURIComponent.length; encodeURIComponent.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURIComponent.hasOwnProperty('length')));
     83if (encodeURIComponent.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete encodeURIComponent.length; encodeURIComponent.hasOwnProperty(\'length\') === false. Actual: ' + (encodeURIComponent.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (encodeURIComponent.length === undefined) {
    89   testFailed('#3: delete encodeURIComponent.length; encodeURIComponent.length !== undefined');
     88if (encodeURIComponent.length !== 0) {
     89  testFailed('#3: delete encodeURIComponent.length; encodeURIComponent.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.2_Object.prototype.toString/S15.2.4.2_A9.html

    r120489 r197205  
    6969* @name: S15.2.4.2_A9;
    7070* @section: 15.2.4.2;
    71 * @assertion: The Object.prototype.toString.length property has the attribute DontDelete;
    72 * @description: Checknig if deleting of the Object.prototype.toString.length property fails;
     71* @assertion: The Object.prototype.toString.length property has the attribute [[Configurable]]:true;
     72* @description: Checknig if deleting of the Object.prototype.toString.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Object.prototype.toString.length) {
    82   testFailed('#1: The Object.prototype.toString.length property has the attributes DontDelete');
     81if (!(delete Object.prototype.toString.length)) {
     82  testFailed('#1: The Object.prototype.toString.length property has the attribute [[Configurable]]:true');
    8383}
    8484
    8585//CHECK#2
    86 if (!(Object.prototype.toString.hasOwnProperty('length'))) {
    87   testFailed('#2: The Object.prototype.toString.length property has the attributes DontDelete');
     86if (Object.prototype.toString.hasOwnProperty('length')) {
     87  testFailed('#2: The Object.prototype.toString.length property has the attribute [[Configurable]]:true');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A9.html

    r120489 r197205  
    6969* @name: S15.2.4.3_A9;
    7070* @section: 15.2.4.3;
    71 * @assertion: The Object.prototype.toLocaleString.length property has the attribute DontDelete;
    72 * @description: Checknig if deleting of the Object.prototype.toLocaleString.length property fails;
     71* @assertion: The Object.prototype.toLocaleString.length property has the attribute [[Configurable]]:true;
     72* @description: Checknig if deleting of the Object.prototype.toLocaleString.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Object.prototype.toLocaleString.length) {
    82   testFailed('#1: The Object.prototype.toLocaleString.length property has the attributes DontDelete');
     81if (!(delete Object.prototype.toLocaleString.length)) {
     82  testFailed('#1: The Object.prototype.toLocaleString.length property has the attribute [[Configurable]]:true');
    8383}
    8484
    8585//CHECK#2
    86 if (!(Object.prototype.toLocaleString.hasOwnProperty('length'))) {
    87   testFailed('#2: The Object.prototype.toLocaleString.length property has the attributes DontDelete');
     86if (Object.prototype.toLocaleString.hasOwnProperty('length')) {
     87  testFailed('#2: The Object.prototype.toLocaleString.length property has the attribute [[Configurable]]:true');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A9.html

    r120489 r197205  
    6969* @name: S15.2.4.4_A9;
    7070* @section: 15.2.4.4;
    71 * @assertion: The Object.prototype.valueOf.length property has the attribute DontDelete;
    72 * @description: Checknig if deleting of the Object.prototype.valueOf.length property fails;
     71* @assertion: The Object.prototype.valueOf.length property has the attribute [[Configurable]]:true;
     72* @description: Checknig if deleting of the Object.prototype.valueOf.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Object.prototype.valueOf.length) {
    82   testFailed('#1: The Object.prototype.valueOf.length property has the attributes DontDelete');
     81if (!(delete Object.prototype.valueOf.length)) {
     82  testFailed('#1: The Object.prototype.valueOf.length property has the attribute [[Configurable]]:true');
    8383}
    8484
    8585//CHECK#2
    86 if (!(Object.prototype.valueOf.hasOwnProperty('length'))) {
    87   testFailed('#2: The Object.prototype.valueOf.length property has the attributes DontDelete');
     86if (Object.prototype.valueOf.hasOwnProperty('length')) {
     87  testFailed('#2: The Object.prototype.valueOf.length property has the attribute [[Configurable]]:true');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A9.html

    r120489 r197205  
    6969* @name: S15.2.4.5_A9;
    7070* @section: 15.2.4.5;
    71 * @assertion: The Object.prototype.hasOwnProperty.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the Object.prototype.hasOwnProperty.length property fails;
     71* @assertion: The Object.prototype.hasOwnProperty.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the Object.prototype.hasOwnProperty.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Object.prototype.hasOwnProperty.length) {
    82   testFailed('#1: The Object.prototype.hasOwnProperty.length property has the attributes DontDelete');
     81if (!(delete Object.prototype.hasOwnProperty.length)) {
     82  testFailed('#1: The Object.prototype.hasOwnProperty.length property has the attribute [[Configurable]]:true');
    8383}
    8484
    8585//CHECK#2
    86 if (!(Object.prototype.hasOwnProperty.hasOwnProperty('length'))) {
    87   testFailed('#2: The Object.prototype.hasOwnProperty.length property has the attributes DontDelete');
     86if (Object.prototype.hasOwnProperty.hasOwnProperty('length')) {
     87  testFailed('#2: The Object.prototype.hasOwnProperty.length property has the attribute [[Configurable]]:true');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A9.html

    r120489 r197205  
    6969* @name: S15.2.4.6_A9;
    7070* @section: 15.2.4.6;
    71 * @assertion: The Object.prototype.isPrototypeOf.length property has the attribute DontDelete;
    72 * @description: Checking deleting the Object.prototype.isPrototypeOf.length property fails;
     71* @assertion: The Object.prototype.isPrototypeOf.length property has the attribute [[Configurable]]:true;
     72* @description: Checking deleting the Object.prototype.isPrototypeOf.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Object.prototype.isPrototypeOf.length) {
    82   testFailed('#1: The Object.prototype.isPrototypeOf.length property has the attributes DontDelete');
     81if (!(delete Object.prototype.isPrototypeOf.length)) {
     82  testFailed('#1: The Object.prototype.isPrototypeOf.length property has the attribute [[Configurable]]:true');
    8383}
    8484//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A9.html

    r120489 r197205  
    6969* @name: S15.2.4.7_A9;
    7070* @section: 15.2.4.7;
    71 * @assertion: The Object.prototype.propertyIsEnumerable.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the Object.prototype.propertyIsEnumerable.length property fails;
     71* @assertion: The Object.prototype.propertyIsEnumerable.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the Object.prototype.propertyIsEnumerable.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Object.prototype.propertyIsEnumerable.length) {
    82   testFailed('#1: The Object.prototype.propertyIsEnumerable.length property has the attributes DontDelete');
     81if (!(delete Object.prototype.propertyIsEnumerable.length)) {
     82  testFailed('#1: The Object.prototype.propertyIsEnumerable.length property has the attribute [[Configurable]]:true');
    8383}
    8484//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.2_Function.prototype.toString/S15.3.4.2_A9.html

    r120489 r197205  
    6969* @name: S15.3.4.2_A9;
    7070* @section: 15.3.4.2;
    71 * @assertion: The Function.prototype.toString.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the Function.prototype.toString.length property fails;
     71* @assertion: The Function.prototype.toString.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the Function.prototype.toString.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Function.prototype.toString.length) {
    82   testFailed('#1: The Function.prototype.toString.length property has the attributes DontDelete');
     81if (!(delete Function.prototype.toString.length)) {
     82  testFailed('#1: The Function.prototype.toString.length property has the attribute [[Configurable]]:true');
    8383}
    8484
    8585//CHECK#2
    86 if (!(Function.prototype.toString.hasOwnProperty('length'))) {
    87   testFailed('#2: The Function.prototype.toString.length property has the attributes DontDelete');
     86if (Function.prototype.toString.hasOwnProperty('length')) {
     87  testFailed('#2: The Function.prototype.toString.length property has the attribute [[Configurable]]:true');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.3_Function.prototype.apply/S15.3.4.3_A9.html

    r120489 r197205  
    6969* @name: S15.3.4.3_A9;
    7070* @section: 15.3.4.3;
    71 * @assertion: The Function.prototype.apply.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the Function.prototype.apply.length property fails;
     71* @assertion: The Function.prototype.apply.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the Function.prototype.apply.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Function.prototype.apply.length) {
    82   testFailed('#1: The Function.prototype.apply.length property has the attributes DontDelete');
     81if (!(delete Function.prototype.apply.length)) {
     82  testFailed('#1: The Function.prototype.apply.length property has the attribute [[Configurable]]:true');
    8383}
    8484
    8585//CHECK#2
    86 if (!(Function.prototype.apply.hasOwnProperty('length'))) {
    87   testFailed('#2: The Function.prototype.apply.length property has the attributes DontDelete');
     86if (Function.prototype.apply.hasOwnProperty('length')) {
     87  testFailed('#2: The Function.prototype.apply.length property has the attribute [[Configurable]]:true');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.4_Function.prototype.call/S15.3.4.4_A9.html

    r120489 r197205  
    6969* @name: S15.3.4.4_A9;
    7070* @section: 15.3.4.4;
    71 * @assertion: The Function.prototype.call.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the Function.prototype.call.length property fails;
     71* @assertion: The Function.prototype.call.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the Function.prototype.call.length property succeeds;
    7373*/
    7474
     
    7979
    8080//CHECK#1
    81 if (delete Function.prototype.call.length) {
    82   testFailed('#1: The Function.prototype.call.length property has the attributes DontDelete');
     81if (!(delete Function.prototype.call.length)) {
     82  testFailed('#1: The Function.prototype.call.length property has the attribute [[Configurable]]:true');
    8383}
    8484
    8585//CHECK#2
    86 if (!(Function.prototype.call.hasOwnProperty('length'))) {
    87   testFailed('#2: The Function.prototype.call.length property has the attributes DontDelete');
     86if (Function.prototype.call.hasOwnProperty('length')) {
     87  testFailed('#2: The Function.prototype.call.length property has the attribute [[Configurable]]:true');
    8888}
    8989
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T1.html

    r120489 r197205  
    6969* @name: S15.3.5.1_A2_T1;
    7070* @section: 15.3.5.1;
    71 * @assertion: the length property has the attributes { DontDelete };
    72 * @description: Checking if deleting the length property of Function("arg1,arg2,arg3", null) fails;
     71* @assertion: the length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the length property of Function("arg1,arg2,arg3", null) succeeds;
    7373*/
    7474
     
    8181
    8282//CHECK#2
    83 if(delete f.length){
    84   testFailed('#2: the function.length property has the attributes DontDelete.');
     83if(!(delete f.length)) {
     84  testFailed('#2: the function.length property has the attribute [[Configurable]]:true.');
    8585}
    8686
    8787//CHECK#3
    88 if (!(f.hasOwnProperty('length'))) {
    89   testFailed('#3: the function.length property has the attributes DontDelete.');
     88if (f.hasOwnProperty('length')) {
     89  testFailed('#3: the function.length property has the attribute [[Configurable]]:true.');
    9090}
    9191
    9292//CHECK#4
    93 if (f.length !== 3) {
    94   testFailed('#4: the length property has the attributes { DontDelete }');
     93if (f.length !== 0) {
     94  testFailed('#4: the length property has the attribute [[Configurable]]:true.');
    9595}
    9696
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T2.html

    r120489 r197205  
    6969* @name: S15.3.5.1_A2_T2;
    7070* @section: 15.3.5.1;
    71 * @assertion: the length property has the attributes { DontDelete };
    72 * @description: Checking if deleting the length property of Function("arg1,arg2,arg3","arg4,arg5", null) fails;
     71* @assertion: the length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the length property of Function("arg1,arg2,arg3","arg4,arg5", null) succeeds;
    7373*/
    7474
     
    8383
    8484//CHECK#2
    85 if (!(f.hasOwnProperty('length'))) {
    86   testFailed('#2: the function.length property has the attributes DontDelete.');
     85if (f.hasOwnProperty('length')) {
     86  testFailed('#2: the function.length property has the attribute [[Configurable]]:true.');
    8787}
    8888
    8989//CHECK#3
    90 if (f.length !== 5) {
    91   testFailed('#3: the length property has the attributes { DontDelete }');
     90if (f.length !== 0) {
     91  testFailed('#3: the length property has the attribute [[Configurable]]:true');
    9292}
    9393
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.1_A2_T3.html

    r120489 r197205  
    6969* @name: S15.3.5.1_A2_T3;
    7070* @section: 15.3.5.1;
    71 * @assertion: the length property has the attributes { DontDelete };
    72 * @description: Checking if deleting the length property of Function("arg1,arg2,arg3","arg1,arg2","arg3", null) fails;
     71* @assertion: the length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the length property of Function("arg1,arg2,arg3","arg1,arg2","arg3", null) succeeds;
    7373*/
    7474
     
    8383
    8484//CHECK#2
    85 if (!(f.hasOwnProperty('length'))) {
    86   testFailed('#2: the function.length property has the attributes DontDelete.');
     85if (f.hasOwnProperty('length')) {
     86  testFailed('#2: the function.length property has the attribute [[Configurable]]:true.');
    8787}
    8888
    8989//CHECK#3
    90 if (f.length !== 6) {
    91   testFailed('#3: the length property has the attributes { DontDelete }');
     90if (f.length !== 0) {
     91  testFailed('#3: the length property has the attribute [[Configurable]]:true');
    9292}
    9393
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.2.html

    r120489 r197205  
    6969* @name: S15.4.4.10_A5.2;
    7070* @section: 15.4.4.10, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of slice has the attribute DontDelete;
     71* @assertion: The length property of slice has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.slice.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.slice.length; Array.prototype.slice.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.slice.hasOwnProperty('length')));
     83if (Array.prototype.slice.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.slice.length; Array.prototype.slice.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.slice.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.slice.length === undefined) {
    89   testFailed('#3: delete Array.prototype.slice.length; Array.prototype.slice.length !== undefined');
     88if (Array.prototype.slice.length !== 0) {
     89  testFailed('#3: delete Array.prototype.slice.length; Array.prototype.slice.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.2.html

    r120489 r197205  
    6969* @name: S15.4.4.11_A7.2;
    7070* @section: 15.4.4.11, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of sort has the attribute DontDelete;
     71* @assertion: The length property of sort has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.sort.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.sort.length; Array.prototype.sort.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.sort.hasOwnProperty('length')));
     83if (Array.prototype.sort.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.sort.length; Array.prototype.sort.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.sort.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.sort.length === undefined) {
    89   testFailed('#3: delete Array.prototype.sort.length; Array.prototype.sort.length !== undefined');
     88if (Array.prototype.sort.length !== 0) {
     89  testFailed('#3: delete Array.prototype.sort.length; Array.prototype.sort.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.2.html

    r120489 r197205  
    6969* @name: S15.4.4.12_A5.2;
    7070* @section: 15.4.4.12, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of splice has the attribute DontDelete;
     71* @assertion: The length property of splice has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.splice.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.splice.length; Array.prototype.splice.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.splice.hasOwnProperty('length')));
     83if (Array.prototype.splice.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.splice.length; Array.prototype.splice.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.splice.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.splice.length === undefined) {
    89   testFailed('#3: delete Array.prototype.splice.length; Array.prototype.splice.length !== undefined');
     88if (Array.prototype.splice.length !== 0) {
     89  testFailed('#3: delete Array.prototype.splice.length; Array.prototype.splice.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.2.html

    r120489 r197205  
    6969* @name: S15.4.4.13_A5.2;
    7070* @section: 15.4.4.13, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of unshift has the attribute DontDelete;
     71* @assertion: The length property of unshift has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.unshift.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.unshift.length; Array.prototype.unshift.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.unshift.hasOwnProperty('length')));
     83if (Array.prototype.unshift.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.unshift.length; Array.prototype.unshift.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.unshift.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.unshift.length === undefined) {
    89   testFailed('#3: delete Array.prototype.unshift.length; Array.prototype.unshift.length !== undefined');
     88if (Array.prototype.unshift.length !== 0) {
     89  testFailed('#3: delete Array.prototype.unshift.length; Array.prototype.unshift.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.2.html

    r120489 r197205  
    6969* @name: S15.4.4.2_A4.2;
    7070* @section: 15.4.4.2, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of toString has the attribute DontDelete;
     71* @assertion: The length property of toString has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.toString.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.toString.length; Array.prototype.toString.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.toString.hasOwnProperty('length')));
     83if (Array.prototype.toString.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.toString.length; Array.prototype.toString.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.toString.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.toString.length === undefined) {
    89   testFailed('#3: delete Array.prototype.toString.length; Array.prototype.toString.length !== undefined');
     88if (Array.prototype.toString.length !== 0) {
     89  testFailed('#3: delete Array.prototype.toString.length; Array.prototype.toString.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.2.html

    r120489 r197205  
    6969* @name: S15.4.4.3_A4.2;
    7070* @section: 15.4.4.3, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of toLocaleString has the attribute DontDelete;
     71* @assertion: The length property of toLocaleString has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.toLocaleString.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.toLocaleString.length; Array.prototype.toLocaleString.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.toLocaleString.hasOwnProperty('length')));
     83if (Array.prototype.toLocaleString.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.toLocaleString.length; Array.prototype.toLocaleString.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.toLocaleString.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.toLocaleString.length === undefined) {
    89   testFailed('#3: delete Array.prototype.toLocaleString.length; Array.prototype.toLocaleString.length !== undefined');
     88if (Array.prototype.toLocaleString.length !== 0) {
     89  testFailed('#3: delete Array.prototype.toLocaleString.length; Array.prototype.toLocaleString.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.2.html

    r120489 r197205  
    6969* @name: S15.4.4.4_A4.2;
    7070* @section: 15.4.4.4, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of concat has the attribute DontDelete;
     71* @assertion: The length property of concat has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.concat.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.concat.length; Array.prototype.concat.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.concat.hasOwnProperty('length')));
     83if (Array.prototype.concat.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.concat.length; Array.prototype.concat.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.concat.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.concat.length === undefined) {
    89   testFailed('#3: delete Array.prototype.concat.length; Array.prototype.concat.length !== undefined');
     88if (Array.prototype.concat.length !== 0) {
     89  testFailed('#3: delete Array.prototype.concat.length; Array.prototype.concat.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.2.html

    r120489 r197205  
    6969* @name: S15.4.4.5_A6.2;
    7070* @section: 15.4.4.5, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of join has the attribute DontDelete;
     71* @assertion: The length property of join has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.join.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.join.length; Array.prototype.join.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.join.hasOwnProperty('length')));
     83if (Array.prototype.join.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.join.length; Array.prototype.join.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.join.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.join.length === undefined) {
    89   testFailed('#3: delete Array.prototype.join.length; Array.prototype.join.length !== undefined');
     88if (Array.prototype.join.length !== 0) {
     89  testFailed('#3: delete Array.prototype.join.length; Array.prototype.join.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.2.html

    r120489 r197205  
    6969* @name: S15.4.4.6_A5.2;
    7070* @section: 15.4.4.6, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of pop has the attribute DontDelete;
     71* @assertion: The length property of pop has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.pop.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.pop.length; Array.prototype.pop.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.pop.hasOwnProperty('length')));
     83if (Array.prototype.pop.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.pop.length; Array.prototype.pop.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.pop.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.pop.length === undefined) {
    89   testFailed('#3: delete Array.prototype.pop.length; Array.prototype.pop.length !== undefined');
     88if (Array.prototype.pop.length !== 0) {
     89  testFailed('#3: delete Array.prototype.pop.length; Array.prototype.pop.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.2.html

    r120489 r197205  
    6969* @name: S15.4.4.7_A6.2;
    7070* @section: 15.4.4.7, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of push has the attribute DontDelete;
     71* @assertion: The length property of push has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.push.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.push.length; Array.prototype.push.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.push.hasOwnProperty('length')));
     83if (Array.prototype.push.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.push.length; Array.prototype.push.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.push.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.push.length === undefined) {
    89   testFailed('#3: delete Array.prototype.push.length; Array.prototype.push.length !== undefined');
     88if (Array.prototype.push.length !== 0) {
     89  testFailed('#3: delete Array.prototype.push.length; Array.prototype.push.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.2.html

    r120489 r197205  
    6969* @name: S15.4.4.8_A5.2;
    7070* @section: 15.4.4.8, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of reverse has the attribute DontDelete;
     71* @assertion: The length property of reverse has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.reverse.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.reverse.length; Array.prototype.reverse.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.reverse.hasOwnProperty('length')));
     83if (Array.prototype.reverse.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.reverse.length; Array.prototype.reverse.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.reverse.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.reverse.length === undefined) {
    89   testFailed('#3: delete Array.prototype.reverse.length; Array.prototype.reverse.length !== undefined');
     88if (Array.prototype.reverse.length !== 0) {
     89  testFailed('#3: delete Array.prototype.reverse.length; Array.prototype.reverse.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.2.html

    r120489 r197205  
    6969* @name: S15.4.4.9_A5.2;
    7070* @section: 15.4.4.9, 15.2.4.5, 11.4.1;
    71 * @assertion: The length property of shift has the attribute DontDelete;
     71* @assertion: The length property of shift has the attribute [[Configurable]]:true;
    7272* @description: Checking use hasOwnProperty, delete;
    7373*/
     
    8181
    8282//CHECK#2
    83 if (Array.prototype.shift.hasOwnProperty('length') !== true) {
    84   testFailed('#2: delete Array.prototype.shift.length; Array.prototype.shift.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.shift.hasOwnProperty('length')));
     83if (Array.prototype.shift.hasOwnProperty('length') !== false) {
     84  testFailed('#2: delete Array.prototype.shift.length; Array.prototype.shift.hasOwnProperty(\'length\') === false. Actual: ' + (Array.prototype.shift.hasOwnProperty('length')));
    8585}
    8686
    8787//CHECK#3
    88 if (Array.prototype.shift.length === undefined) {
    89   testFailed('#3: delete Array.prototype.shift.length; Array.prototype.shift.length !== undefined');
     88if (Array.prototype.shift.length !== 0) {
     89  testFailed('#3: delete Array.prototype.shift.length; Array.prototype.shift.length === 0');
    9090}
    9191
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.10_A9;
    7070* @section: 15.5.4.10;
    71 * @assertion: The String.prototype.match.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.match.length property fails;
     71* @assertion: The String.prototype.match.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.match.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.match.length) {
    86   testFailed('#1: delete String.prototype.match.length return false');
     85if (!(delete String.prototype.match.length)) {
     86  testFailed('#1: delete String.prototype.match.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.match.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.match.length; String.prototype.match.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.match.hasOwnProperty('length'));
     93if (String.prototype.match.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.match.length; String.prototype.match.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.match.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.11_String.prototype.replace/S15.5.4.11_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.11_A9;
    7070* @section: 15.5.4.11;
    71 * @assertion: The String.prototype.replace.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.replace.length property fails;
     71* @assertion: The String.prototype.replace.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.replace.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.replace.length) {
    86   testFailed('#1: delete String.prototype.replace.length return false');
     85if (!(delete String.prototype.replace.length)) {
     86  testFailed('#1: delete String.prototype.replace.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.replace.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.replace.length; String.prototype.replace.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.replace.hasOwnProperty('length'));
     93if (String.prototype.replace.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.replace.length; String.prototype.replace.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.replace.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.12_A9;
    7070* @section: 15.5.4.12;
    71 * @assertion: The String.prototype.search.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.search.length property fails;
     71* @assertion: The String.prototype.search.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.search.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.search.length) {
    86   testFailed('#1: delete String.prototype.search.length return false');
     85if (!(delete String.prototype.search.length)) {
     86  testFailed('#1: delete String.prototype.search.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.search.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.search.length; String.prototype.search.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.search.hasOwnProperty('length'));
     93if (String.prototype.search.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.search.length; String.prototype.search.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.search.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.13_String.prototype.slice/S15.5.4.13_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.13_A9;
    7070* @section: 15.5.4.13;
    71 * @assertion: The String.prototype.slice.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.slice.length property fails;
     71* @assertion: The String.prototype.slice.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.slice.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.slice.length) {
    86   testFailed('#1: delete String.prototype.slice.length return false');
     85if (!(delete String.prototype.slice.length)) {
     86  testFailed('#1: delete String.prototype.slice.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.slice.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.slice.length; String.prototype.slice.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.slice.hasOwnProperty('length'));
     93if (String.prototype.slice.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.slice.length; String.prototype.slice.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.slice.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.14_String.prototype.split/S15.5.4.14_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.14_A9;
    7070* @section: 15.5.4.14;
    71 * @assertion: The String.prototype.split.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.split.length property fails;
     71* @assertion: The String.prototype.split.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.split.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.split.length) {
    86   testFailed('#1: delete String.prototype.split.length return false');
     85if (!(delete String.prototype.split.length)) {
     86  testFailed('#1: delete String.prototype.split.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.split.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.split.length; String.prototype.split.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.split.hasOwnProperty('length'));
     93if (String.prototype.split.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.split.length; String.prototype.split.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.split.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.15_String.prototype.substring/S15.5.4.15_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.15_A9;
    7070* @section: 15.5.4.15;
    71 * @assertion: The String.prototype.substring.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.substring.length property fails;
     71* @assertion: The String.prototype.substring.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.substring.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.substring.length) {
    86   testFailed('#1: delete String.prototype.substring.length return false');
     85if (!(delete String.prototype.substring.length)) {
     86  testFailed('#1: delete String.prototype.substring.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.substring.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.substring.length; String.prototype.substring.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.substring.hasOwnProperty('length'));
     93if (String.prototype.substring.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.substring.length; String.prototype.substring.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.substring.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.16_A9;
    7070* @section: 15.5.4.16;
    71 * @assertion: The String.prototype.toLowerCase.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.toLowerCase.length property fails;
     71* @assertion: The String.prototype.toLowerCase.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.toLowerCase.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.toLowerCase.length) {
    86   testFailed('#1: delete String.prototype.toLowerCase.length return false');
     85if (!(delete String.prototype.toLowerCase.length)) {
     86  testFailed('#1: delete String.prototype.toLowerCase.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.toLowerCase.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLowerCase.hasOwnProperty('length'));
     93if (String.prototype.toLowerCase.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.toLowerCase.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.17_A9;
    7070* @section: 15.5.4.17;
    71 * @assertion: The String.prototype.toLocaleLowerCase.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.toLocaleLowerCase.length property fails;
     71* @assertion: The String.prototype.toLocaleLowerCase.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.toLocaleLowerCase.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.toLocaleLowerCase.length) {
    86   testFailed('#1: delete String.prototype.toLocaleLowerCase.length return false');
     85if (!(delete String.prototype.toLocaleLowerCase.length)) {
     86  testFailed('#1: delete String.prototype.toLocaleLowerCase.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.toLocaleLowerCase.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.toLocaleLowerCase.length; String.prototype.toLocaleLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleLowerCase.hasOwnProperty('length'));
     93if (String.prototype.toLocaleLowerCase.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.toLocaleLowerCase.length; String.prototype.toLocaleLowerCase.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.toLocaleLowerCase.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.18_A9;
    7070* @section: 15.5.4.18;
    71 * @assertion: The String.prototype.toUpperCase.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.toUpperCase.length property fails;
     71* @assertion: The String.prototype.toUpperCase.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.toUpperCase.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.toUpperCase.length) {
    86   testFailed('#1: delete String.prototype.toUpperCase.length return false');
     85if (!(delete String.prototype.toUpperCase.length)) {
     86  testFailed('#1: delete String.prototype.toUpperCase.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.toUpperCase.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.toUpperCase.length; String.prototype.toUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toUpperCase.hasOwnProperty('length'));
     93if (String.prototype.toUpperCase.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.toUpperCase.length; String.prototype.toUpperCase.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.toUpperCase.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.19_A9;
    7070* @section: 15.5.4.19;
    71 * @assertion: The String.prototype.toLocaleUpperCase.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.toLocaleUpperCase.length property fails;
     71* @assertion: The String.prototype.toLocaleUpperCase.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.toLocaleUpperCase.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.toLocaleUpperCase.length) {
    86   testFailed('#1: delete String.prototype.toLocaleUpperCase.length return false');
     85if (!(delete String.prototype.toLocaleUpperCase.length)) {
     86  testFailed('#1: delete String.prototype.toLocaleUpperCase.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.toLocaleUpperCase.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.toLocaleUpperCase.length; String.prototype.toLocaleUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleUpperCase.hasOwnProperty('length'));
     93if (String.prototype.toLocaleUpperCase.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.toLocaleUpperCase.length; String.prototype.toLocaleUpperCase.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.toLocaleUpperCase.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.4_String.prototype.charAt/S15.5.4.4_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.4_A9;
    7070* @section: 15.5.4.4;
    71 * @assertion: The String.prototype.charAt.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.charAt.length property fails;
     71* @assertion: The String.prototype.charAt.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.charAt.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.charAt.length) {
    86   testFailed('#1: delete String.prototype.charAt.length return false');
     85if (!(delete String.prototype.charAt.length)) {
     86  testFailed('#1: delete String.prototype.charAt.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.charAt.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.charAt.length; String.prototype.charAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charAt.hasOwnProperty('length'));
     93if (String.prototype.charAt.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.charAt.length; String.prototype.charAt.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.charAt.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.5_A9;
    7070* @section: 15.5.4.5;
    71 * @assertion: The String.prototype.charCodeAt.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.charCodeAt.length property fails;
     71* @assertion: The String.prototype.charCodeAt.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.charCodeAt.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.charCodeAt.length) {
    86   testFailed('#1: delete String.prototype.charCodeAt.length return false');
     85if (!(delete String.prototype.charCodeAt.length)) {
     86  testFailed('#1: delete String.prototype.charCodeAt.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.charCodeAt.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.charCodeAt.length; String.prototype.charCodeAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charCodeAt.hasOwnProperty('length'));
     93if (String.prototype.charCodeAt.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.charCodeAt.length; String.prototype.charCodeAt.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.charCodeAt.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.6_String.prototype.concat/S15.5.4.6_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.6_A9;
    7070* @section: 15.5.4.6;
    71 * @assertion: The String.prototype.concat.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.concat.length property fails;
     71* @assertion: The String.prototype.concat.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.concat.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.concat.length) {
    86   testFailed('#1: delete String.prototype.concat.length return false');
     85if (!(delete String.prototype.concat.length)) {
     86  testFailed('#1: delete String.prototype.concat.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.concat.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.concat.length; String.prototype.concat.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.concat.hasOwnProperty('length'));
     93if (String.prototype.concat.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.concat.length; String.prototype.concat.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.concat.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.7_A9;
    7070* @section: 15.5.4.7;
    71 * @assertion: The String.prototype.indexOf.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.indexOf.length property fails;
     71* @assertion: The String.prototype.indexOf.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.indexOf.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.indexOf.length) {
    86   testFailed('#1: delete String.prototype.indexOf.length raturn false');
     85if (!(delete String.prototype.indexOf.length)) {
     86  testFailed('#1: delete String.prototype.indexOf.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.indexOf.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.indexOf.length; String.prototype.indexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.indexOf.hasOwnProperty('length'));
     93if (String.prototype.indexOf.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.indexOf.length; String.prototype.indexOf.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.indexOf.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.8_A9;
    7070* @section: 15.5.4.8;
    71 * @assertion: The String.prototype.lastIndexOf.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.lastIndexOf.length property fails;
     71* @assertion: The String.prototype.lastIndexOf.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.lastIndexOf.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.lastIndexOf.length) {
    86   testFailed('#1: delete String.prototype.lastIndexOf.length return false');
     85if (!(delete String.prototype.lastIndexOf.length)) {
     86  testFailed('#1: delete String.prototype.lastIndexOf.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.lastIndexOf.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.lastIndexOf.hasOwnProperty('length'));
     93if (String.prototype.lastIndexOf.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.lastIndexOf.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A9.html

    r120489 r197205  
    6969* @name: S15.5.4.9_A9;
    7070* @section: 15.5.4.9;
    71 * @assertion: The String.prototype.localeCompare.length property has the attribute DontDelete;
    72 * @description: Checking if deleting the String.prototype.localeCompare.length property fails;
     71* @assertion: The String.prototype.localeCompare.length property has the attribute [[Configurable]]:true;
     72* @description: Checking if deleting the String.prototype.localeCompare.length property succeeds;
    7373*/
    7474
     
    8383//////////////////////////////////////////////////////////////////////////////
    8484//CHECK#1
    85 if (delete String.prototype.localeCompare.length) {
    86   testFailed('#1: delete String.prototype.localeCompare.length return false');
     85if (!(delete String.prototype.localeCompare.length)) {
     86  testFailed('#1: delete String.prototype.localeCompare.length return true');
    8787}
    8888//
     
    9191//////////////////////////////////////////////////////////////////////////////
    9292//CHECK#2
    93 if (!(String.prototype.localeCompare.hasOwnProperty('length'))) {
    94   testFailed('#2: delete String.prototype.localeCompare.length; String.prototype.localeCompare.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.localeCompare.hasOwnProperty('length'));
     93if (String.prototype.localeCompare.hasOwnProperty('length')) {
     94  testFailed('#2: delete String.prototype.localeCompare.length; String.prototype.localeCompare.hasOwnProperty(\'length\') return false. Actual: '+String.prototype.localeCompare.hasOwnProperty('length'));
    9595}
    9696//
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.4/15.9.4.2_Date.parse/S15.9.4.2_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.4.2_A3_T2;
    7070 * @section: 15.9.4.2;
    71  * @assertion: The Date.parse property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.parse property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.parse.length  !== false) {
    76   testFailed('#1: The Date.parse.length property has the attributes DontDelete');
     75if (delete Date.parse.length  !== true) {
     76  testFailed('#1: The Date.parse.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.parse.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.parse.length property has the attributes DontDelete');
     79if (Date.parse.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.parse.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.4/15.9.4.3_Date.UTC/S15.9.4.3_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.4.3_A3_T2;
    7070 * @section: 15.9.4.3;
    71  * @assertion: The Date.UTC property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.UTC property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.UTC.length  !== false) {
    76   testFailed('#1: The Date.UTC.length property has the attributes DontDelete');
     75if (delete Date.UTC.length  !== true) {
     76  testFailed('#1: The Date.UTC.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.UTC.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.UTC.length property has the attributes DontDelete');
     79if (Date.UTC.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.UTC.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.10_A3_T2;
    7070 * @section: 15.9.5.10;
    71  * @assertion: The Date.prototype.getFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getFullYear property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getFullYear.length  !== false) {
    76   testFailed('#1: The Date.prototype.getFullYear.length property has the attributes DontDelete');
     75if (delete Date.prototype.getFullYear.length  !== true) {
     76  testFailed('#1: The Date.prototype.getFullYear.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getFullYear.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getFullYear.length property has the attributes DontDelete');
     79if (Date.prototype.getFullYear.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getFullYear.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.11_A3_T2;
    7070 * @section: 15.9.5.11;
    71  * @assertion: The Date.prototype.getUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCFullYear property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCFullYear.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCFullYear.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCFullYear.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCFullYear.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCFullYear.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCFullYear.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCFullYear.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCFullYear.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.12_A3_T2;
    7070 * @section: 15.9.5.12;
    71  * @assertion: The Date.prototype.getMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getMonth property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getMonth.length  !== false) {
    76   testFailed('#1: The Date.prototype.getMonth.length property has the attributes DontDelete');
     75if (delete Date.prototype.getMonth.length  !== true) {
     76  testFailed('#1: The Date.prototype.getMonth.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getMonth.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getMonth.length property has the attributes DontDelete');
     79if (Date.prototype.getMonth.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getMonth.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.13_A3_T2;
    7070 * @section: 15.9.5.13;
    71  * @assertion: The Date.prototype.getUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCMonth property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCMonth.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCMonth.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCMonth.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCMonth.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCMonth.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCMonth.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCMonth.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCMonth.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.14_A3_T2;
    7070 * @section: 15.9.5.14;
    71  * @assertion: The Date.prototype.getDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getDate property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getDate.length  !== false) {
    76   testFailed('#1: The Date.prototype.getDate.length property has the attributes DontDelete');
     75if (delete Date.prototype.getDate.length  !== true) {
     76  testFailed('#1: The Date.prototype.getDate.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getDate.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getDate.length property has the attributes DontDelete');
     79if (Date.prototype.getDate.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getDate.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.15_A3_T2;
    7070 * @section: 15.9.5.15;
    71  * @assertion: The Date.prototype.getUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCDate property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCDate.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCDate.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCDate.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCDate.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCDate.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCDate.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCDate.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCDate.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.16_A3_T2;
    7070 * @section: 15.9.5.16;
    71  * @assertion: The Date.prototype.getDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getDay property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getDay.length  !== false) {
    76   testFailed('#1: The Date.prototype.getDay.length property has the attributes DontDelete');
     75if (delete Date.prototype.getDay.length  !== true) {
     76  testFailed('#1: The Date.prototype.getDay.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getDay.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getDay.length property has the attributes DontDelete');
     79if (Date.prototype.getDay.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getDay.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.17_A3_T2;
    7070 * @section: 15.9.5.17;
    71  * @assertion: The Date.prototype.getUTCDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCDay property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCDay.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCDay.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCDay.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCDay.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCDay.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCDay.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCDay.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCDay.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.18_A3_T2;
    7070 * @section: 15.9.5.18;
    71  * @assertion: The Date.prototype.getHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getHours property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getHours.length  !== false) {
    76   testFailed('#1: The Date.prototype.getHours.length property has the attributes DontDelete');
     75if (delete Date.prototype.getHours.length  !== true) {
     76  testFailed('#1: The Date.prototype.getHours.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getHours.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getHours.length property has the attributes DontDelete');
     79if (Date.prototype.getHours.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getHours.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.19_A3_T2;
    7070 * @section: 15.9.5.19;
    71  * @assertion: The Date.prototype.getUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCHours property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCHours.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCHours.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCHours.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCHours.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCHours.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCHours.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCHours.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCHours.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.20_A3_T2;
    7070 * @section: 15.9.5.20;
    71  * @assertion: The Date.prototype.getMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getMinutes property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getMinutes.length  !== false) {
    76   testFailed('#1: The Date.prototype.getMinutes.length property has the attributes DontDelete');
     75if (delete Date.prototype.getMinutes.length  !== true) {
     76  testFailed('#1: The Date.prototype.getMinutes.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getMinutes.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getMinutes.length property has the attributes DontDelete');
     79if (Date.prototype.getMinutes.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getMinutes.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.21_A3_T2;
    7070 * @section: 15.9.5.21;
    71  * @assertion: The Date.prototype.getUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCMinutes property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCMinutes.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCMinutes.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCMinutes.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCMinutes.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCMinutes.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCMinutes.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCMinutes.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCMinutes.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.22_A3_T2;
    7070 * @section: 15.9.5.22;
    71  * @assertion: The Date.prototype.getSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getSeconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getSeconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.getSeconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.getSeconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.getSeconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getSeconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getSeconds.length property has the attributes DontDelete');
     79if (Date.prototype.getSeconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getSeconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.23_A3_T2;
    7070 * @section: 15.9.5.23;
    71  * @assertion: The Date.prototype.getUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCSeconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCSeconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCSeconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCSeconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCSeconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCSeconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCSeconds.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCSeconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCSeconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.24_A3_T2;
    7070 * @section: 15.9.5.24;
    71  * @assertion: The Date.prototype.getMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getMilliseconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getMilliseconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.getMilliseconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.getMilliseconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.getMilliseconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getMilliseconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getMilliseconds.length property has the attributes DontDelete');
     79if (Date.prototype.getMilliseconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getMilliseconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.25_A3_T2;
    7070 * @section: 15.9.5.25;
    71  * @assertion: The Date.prototype.getUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getUTCMilliseconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getUTCMilliseconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.getUTCMilliseconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.getUTCMilliseconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.getUTCMilliseconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getUTCMilliseconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getUTCMilliseconds.length property has the attributes DontDelete');
     79if (Date.prototype.getUTCMilliseconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getUTCMilliseconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.26_A3_T2;
    7070 * @section: 15.9.5.26;
    71  * @assertion: The Date.prototype.getTimezoneOffset property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getTimezoneOffset property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getTimezoneOffset.length  !== false) {
    76   testFailed('#1: The Date.prototype.getTimezoneOffset.length property has the attributes DontDelete');
     75if (delete Date.prototype.getTimezoneOffset.length  !== true) {
     76  testFailed('#1: The Date.prototype.getTimezoneOffset.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getTimezoneOffset.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getTimezoneOffset.length property has the attributes DontDelete');
     79if (Date.prototype.getTimezoneOffset.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getTimezoneOffset.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.27_A3_T2;
    7070 * @section: 15.9.5.27;
    71  * @assertion: The Date.prototype.setTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setTime property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setTime.length  !== false) {
    76   testFailed('#1: The Date.prototype.setTime.length property has the attributes DontDelete');
     75if (delete Date.prototype.setTime.length  !== true) {
     76  testFailed('#1: The Date.prototype.setTime.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setTime.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setTime.length property has the attributes DontDelete');
     79if (Date.prototype.setTime.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setTime.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.28_A3_T2;
    7070 * @section: 15.9.5.28;
    71  * @assertion: The Date.prototype.setMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setMilliseconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setMilliseconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.setMilliseconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.setMilliseconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.setMilliseconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setMilliseconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setMilliseconds.length property has the attributes DontDelete');
     79if (Date.prototype.setMilliseconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setMilliseconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.29_A3_T2;
    7070 * @section: 15.9.5.29;
    71  * @assertion: The Date.prototype.setUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setUTCMilliseconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setUTCMilliseconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.setUTCMilliseconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.setUTCMilliseconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.setUTCMilliseconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setUTCMilliseconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setUTCMilliseconds.length property has the attributes DontDelete');
     79if (Date.prototype.setUTCMilliseconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setUTCMilliseconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.2_A3_T2;
    7070 * @section: 15.9.5.2;
    71  * @assertion: The Date.prototype.toString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.toString property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.toString.length  !== false) {
    76   testFailed('#1: The Date.prototype.toString.length property has the attributes DontDelete');
     75if (delete Date.prototype.toString.length  !== true) {
     76  testFailed('#1: The Date.prototype.toString.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.toString.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.toString.length property has the attributes DontDelete');
     79if (Date.prototype.toString.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.toString.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.30_A3_T2;
    7070 * @section: 15.9.5.30;
    71  * @assertion: The Date.prototype.setSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setSeconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setSeconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.setSeconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.setSeconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.setSeconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setSeconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setSeconds.length property has the attributes DontDelete');
     79if (Date.prototype.setSeconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setSeconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.31_A3_T2;
    7070 * @section: 15.9.5.31;
    71  * @assertion: The Date.prototype.setUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setUTCSeconds property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setUTCSeconds.length  !== false) {
    76   testFailed('#1: The Date.prototype.setUTCSeconds.length property has the attributes DontDelete');
     75if (delete Date.prototype.setUTCSeconds.length  !== true) {
     76  testFailed('#1: The Date.prototype.setUTCSeconds.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setUTCSeconds.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setUTCSeconds.length property has the attributes DontDelete');
     79if (Date.prototype.setUTCSeconds.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setUTCSeconds.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.32_A3_T2;
    7070 * @section: 15.9.5.32;
    71  * @assertion: The Date.prototype.setMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setMinutes property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setMinutes.length  !== false) {
    76   testFailed('#1: The Date.prototype.setMinutes.length property has the attributes DontDelete');
     75if (delete Date.prototype.setMinutes.length  !== true) {
     76  testFailed('#1: The Date.prototype.setMinutes.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setMinutes.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setMinutes.length property has the attributes DontDelete');
     79if (Date.prototype.setMinutes.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setMinutes.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.33_A3_T2;
    7070 * @section: 15.9.5.33;
    71  * @assertion: The Date.prototype.setUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setUTCMinutes property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setUTCMinutes.length  !== false) {
    76   testFailed('#1: The Date.prototype.setUTCMinutes.length property has the attributes DontDelete');
     75if (delete Date.prototype.setUTCMinutes.length  !== true) {
     76  testFailed('#1: The Date.prototype.setUTCMinutes.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setUTCMinutes.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setUTCMinutes.length property has the attributes DontDelete');
     79if (Date.prototype.setUTCMinutes.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setUTCMinutes.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.34_A3_T2;
    7070 * @section: 15.9.5.34;
    71  * @assertion: The Date.prototype.setHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setHours property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setHours.length  !== false) {
    76   testFailed('#1: The Date.prototype.setHours.length property has the attributes DontDelete');
     75if (delete Date.prototype.setHours.length  !== true) {
     76  testFailed('#1: The Date.prototype.setHours.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setHours.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setHours.length property has the attributes DontDelete');
     79if (Date.prototype.setHours.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setHours.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.35_A3_T2;
    7070 * @section: 15.9.5.35;
    71  * @assertion: The Date.prototype.setUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setUTCHours property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setUTCHours.length  !== false) {
    76   testFailed('#1: The Date.prototype.setUTCHours.length property has the attributes DontDelete');
     75if (delete Date.prototype.setUTCHours.length  !== true) {
     76  testFailed('#1: The Date.prototype.setUTCHours.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setUTCHours.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setUTCHours.length property has the attributes DontDelete');
     79if (Date.prototype.setUTCHours.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setUTCHours.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.36_A3_T2;
    7070 * @section: 15.9.5.36;
    71  * @assertion: The Date.prototype.setDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setDate property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setDate.length  !== false) {
    76   testFailed('#1: The Date.prototype.setDate.length property has the attributes DontDelete');
     75if (delete Date.prototype.setDate.length  !== true) {
     76  testFailed('#1: The Date.prototype.setDate.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setDate.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setDate.length property has the attributes DontDelete');
     79if (Date.prototype.setDate.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setDate.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.37_A3_T2;
    7070 * @section: 15.9.5.37;
    71  * @assertion: The Date.prototype.setUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setUTCDate property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setUTCDate.length  !== false) {
    76   testFailed('#1: The Date.prototype.setUTCDate.length property has the attributes DontDelete');
     75if (delete Date.prototype.setUTCDate.length  !== true) {
     76  testFailed('#1: The Date.prototype.setUTCDate.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setUTCDate.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setUTCDate.length property has the attributes DontDelete');
     79if (Date.prototype.setUTCDate.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setUTCDate.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.38_A3_T2;
    7070 * @section: 15.9.5.38;
    71  * @assertion: The Date.prototype.setMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setMonth property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setMonth.length  !== false) {
    76   testFailed('#1: The Date.prototype.setMonth.length property has the attributes DontDelete');
     75if (delete Date.prototype.setMonth.length  !== true) {
     76  testFailed('#1: The Date.prototype.setMonth.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setMonth.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setMonth.length property has the attributes DontDelete');
     79if (Date.prototype.setMonth.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setMonth.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.39_A3_T2;
    7070 * @section: 15.9.5.39;
    71  * @assertion: The Date.prototype.setUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setUTCMonth property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setUTCMonth.length  !== false) {
    76   testFailed('#1: The Date.prototype.setUTCMonth.length property has the attributes DontDelete');
     75if (delete Date.prototype.setUTCMonth.length  !== true) {
     76  testFailed('#1: The Date.prototype.setUTCMonth.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setUTCMonth.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setUTCMonth.length property has the attributes DontDelete');
     79if (Date.prototype.setUTCMonth.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setUTCMonth.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.3_A3_T2;
    7070 * @section: 15.9.5.3;
    71  * @assertion: The Date.prototype.toDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.toDateString property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.toDateString.length  !== false) {
    76   testFailed('#1: The Date.prototype.toDateString.length property has the attributes DontDelete');
     75if (delete Date.prototype.toDateString.length  !== true) {
     76  testFailed('#1: The Date.prototype.toDateString.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.toDateString.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.toDateString.length property has the attributes DontDelete');
     79if (Date.prototype.toDateString.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.toDateString.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.40_A3_T2;
    7070 * @section: 15.9.5.40;
    71  * @assertion: The Date.prototype.setFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setFullYear property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setFullYear.length  !== false) {
    76   testFailed('#1: The Date.prototype.setFullYear.length property has the attributes DontDelete');
     75if (delete Date.prototype.setFullYear.length  !== true) {
     76  testFailed('#1: The Date.prototype.setFullYear.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setFullYear.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setFullYear.length property has the attributes DontDelete');
     79if (Date.prototype.setFullYear.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setFullYear.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.41_A3_T2;
    7070 * @section: 15.9.5.41;
    71  * @assertion: The Date.prototype.setUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.setUTCFullYear property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.setUTCFullYear.length  !== false) {
    76   testFailed('#1: The Date.prototype.setUTCFullYear.length property has the attributes DontDelete');
     75if (delete Date.prototype.setUTCFullYear.length  !== true) {
     76  testFailed('#1: The Date.prototype.setUTCFullYear.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.setUTCFullYear.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.setUTCFullYear.length property has the attributes DontDelete');
     79if (Date.prototype.setUTCFullYear.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.setUTCFullYear.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.42_A3_T2;
    7070 * @section: 15.9.5.42;
    71  * @assertion: The Date.prototype.toUTCString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.toUTCString property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.toUTCString.length  !== false) {
    76   testFailed('#1: The Date.prototype.toUTCString.length property has the attributes DontDelete');
     75if (delete Date.prototype.toUTCString.length  !== true) {
     76  testFailed('#1: The Date.prototype.toUTCString.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.toUTCString.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.toUTCString.length property has the attributes DontDelete');
     79if (Date.prototype.toUTCString.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.toUTCString.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.4_A3_T2;
    7070 * @section: 15.9.5.4;
    71  * @assertion: The Date.prototype.toTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.toTimeString property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.toTimeString.length  !== false) {
    76   testFailed('#1: The Date.prototype.toTimeString.length property has the attributes DontDelete');
     75if (delete Date.prototype.toTimeString.length  !== true) {
     76  testFailed('#1: The Date.prototype.toTimeString.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.toTimeString.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.toTimeString.length property has the attributes DontDelete');
     79if (Date.prototype.toTimeString.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.toTimeString.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.5_A3_T2;
    7070 * @section: 15.9.5.5;
    71  * @assertion: The Date.prototype.toLocaleString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.toLocaleString property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.toLocaleString.length  !== false) {
    76   testFailed('#1: The Date.prototype.toLocaleString.length property has the attributes DontDelete');
     75if (delete Date.prototype.toLocaleString.length  !== true) {
     76  testFailed('#1: The Date.prototype.toLocaleString.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.toLocaleString.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.toLocaleString.length property has the attributes DontDelete');
     79if (Date.prototype.toLocaleString.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.toLocaleString.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.6_A3_T2;
    7070 * @section: 15.9.5.6;
    71  * @assertion: The Date.prototype.toLocaleDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.toLocaleDateString property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.toLocaleDateString.length  !== false) {
    76   testFailed('#1: The Date.prototype.toLocaleDateString.length property has the attributes DontDelete');
     75if (delete Date.prototype.toLocaleDateString.length  !== true) {
     76  testFailed('#1: The Date.prototype.toLocaleDateString.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.toLocaleDateString.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.toLocaleDateString.length property has the attributes DontDelete');
     79if (Date.prototype.toLocaleDateString.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.toLocaleDateString.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.7_A3_T2;
    7070 * @section: 15.9.5.7;
    71  * @assertion: The Date.prototype.toLocaleTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.toLocaleTimeString property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.toLocaleTimeString.length  !== false) {
    76   testFailed('#1: The Date.prototype.toLocaleTimeString.length property has the attributes DontDelete');
     75if (delete Date.prototype.toLocaleTimeString.length  !== true) {
     76  testFailed('#1: The Date.prototype.toLocaleTimeString.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.toLocaleTimeString.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.toLocaleTimeString.length property has the attributes DontDelete');
     79if (Date.prototype.toLocaleTimeString.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.toLocaleTimeString.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.8_A3_T2;
    7070 * @section: 15.9.5.8;
    71  * @assertion: The Date.prototype.valueOf property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.valueOf property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.valueOf.length  !== false) {
    76   testFailed('#1: The Date.prototype.valueOf.length property has the attributes DontDelete');
     75if (delete Date.prototype.valueOf.length  !== true) {
     76  testFailed('#1: The Date.prototype.valueOf.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.valueOf.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.valueOf.length property has the attributes DontDelete');
     79if (Date.prototype.valueOf.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.valueOf.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.5/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T2.html

    r120489 r197205  
    6969 * @name: S15.9.5.9_A3_T2;
    7070 * @section: 15.9.5.9;
    71  * @assertion: The Date.prototype.getTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
    72  * @description: Checking DontDelete attribute;
     71 * @assertion: The Date.prototype.getTime property "length" has { [[Writable]]:false, [[Enumerable]]:false, [[Configurable]]:true } attributes;
     72 * @description: Checking [[Configurable]] attribute;
    7373 */
    7474
    75 if (delete Date.prototype.getTime.length  !== false) {
    76   testFailed('#1: The Date.prototype.getTime.length property has the attributes DontDelete');
     75if (delete Date.prototype.getTime.length  !== true) {
     76  testFailed('#1: The Date.prototype.getTime.length property has the attribute [[Configurable]]:true');
    7777}
    7878
    79 if (!Date.prototype.getTime.hasOwnProperty('length')) {
    80   testFailed('#2: The Date.prototype.getTime.length property has the attributes DontDelete');
     79if (Date.prototype.getTime.hasOwnProperty('length')) {
     80  testFailed('#2: The Date.prototype.getTime.length property has the attribute [[Configurable]]:true');
    8181}
    8282
  • trunk/Source/JavaScriptCore/ChangeLog

    r197196 r197205  
     12016-02-26  Mark Lam  <mark.lam@apple.com>
     2
     3        Function.name and Function.length should be configurable.
     4        https://bugs.webkit.org/show_bug.cgi?id=154604
     5
     6        Reviewed by Saam Barati.
     7
     8        According to https://tc39.github.io/ecma262/#sec-ecmascript-language-functions-and-classes,
     9        "Unless otherwise specified, the name property of a built-in Function object,
     10        if it exists, has the attributes { [[Writable]]: false, [[Enumerable]]: false,
     11        [[Configurable]]: true }."
     12
     13        Similarly, "the length property of a built-in Function object has the attributes
     14        { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }."
     15
     16        This patch makes Function.name and Function.length configurable.
     17
     18        We do this by lazily reifying the JSFunction name and length properties on first
     19        access.  We track whether each of these properties have been reified using flags
     20        in the FunctionRareData.  On first access, if not already reified, we will put
     21        the property into the object with its default value and attributes and set the
     22        reified flag.  Thereafter, we rely on the base JSObject to handle access to the
     23        property.
     24
     25        Also, lots of test results have to be re-baselined because the old Function.length
     26        has attribute DontDelete, which is in conflict with the ES6 requirement that it
     27        is configurable.
     28
     29        * runtime/FunctionRareData.h:
     30        (JSC::FunctionRareData::hasReifiedLength):
     31        (JSC::FunctionRareData::setHasReifiedLength):
     32        (JSC::FunctionRareData::hasReifiedName):
     33        (JSC::FunctionRareData::setHasReifiedName):
     34        - Flags for tracking whether each property has been reified.
     35
     36        * runtime/JSFunction.cpp:
     37        (JSC::JSFunction::finishCreation):
     38        (JSC::JSFunction::createBuiltinFunction):
     39        - Host and builtin functions currently always reify their name and length
     40          properties.  Currently, for builtins, the default names that are used may
     41          differ from the executable name.  For now, we'll stay with keeping this
     42          alternate approach to getting the name and length properties for host and
     43          builtin functions.
     44          However, we need their default attribute to be configurable as well.
     45
     46        (JSC::JSFunction::getOwnPropertySlot):
     47        (JSC::JSFunction::getOwnNonIndexPropertyNames):
     48        (JSC::JSFunction::put):
     49        (JSC::JSFunction::deleteProperty):
     50        (JSC::JSFunction::defineOwnProperty):
     51        (JSC::JSFunction::reifyLength):
     52        (JSC::JSFunction::reifyName):
     53        (JSC::JSFunction::reifyLazyPropertyIfNeeded):
     54        (JSC::JSFunction::lengthGetter): Deleted.
     55        (JSC::JSFunction::nameGetter): Deleted.
     56        * runtime/JSFunction.h:
     57        * runtime/JSFunctionInlines.h:
     58        (JSC::JSFunction::hasReifiedLength):
     59        (JSC::JSFunction::hasReifiedName):
     60
     61        * tests/es6.yaml:
     62        - 4 new passing tests.
     63
     64        * tests/mozilla/ecma/Array/15.4.4.3-1.js:
     65        * tests/mozilla/ecma/Array/15.4.4.4-1.js:
     66        * tests/mozilla/ecma/Array/15.4.4.4-2.js:
     67        * tests/mozilla/ecma/GlobalObject/15.1.2.1-1.js:
     68        * tests/mozilla/ecma/GlobalObject/15.1.2.2-1.js:
     69        * tests/mozilla/ecma/GlobalObject/15.1.2.3-1.js:
     70        * tests/mozilla/ecma/GlobalObject/15.1.2.4.js:
     71        * tests/mozilla/ecma/GlobalObject/15.1.2.5-1.js:
     72        * tests/mozilla/ecma/GlobalObject/15.1.2.6.js:
     73        * tests/mozilla/ecma/GlobalObject/15.1.2.7.js:
     74        * tests/mozilla/ecma/String/15.5.4.10-1.js:
     75        * tests/mozilla/ecma/String/15.5.4.11-1.js:
     76        * tests/mozilla/ecma/String/15.5.4.11-5.js:
     77        * tests/mozilla/ecma/String/15.5.4.12-1.js:
     78        * tests/mozilla/ecma/String/15.5.4.6-2.js:
     79        * tests/mozilla/ecma/String/15.5.4.7-2.js:
     80        * tests/mozilla/ecma/String/15.5.4.8-1.js:
     81        * tests/mozilla/ecma/String/15.5.4.9-1.js:
     82        - Rebase expected test results.
     83
     84        * tests/stress/function-configurable-properties.js: Added.
     85
    1862016-02-26  Keith Miller  <keith_miller@apple.com>
    287
  • trunk/Source/JavaScriptCore/runtime/FunctionRareData.h

    r196956 r197205  
    9494    void setBoundFunctionStructure(VM& vm, Structure* structure) { m_boundFunctionStructure.set(vm, this, structure); }
    9595
     96    bool hasReifiedLength() const { return m_hasReifiedLength; }
     97    void setHasReifiedLength() { m_hasReifiedLength = true; }
     98    bool hasReifiedName() const { return m_hasReifiedName; }
     99    void setHasReifiedName() { m_hasReifiedName = true; }
     100
    96101protected:
    97102    FunctionRareData(VM&);
     
    119124    InternalFunctionAllocationProfile m_internalFunctionAllocationProfile;
    120125    WriteBarrier<Structure> m_boundFunctionStructure;
     126    bool m_hasReifiedLength { false };
     127    bool m_hasReifiedName { false };
    121128};
    122129
  • trunk/Source/JavaScriptCore/runtime/JSFunction.cpp

    r196722 r197205  
    117117    ASSERT(inherits(info()));
    118118    m_executable.set(vm, this, executable);
    119     putDirect(vm, vm.propertyNames->name, jsString(&vm, name), DontDelete | ReadOnly | DontEnum);
    120     putDirect(vm, vm.propertyNames->length, jsNumber(length), DontDelete | ReadOnly | DontEnum);
     119    putDirect(vm, vm.propertyNames->name, jsString(&vm, name), ReadOnly | DontEnum);
     120    putDirect(vm, vm.propertyNames->length, jsNumber(length), ReadOnly | DontEnum);
    121121}
    122122
     
    124124{
    125125    JSFunction* function = create(vm, executable, globalObject);
    126     function->putDirect(vm, vm.propertyNames->name, jsString(&vm, executable->name().string()), DontDelete | ReadOnly | DontEnum);
    127     function->putDirect(vm, vm.propertyNames->length, jsNumber(executable->parameterCount()), DontDelete | ReadOnly | DontEnum);
     126    function->putDirect(vm, vm.propertyNames->name, jsString(&vm, executable->name().string()), ReadOnly | DontEnum);
     127    function->putDirect(vm, vm.propertyNames->length, jsNumber(executable->parameterCount()), ReadOnly | DontEnum);
    128128    return function;
    129129}
     
    132132{
    133133    JSFunction* function = create(vm, executable, globalObject);
    134     function->putDirect(vm, vm.propertyNames->name, jsString(&vm, name), DontDelete | ReadOnly | DontEnum);
    135     function->putDirect(vm, vm.propertyNames->length, jsNumber(executable->parameterCount()), DontDelete | ReadOnly | DontEnum);
     134    function->putDirect(vm, vm.propertyNames->name, jsString(&vm, name), ReadOnly | DontEnum);
     135    function->putDirect(vm, vm.propertyNames->length, jsNumber(executable->parameterCount()), ReadOnly | DontEnum);
    136136    return function;
    137137}
     
    342342        return JSValue::encode(caller);
    343343    return JSValue::encode(throwTypeError(exec, ASCIILiteral("Function.caller used to retrieve strict caller")));
    344 }
    345 
    346 EncodedJSValue JSFunction::lengthGetter(ExecState*, EncodedJSValue thisValue, PropertyName)
    347 {
    348     JSFunction* thisObj = jsCast<JSFunction*>(JSValue::decode(thisValue));
    349     ASSERT(!thisObj->isHostFunction());
    350     return JSValue::encode(jsNumber(thisObj->jsExecutable()->parameterCount()));
    351 }
    352 
    353 EncodedJSValue JSFunction::nameGetter(ExecState*, EncodedJSValue thisValue, PropertyName)
    354 {
    355     JSFunction* thisObj = jsCast<JSFunction*>(JSValue::decode(thisValue));
    356     ASSERT(!thisObj->isHostFunction());
    357     return JSValue::encode(thisObj->jsExecutable()->nameValue());
    358344}
    359345
     
    398384    }
    399385
    400     if (propertyName == exec->propertyNames().length) {
    401         slot.setCacheableCustom(thisObject, ReadOnly | DontEnum | DontDelete, lengthGetter);
    402         return true;
    403     }
    404 
    405     if (propertyName == exec->propertyNames().name) {
    406         slot.setCacheableCustom(thisObject, ReadOnly | DontEnum | DontDelete, nameGetter);
    407         return true;
    408     }
    409 
    410386    if (propertyName == exec->propertyNames().caller) {
    411387        if (thisObject->jsExecutable()->isStrictMode()) {
     
    422398    }
    423399
     400    thisObject->reifyLazyPropertyIfNeeded(exec, propertyName);
     401
    424402    return Base::getOwnPropertySlot(thisObject, exec, propertyName, slot);
    425403}
     
    436414        propertyNames.add(vm.propertyNames->arguments);
    437415        propertyNames.add(vm.propertyNames->caller);
    438         propertyNames.add(vm.propertyNames->length);
    439         propertyNames.add(vm.propertyNames->name);
     416        if (!thisObject->hasReifiedLength())
     417            propertyNames.add(vm.propertyNames->length);
     418        if (!thisObject->hasReifiedName())
     419            propertyNames.add(vm.propertyNames->name);
    440420    }
    441421    Base::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode);
     
    468448        return;
    469449    }
    470     if (propertyName == exec->propertyNames().arguments || propertyName == exec->propertyNames().length || propertyName == exec->propertyNames().name || propertyName == exec->propertyNames().caller) {
     450    if (propertyName == exec->propertyNames().arguments || propertyName == exec->propertyNames().caller) {
    471451        if (slot.isStrictMode())
    472452            throwTypeError(exec, StrictModeReadonlyPropertyWriteError);
    473453        return;
    474454    }
     455    thisObject->reifyLazyPropertyIfNeeded(exec, propertyName);
    475456    Base::put(thisObject, exec, propertyName, value, slot);
    476457}
     
    483464        FunctionExecutable* executable = thisObject->jsExecutable();
    484465        if (propertyName == exec->propertyNames().arguments
    485             || propertyName == exec->propertyNames().length
    486             || propertyName == exec->propertyNames().name
    487466            || (propertyName == exec->propertyNames().prototype && !executable->isArrowFunction())
    488467            || propertyName == exec->propertyNames().caller)
    489         return false;
     468            return false;
     469
     470        thisObject->reifyLazyPropertyIfNeeded(exec, propertyName);
    490471    }
    491472   
     
    526507        }
    527508        valueCheck = !descriptor.value() || sameValue(exec, descriptor.value(), retrieveCallerFunction(exec, thisObject));
    528     } else if (propertyName == exec->propertyNames().length)
    529         valueCheck = !descriptor.value() || sameValue(exec, descriptor.value(), jsNumber(thisObject->jsExecutable()->parameterCount()));
    530     else if (propertyName == exec->propertyNames().name)
    531         valueCheck = !descriptor.value() || sameValue(exec, descriptor.value(), thisObject->jsExecutable()->nameValue());
    532     else
     509    } else {
     510        thisObject->reifyLazyPropertyIfNeeded(exec, propertyName);
    533511        return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException);
     512    }
    534513     
    535514    if (descriptor.configurablePresent() && descriptor.configurable()) {
     
    589568}
    590569
     570void JSFunction::reifyLength(ExecState* exec)
     571{
     572    VM& vm = exec->vm();
     573    FunctionRareData* rareData = this->rareData(vm);
     574
     575    ASSERT(!hasReifiedLength());
     576    ASSERT(!isHostFunction());
     577    JSValue initialValue = jsNumber(jsExecutable()->parameterCount());
     578    unsigned initialAttributes = DontEnum | ReadOnly;
     579    const Identifier& identifier = exec->propertyNames().length;
     580    putDirect(vm, identifier, initialValue, initialAttributes);
     581
     582    rareData->setHasReifiedLength();
     583}
     584
     585void JSFunction::reifyName(ExecState* exec)
     586{
     587    VM& vm = exec->vm();
     588    FunctionRareData* rareData = this->rareData(vm);
     589
     590    ASSERT(!hasReifiedName());
     591    ASSERT(!isHostFunction());
     592    JSValue initialValue = jsExecutable()->nameValue();
     593    unsigned initialAttributes = DontEnum | ReadOnly;
     594    const Identifier& identifier = exec->propertyNames().name;
     595    putDirect(vm, identifier, initialValue, initialAttributes);
     596
     597    rareData->setHasReifiedName();
     598}
     599
     600void JSFunction::reifyLazyPropertyIfNeeded(ExecState* exec, PropertyName propertyName)
     601{
     602    if (propertyName == exec->propertyNames().length) {
     603        if (!hasReifiedLength())
     604            reifyLength(exec);
     605    } else if (propertyName == exec->propertyNames().name) {
     606        if (!hasReifiedName())
     607            reifyName(exec);
     608    }
     609}
     610
    591611} // namespace JSC
  • trunk/Source/JavaScriptCore/runtime/JSFunction.h

    r196331 r197205  
    187187        return function;
    188188    }
    189    
     189
     190    bool hasReifiedLength() const;
     191    bool hasReifiedName() const;
     192    void reifyLength(ExecState*);
     193    void reifyName(ExecState*);
     194    void reifyLazyPropertyIfNeeded(ExecState*, PropertyName propertyName);
     195
    190196    friend class LLIntOffsetsExtractor;
    191197
  • trunk/Source/JavaScriptCore/runtime/JSFunctionInlines.h

    r195070 r197205  
    11/*
    2  * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013, 2015-2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    111111}
    112112
     113inline bool JSFunction::hasReifiedLength() const
     114{
     115    return m_rareData ? m_rareData->hasReifiedLength() : false;
     116}
     117
     118inline bool JSFunction::hasReifiedName() const
     119{
     120    return m_rareData ? m_rareData->hasReifiedName() : false;
     121}
     122
    113123} // namespace JSC
    114124
  • trunk/Source/JavaScriptCore/tests/es6.yaml

    r197136 r197205  
    796796  cmd: runES6 :normal
    797797- path: es6/function_name_property_class_expressions.js
    798   cmd: runES6 :fail
     798  cmd: runES6 :normal
    799799- path: es6/function_name_property_class_statements.js
    800   cmd: runES6 :fail
     800  cmd: runES6 :normal
    801801- path: es6/function_name_property_isnt_writable_is_configurable.js
    802   cmd: runES6 :fail
     802  cmd: runES6 :normal
    803803- path: es6/function_name_property_object_methods_class.js
    804804  cmd: runES6 :fail
     
    870870  cmd: runES6 :fail
    871871- path: es6/miscellaneous_function_length_is_configurable.js
    872   cmd: runES6 :fail
     872  cmd: runES6 :normal
    873873- path: es6/miscellaneous_no_assignments_allowed_in_for-in_head.js
    874874  cmd: runES6 :fail
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.3-1.js

    r11995 r197205  
    5353
    5454    array[item++] = new TestCase( SECTION, "Array.prototype.join.length",           1,      Array.prototype.join.length );
    55     array[item++] = new TestCase( SECTION, "delete Array.prototype.join.length",    false,  delete Array.prototype.join.length );
    56     array[item++] = new TestCase( SECTION, "delete Array.prototype.join.length; Array.prototype.join.length",    1, eval("delete Array.prototype.join.length; Array.prototype.join.length") );
     55    array[item++] = new TestCase( SECTION, "delete Array.prototype.join.length",    true,   delete Array.prototype.join.length );
     56    array[item++] = new TestCase( SECTION, "Array.prototype.join.length",           0,      Array.prototype.join.length );
    5757
    5858    // case where array length is 0
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-1.js

    r11995 r197205  
    8585
    8686    testcases[testcases.length] = new TestCase( SECTION, "Array.prototype.reverse.length",           0,      Array.prototype.reverse.length );
    87     testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length",    false,  delete Array.prototype.reverse.length );
    88     testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length; Array.prototype.reverse.length",    0, eval("delete Array.prototype.reverse.length; Array.prototype.reverse.length") );
     87    testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length",    true,   delete Array.prototype.reverse.length );
     88    testcases[testcases.length] = new TestCase( SECTION, "Array.prototype.reverse.length",           0,      Array.prototype.reverse.length );
    8989
    9090    // length of array is 0
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/Array/15.4.4.4-2.js

    r11995 r197205  
    8585
    8686    testcases[testcases.length] = new TestCase( SECTION, "Array.prototype.reverse.length",           0,      Array.prototype.reverse.length );
    87     testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length",    false,  delete Array.prototype.reverse.length );
    88     testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length; Array.prototype.reverse.length",    0, eval("delete Array.prototype.reverse.length; Array.prototype.reverse.length") );
     87    testcases[testcases.length] = new TestCase( SECTION, "delete Array.prototype.reverse.length",    true,   delete Array.prototype.reverse.length );
     88    testcases[testcases.length] = new TestCase( SECTION, "Array.prototype.reverse.length",           0,      Array.prototype.reverse.length );
    8989
    9090    // length of array is 0
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.1-1.js

    r11995 r197205  
    4747
    4848    array[item++] = new TestCase( SECTION,      "eval.length",              1,              eval.length );
    49     array[item++] = new TestCase( SECTION,      "delete eval.length",       false,          delete eval.length );
     49    array[item++] = new TestCase( SECTION,      "delete eval.length",       true,           delete eval.length );
     50    array[item++] = new TestCase( SECTION,      "eval.length",              0,              eval.length );
    5051    array[item++] = new TestCase( SECTION,      "var PROPS = ''; for ( p in eval ) { PROPS += p }; PROPS",  "", eval("var PROPS = ''; for ( p in eval ) { PROPS += p }; PROPS") );
    51     array[item++] = new TestCase( SECTION,      "eval.length = null; eval.length",       1, eval( "eval.length = null; eval.length") );
     52    array[item++] = new TestCase( SECTION,      "eval.length = null; eval.length",       0, eval( "eval.length = null; eval.length") );
    5253//    array[item++] = new TestCase( SECTION,     "eval.__proto__",                       Function.prototype,            eval.__proto__ );
    5354
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.2-1.js

    r103926 r197205  
    111111    array[item++] = new TestCase( SECTION,  "parseInt.length = 0; parseInt.length",     2,      eval("parseInt.length = 0; parseInt.length") );
    112112    array[item++] = new TestCase( SECTION,  "var PROPS=''; for ( var p in parseInt ) { PROPS += p; }; PROPS",   "", eval("var PROPS=''; for ( var p in parseInt ) { PROPS += p; }; PROPS") );
    113     array[item++] = new TestCase( SECTION,  "delete parseInt.length",   false,  delete parseInt.length );
    114     array[item++] = new TestCase( SECTION,  "delete parseInt.length; parseInt.length",  2,  eval("delete parseInt.length; parseInt.length") );
    115     array[item++] = new TestCase( SECTION,  "parseInt.length = null; parseInt.length",  2,  eval("parseInt.length = null; parseInt.length") );
     113    array[item++] = new TestCase( SECTION,  "delete parseInt.length",   true,  delete parseInt.length );
     114    array[item++] = new TestCase( SECTION,  "parseInt.length",      0,      parseInt.length );
     115    array[item++] = new TestCase( SECTION,  "parseInt.length = null; parseInt.length",  0,  eval("parseInt.length = null; parseInt.length") );
    116116
    117117    array[item++] = new TestCase( SECTION,  "parseInt()",       NaN,    parseInt() );
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.3-1.js

    r11995 r197205  
    7979
    8080    array[item++] = new TestCase( SECTION, "parseFloat.length = null; parseFloat.length",   1,      eval("parseFloat.length = null; parseFloat.length") );
    81     array[item++] = new TestCase( SECTION, "delete parseFloat.length",                      false,  delete parseFloat.length );
    82     array[item++] = new TestCase( SECTION, "delete parseFloat.length; parseFloat.length",   1,      eval("delete parseFloat.length; parseFloat.length") );
     81    array[item++] = new TestCase( SECTION, "delete parseFloat.length",                      true,   delete parseFloat.length );
     82    array[item++] = new TestCase( SECTION, "parseFloat.length",     0,              parseFloat.length );
    8383    array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in parseFloat ) { MYPROPS += p }; MYPROPS", "", eval("var MYPROPS=''; for ( var p in parseFloat ) { MYPROPS += p }; MYPROPS") );
    8484
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.4.js

    r11995 r197205  
    8484    array[item++] = new TestCase( SECTION, "escape.length",         1,          escape.length );
    8585    array[item++] = new TestCase( SECTION, "escape.length = null; escape.length",   1,  eval("escape.length = null; escape.length") );
    86     array[item++] = new TestCase( SECTION, "delete escape.length",                  false,  delete escape.length );
    87     array[item++] = new TestCase( SECTION, "delete escape.length; escape.length",   1,      eval("delete escape.length; escape.length") );
     86    array[item++] = new TestCase( SECTION, "delete escape.length",                  true,  delete escape.length );
     87    array[item++] = new TestCase( SECTION, "escape.length",         0,          escape.length );
    8888    array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in escape ) { MYPROPS+= p}; MYPROPS",    "",    eval("var MYPROPS=''; for ( var p in escape ) { MYPROPS+= p}; MYPROPS") );
    8989
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.5-1.js

    r11995 r197205  
    8282    array[item++] = new TestCase( SECTION, "unescape.length",       1,               unescape.length );
    8383    array[item++] = new TestCase( SECTION, "unescape.length = null; unescape.length",   1,      eval("unescape.length=null; unescape.length") );
    84     array[item++] = new TestCase( SECTION, "delete unescape.length",                    false,  delete unescape.length );
    85     array[item++] = new TestCase( SECTION, "delete unescape.length; unescape.length",   1,      eval("delete unescape.length; unescape.length") );
     84    array[item++] = new TestCase( SECTION, "delete unescape.length",                    true,  delete unescape.length );
     85    array[item++] = new TestCase( SECTION, "unescape.length",       0,               unescape.length );
    8686    array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in unescape ) { MYPROPS+= p }; MYPROPS",    "", eval("var MYPROPS=''; for ( var p in unescape ) { MYPROPS+= p }; MYPROPS") );
    8787
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.6.js

    r11995 r197205  
    5252    array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in isNaN ) { MYPROPS+= p }; MYPROPS", "", eval("var MYPROPS=''; for ( var p in isNaN ) { MYPROPS+= p }; MYPROPS") );
    5353    array[item++] = new TestCase( SECTION, "isNaN.length = null; isNaN.length", 1,      eval("isNaN.length=null; isNaN.length") );
    54     array[item++] = new TestCase( SECTION, "delete isNaN.length",               false,  delete isNaN.length );
    55     array[item++] = new TestCase( SECTION, "delete isNaN.length; isNaN.length", 1,      eval("delete isNaN.length; isNaN.length") );
     54    array[item++] = new TestCase( SECTION, "delete isNaN.length",               true,   delete isNaN.length );
     55    array[item++] = new TestCase( SECTION, "isNaN.length",      0,                  isNaN.length );
    5656
    5757//    array[item++] = new TestCase( SECTION, "isNaN.__proto__",   Function.prototype, isNaN.__proto__ );
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/GlobalObject/15.1.2.7.js

    r11995 r197205  
    5151    array[item++] = new TestCase( SECTION, "isFinite.length",      1,                  isFinite.length );
    5252    array[item++] = new TestCase( SECTION, "isFinite.length = null; isFinite.length",   1,      eval("isFinite.length=null; isFinite.length") );
    53     array[item++] = new TestCase( SECTION, "delete isFinite.length",                    false,  delete isFinite.length );
    54     array[item++] = new TestCase( SECTION, "delete isFinite.length; isFinite.length",   1,      eval("delete isFinite.length; isFinite.length") );
     53    array[item++] = new TestCase( SECTION, "delete isFinite.length",                    true,   delete isFinite.length );
     54    array[item++] = new TestCase( SECTION, "isFinite.length",      0,                  isFinite.length );
    5555    array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( p in isFinite ) { MYPROPS+= p }; MYPROPS",    "", eval("var MYPROPS=''; for ( p in isFinite ) { MYPROPS += p }; MYPROPS") );
    5656
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.10-1.js

    r11995 r197205  
    7575
    7676    array[item++] = new TestCase( SECTION,  "String.prototype.substring.length",        2,          String.prototype.substring.length );
    77     array[item++] = new TestCase( SECTION,  "delete String.prototype.substring.length", false,      delete String.prototype.substring.length );
    78     array[item++] = new TestCase( SECTION,  "delete String.prototype.substring.length; String.prototype.substring.length", 2,      eval("delete String.prototype.substring.length; String.prototype.substring.length") );
     77    array[item++] = new TestCase( SECTION,  "delete String.prototype.substring.length", true,       delete String.prototype.substring.length );
     78    array[item++] = new TestCase( SECTION,  "String.prototype.substring.length",        0,          String.prototype.substring.length );
    7979
    8080    // test cases for when substring is called with no arguments.
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-1.js

    r11995 r197205  
    5656
    5757    array[item++] = new TestCase( SECTION,  "String.prototype.toLowerCase.length",        0,          String.prototype.toLowerCase.length );
    58     array[item++] = new TestCase( SECTION,  "delete String.prototype.toLowerCase.length", false,      delete String.prototype.toLowerCase.length );
    59     array[item++] = new TestCase( SECTION,  "delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length", 0,      eval("delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length") );
     58    array[item++] = new TestCase( SECTION,  "delete String.prototype.toLowerCase.length", true,       delete String.prototype.toLowerCase.length );
     59    array[item++] = new TestCase( SECTION,  "String.prototype.toLowerCase.length",        0,          String.prototype.toLowerCase.length );
    6060
    6161    // Basic Latin, Latin-1 Supplement, Latin Extended A
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-5.js

    r11995 r197205  
    5656
    5757    array[item++] = new TestCase( SECTION,  "String.prototype.toLowerCase.length",        0,          String.prototype.toLowerCase.length );
    58     array[item++] = new TestCase( SECTION,  "delete String.prototype.toLowerCase.length", false,      delete String.prototype.toLowerCase.length );
    59     array[item++] = new TestCase( SECTION,  "delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length", 0,      eval("delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.length") );
     58    array[item++] = new TestCase( SECTION,  "delete String.prototype.toLowerCase.length", true,       delete String.prototype.toLowerCase.length );
     59    array[item++] = new TestCase( SECTION,  "String.prototype.toLowerCase.length",        0,          String.prototype.toLowerCase.length );
    6060
    6161    // Cyrillic (part)
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-1.js

    r13740 r197205  
    5656
    5757    array[item++] = new TestCase( SECTION,  "String.prototype.toUpperCase.length",        0,          String.prototype.toUpperCase.length );
    58     array[item++] = new TestCase( SECTION,  "delete String.prototype.toUpperCase.length", false,      delete String.prototype.toUpperCase.length );
    59     array[item++] = new TestCase( SECTION,  "delete String.prototype.toupperCase.length; String.prototype.toupperCase.length", 0,      eval("delete String.prototype.toUpperCase.length; String.prototype.toUpperCase.length") );
     58    array[item++] = new TestCase( SECTION,  "delete String.prototype.toUpperCase.length", true,       delete String.prototype.toUpperCase.length );
     59    array[item++] = new TestCase( SECTION,  "String.prototype.toUpperCase.length",        0,          String.prototype.toUpperCase.length );
    6060
    6161    // Basic Latin, Latin-1 Supplement, Latin Extended A
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.6-2.js

    r91095 r197205  
    104104    array[item++] = new TestCase( SECTION, "String.prototype.indexOf.length",                                               1,     String.prototype.indexOf.length );
    105105    array[item++] = new TestCase( SECTION, "String.prototype.indexOf.length = null; String.prototype.indexOf.length",       1,     eval("String.prototype.indexOf.length = null; String.prototype.indexOf.length") );
    106     array[item++] = new TestCase( SECTION, "delete String.prototype.indexOf.length",                                        false,  delete String.prototype.indexOf.length );
    107     array[item++] = new TestCase( SECTION, "delete String.prototype.indexOf.length; String.prototype.indexOf.length",       1,      eval("delete String.prototype.indexOf.length; String.prototype.indexOf.length") );
     106    array[item++] = new TestCase( SECTION, "delete String.prototype.indexOf.length",                                        true,  delete String.prototype.indexOf.length );
     107    array[item++] = new TestCase( SECTION, "String.prototype.indexOf.length",                                               0,     String.prototype.indexOf.length );
    108108
    109109    array[item++] = new TestCase( SECTION, "var s = new String(); s.indexOf()",     -1,     eval("var s = new String(); s.indexOf()") );
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.7-2.js

    r11995 r197205  
    7676
    7777    array[item++] = new TestCase( SECTION, "String.prototype.lastIndexOf.length",           1,          String.prototype.lastIndexOf.length );
    78     array[item++] = new TestCase( SECTION, "delete String.prototype.lastIndexOf.length",    false,      delete String.prototype.lastIndexOf.length );
    79     array[item++] = new TestCase( SECTION, "delete String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.length",   1,  eval("delete String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.length" ) );
     78    array[item++] = new TestCase( SECTION, "delete String.prototype.lastIndexOf.length",    true,       delete String.prototype.lastIndexOf.length );
     79    array[item++] = new TestCase( SECTION, "String.prototype.lastIndexOf.length",           0,          String.prototype.lastIndexOf.length );
    8080
    8181    array[item++] = new TestCase( SECTION, "var s = new String(''); s.lastIndexOf('', 0)",          LastIndexOf("","",0),  eval("var s = new String(''); s.lastIndexOf('', 0)") );
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.8-1.js

    r11995 r197205  
    6262
    6363    array[item++] = new TestCase( SECTION,  "String.prototype.split.length",        2,          String.prototype.split.length );
    64     array[item++] = new TestCase( SECTION,  "delete String.prototype.split.length", false,      delete String.prototype.split.length );
    65     array[item++] = new TestCase( SECTION,  "delete String.prototype.split.length; String.prototype.split.length", 2,      eval("delete String.prototype.split.length; String.prototype.split.length") );
     64    array[item++] = new TestCase( SECTION,  "delete String.prototype.split.length", true,       delete String.prototype.split.length );
     65    array[item++] = new TestCase( SECTION,  "String.prototype.split.length",        0,          String.prototype.split.length );
    6666
    6767    // test cases for when split is called with no arguments.
  • trunk/Source/JavaScriptCore/tests/mozilla/ecma/String/15.5.4.9-1.js

    r11995 r197205  
    6565
    6666    array[item++] = new TestCase( SECTION,  "String.prototype.substring.length",        2,          String.prototype.substring.length );
    67     array[item++] = new TestCase( SECTION,  "delete String.prototype.substring.length", false,      delete String.prototype.substring.length );
    68     array[item++] = new TestCase( SECTION,  "delete String.prototype.substring.length; String.prototype.substring.length", 2,      eval("delete String.prototype.substring.length; String.prototype.substring.length") );
     67    array[item++] = new TestCase( SECTION,  "delete String.prototype.substring.length", true,       delete String.prototype.substring.length );
     68    array[item++] = new TestCase( SECTION,  "String.prototype.substring.length",        0,          String.prototype.substring.length );
    6969
    7070    // test cases for when substring is called with no arguments.
Note: See TracChangeset for help on using the changeset viewer.