Changeset 207461 in webkit
- Timestamp:
- Oct 18, 2016 5:51:33 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChakraCore/test/strict/05.arguments_sm.baseline-jsc
r205387 r207461 19 19 } 20 20 arguments.caller:value : undefined 21 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.22 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.23 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.24 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.21 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 22 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 23 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 24 Exception: 'arguments', 'callee', and 'caller' cannot be accessed in this context. -
trunk/JSTests/ChangeLog
r207453 r207461 1 2016-10-18 Caitlin Potter <caitp@igalia.com> 2 3 [JSC] ES6 Method functions should not have prototype 4 https://bugs.webkit.org/show_bug.cgi?id=162530 5 6 Reviewed by Saam Barati. 7 8 Fix test262 expectations about MethodDefinitions 9 10 * ChakraCore/test/strict/05.arguments_sm.baseline-jsc: 11 * stress/reflect-set.js: 12 * test262.yaml: 13 1 14 2016-10-17 Keith Miller <keith_miller@apple.com> 2 15 -
trunk/JSTests/stress/reflect-set.js
r203263 r207461 880 880 shouldThrow(() => { 881 881 Reflect.set(object, 'callee', 'Cappuccino'); 882 }, `TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.`);882 }, `TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.`); 883 883 shouldThrow(() => { 884 884 Reflect.get(object, 'callee'); 885 }, `TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.`);885 }, `TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.`); 886 886 } 887 887 -
trunk/JSTests/test262.yaml
r207347 r207461 17657 17657 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 17658 17658 - path: test262/test/built-ins/Function/prototype/Symbol.hasInstance/this-val-poisoned-prototype.js 17659 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []17659 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 17660 17660 - path: test262/test/built-ins/Function/prototype/Symbol.hasInstance/this-val-poisoned-prototype.js 17661 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict]17661 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 17662 17662 - path: test262/test/built-ins/Function/prototype/Symbol.hasInstance/this-val-prototype-non-obj.js 17663 17663 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 66603 66603 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict] 66604 66604 - path: test262/test/language/expressions/object/method-definition/name-prototype-prop.js 66605 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []66605 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 66606 66606 - path: test262/test/language/expressions/object/method-definition/name-prototype-prop.js 66607 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict]66607 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 66608 66608 - path: test262/test/language/expressions/object/method-definition/name-prototype.js 66609 66609 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 73071 73071 cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 73072 73072 - path: test262/test/language/statements/class/definition/accessors.js 73073 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []73073 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 73074 73074 - path: test262/test/language/statements/class/definition/accessors.js 73075 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict]73075 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 73076 73076 - path: test262/test/language/statements/class/definition/basics.js 73077 73077 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 73159 73159 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 73160 73160 - path: test262/test/language/statements/class/definition/getters-prop-desc.js 73161 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], []73161 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [] 73162 73162 - path: test262/test/language/statements/class/definition/getters-prop-desc.js 73163 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict]73163 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict] 73164 73164 - path: test262/test/language/statements/class/definition/getters-restricted-ids.js 73165 73165 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 73267 73267 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 73268 73268 - path: test262/test/language/statements/class/definition/methods.js 73269 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []73269 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 73270 73270 - path: test262/test/language/statements/class/definition/methods.js 73271 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict]73271 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 73272 73272 - path: test262/test/language/statements/class/definition/numeric-property-names.js 73273 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []73273 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 73274 73274 - path: test262/test/language/statements/class/definition/numeric-property-names.js 73275 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict]73275 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 73276 73276 - path: test262/test/language/statements/class/definition/params-trailing-comma-arguments.js 73277 73277 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 73311 73311 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict] 73312 73312 - path: test262/test/language/statements/class/definition/setters-prop-desc.js 73313 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], []73313 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [] 73314 73314 - path: test262/test/language/statements/class/definition/setters-prop-desc.js 73315 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict]73315 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict] 73316 73316 - path: test262/test/language/statements/class/definition/setters-restricted-ids.js 73317 73317 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] -
trunk/LayoutTests/ChangeLog
r207460 r207461 1 2016-10-18 Caitlin Potter <caitp@igalia.com> 2 3 [JSC] ES6 Method functions should not have prototype 4 https://bugs.webkit.org/show_bug.cgi?id=162530 5 6 Reviewed by Saam Barati. 7 8 Update expected error message to no longer indicate "strict mode" 9 (which is not always true), and add additional tests for the presence 10 of "caller" and "arguments" on accessor MethodDefinitions. 11 12 * js/basic-strict-mode-expected.txt: 13 * js/caller-property-expected.txt: 14 * js/class-syntax-method-names-expected.txt: 15 * js/es6-function-properties-expected.txt: 16 * js/non-strict-function-properties-expected.txt: 17 * js/script-tests/caller-property.js: 18 * js/script-tests/class-syntax-method-names.js: 19 * js/script-tests/es6-function-properties.js: 20 (k.get getter): 21 (k.set setter): 22 (get checkProperties): 23 * js/script-tests/non-strict-function-properties.js: 24 1 25 2016-10-18 Javier Fernandez <jfernandez@igalia.com> 2 26 -
trunk/LayoutTests/js/basic-strict-mode-expected.txt
r205856 r207461 57 57 PASS (function (){'use strict'; with(1){};}) threw exception SyntaxError: 'with' statements are not valid in strict mode.. 58 58 PASS (function(){(function (){'use strict'; with(1){};})}) threw exception SyntaxError: 'with' statements are not valid in strict mode.. 59 PASS (function (){'use strict'; arguments.callee; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..60 PASS (function (){'use strict'; arguments.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..61 PASS (function f(){'use strict'; f.arguments; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..62 PASS (function f(){'use strict'; f.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..63 PASS (function f(){'use strict'; f.arguments=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..64 PASS (function f(){'use strict'; f.caller=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..65 PASS (function (arg){'use strict'; arguments.callee; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..66 PASS (function (arg){'use strict'; arguments.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..67 PASS (function f(arg){'use strict'; f.arguments; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..68 PASS (function f(arg){'use strict'; f.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..69 PASS (function f(arg){'use strict'; f.arguments=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..70 PASS (function f(arg){'use strict'; f.caller=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..59 PASS (function (){'use strict'; arguments.callee; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 60 PASS (function (){'use strict'; arguments.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 61 PASS (function f(){'use strict'; f.arguments; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 62 PASS (function f(){'use strict'; f.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 63 PASS (function f(){'use strict'; f.arguments=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 64 PASS (function f(){'use strict'; f.caller=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 65 PASS (function (arg){'use strict'; arguments.callee; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 66 PASS (function (arg){'use strict'; arguments.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 67 PASS (function f(arg){'use strict'; f.arguments; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 68 PASS (function f(arg){'use strict'; f.caller; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 69 PASS (function f(arg){'use strict'; f.arguments=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 70 PASS (function f(arg){'use strict'; f.caller=5; })() threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 71 71 PASS (function a(a){'use strict'; return a+2; })(40) is 42 72 72 PASS var foo = function a(a){'use strict'; return a+2; }; foo(40) is 42 -
trunk/LayoutTests/js/caller-property-expected.txt
r201619 r207461 8 8 PASS childHasCallerWhenCalledFromWithinParent is true 9 9 PASS nonStrictCaller(nonStrictCallee) is nonStrictCaller 10 PASS nonStrictCaller(strictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..10 PASS nonStrictCaller(strictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 11 11 PASS strictCaller(nonStrictCallee) threw exception TypeError: Function.caller used to retrieve strict caller. 12 PASS strictCaller(strictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..12 PASS strictCaller(strictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 13 13 PASS strictTailCaller(nonStrictCallee) is null 14 PASS strictTailCaller(strictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..14 PASS strictTailCaller(strictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 15 15 PASS nonStrictCaller(boundNonStrictCallee) is nonStrictCaller 16 PASS nonStrictCaller(boundStrictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..16 PASS nonStrictCaller(boundStrictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 17 17 PASS strictCaller(boundNonStrictCallee) threw exception TypeError: Function.caller used to retrieve strict caller. 18 PASS strictCaller(boundStrictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..18 PASS strictCaller(boundStrictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 19 19 PASS strictTailCaller(boundNonStrictCallee) is null 20 PASS strictTailCaller(boundStrictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.. 21 PASS nonStrictGetter(nonStrictAccessor) is nonStrictGetter 22 PASS nonStrictSetter(nonStrictAccessor) is true 23 PASS nonStrictGetter(strictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.. 24 PASS nonStrictSetter(strictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.. 25 PASS strictGetter(nonStrictAccessor) threw exception TypeError: Function.caller used to retrieve strict caller. 26 PASS strictSetter(nonStrictAccessor) threw exception TypeError: Function.caller used to retrieve strict caller. 27 PASS strictGetter(strictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.. 28 PASS strictSetter(strictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.. 20 PASS strictTailCaller(boundStrictCallee) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 21 PASS nonStrictGetter(nonStrictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 22 PASS nonStrictGetter(strictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 23 PASS strictGetter(nonStrictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 24 PASS strictSetter(nonStrictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 25 PASS strictGetter(strictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 26 PASS strictSetter(strictAccessor) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 29 27 PASS successfullyParsed is true 30 28 -
trunk/LayoutTests/js/class-syntax-method-names-expected.txt
r205856 r207461 33 33 PASS (class X {static get arguments() {return staticMethodValue;}}).hasOwnProperty('arguments') is true 34 34 PASS (class X {static get caller() {return staticMethodValue;}}).hasOwnProperty('caller') is true 35 PASS class X {static caller() {return staticMethodValue;}};X.arguments = function(){} threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..36 PASS class X {static arguments() {return staticMethodValue;}}; X.caller = function(){} threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..35 PASS class X {static caller() {return staticMethodValue;}};X.arguments = function(){} threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 36 PASS class X {static arguments() {return staticMethodValue;}}; X.caller = function(){} threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 37 37 PASS class X {static caller() {return "";}} X.caller = function(){ return staticMethodValue; };X.caller() is staticMethodValue 38 38 PASS class X {static arguments() {return "";}}; X.arguments = function(){ return staticMethodValue; };X.arguments() is staticMethodValue -
trunk/LayoutTests/js/es6-function-properties-expected.txt
r205856 r207461 8 8 (new A()).constructor 9 9 PASS 'length,name,prototype':::'length,name,prototype' 10 PASS a.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.11 PASS a.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.12 PASS a.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.13 PASS a.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.14 PASS a.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.15 PASS a.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.16 PASS a.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.17 PASS a.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.10 PASS a.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 11 PASS a.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 12 PASS a.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 13 PASS a.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 14 PASS a.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 15 PASS a.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 16 PASS a.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 17 PASS a.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 18 18 PASS a.constructor.hasOwnProperty("caller"):::false 19 19 PASS a.constructor.hasOwnProperty("arguments"):::false … … 24 24 PASS delete a.constructor.arguments:::true 25 25 PASS delete a.constructor["arguments"]:::true 26 PASS a.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.27 PASS a.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.28 PASS a.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.29 PASS a.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.30 PASS a.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.31 PASS a.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.32 PASS a.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.33 PASS a.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.26 PASS a.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 27 PASS a.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 28 PASS a.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 29 PASS a.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 30 PASS a.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 31 PASS a.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 32 PASS a.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 33 PASS a.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 34 34 PASS a.constructor.hasOwnProperty("caller"):::false 35 35 PASS a.constructor.hasOwnProperty("arguments"):::false … … 40 40 PASS delete a.constructor.arguments:::true 41 41 PASS delete a.constructor["arguments"]:::true 42 PASS (new A()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.43 PASS (new A()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.44 PASS (new A()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.45 PASS (new A()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.46 PASS (new A()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.47 PASS (new A()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.48 PASS (new A()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.49 PASS (new A()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.42 PASS (new A()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 43 PASS (new A()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 44 PASS (new A()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 45 PASS (new A()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 46 PASS (new A()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 47 PASS (new A()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 48 PASS (new A()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 49 PASS (new A()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 50 50 PASS (new A()).constructor.hasOwnProperty("caller"):::false 51 51 PASS (new A()).constructor.hasOwnProperty("arguments"):::false … … 60 60 (new B()).constructor 61 61 PASS 'length,name,prototype':::'length,name,prototype' 62 PASS b.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.63 PASS b.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.64 PASS b.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.65 PASS b.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.66 PASS b.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.67 PASS b.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.68 PASS b.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.69 PASS b.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.62 PASS b.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 63 PASS b.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 64 PASS b.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 65 PASS b.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 66 PASS b.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 67 PASS b.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 68 PASS b.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 69 PASS b.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 70 70 PASS b.constructor.hasOwnProperty("caller"):::false 71 71 PASS b.constructor.hasOwnProperty("arguments"):::false … … 76 76 PASS delete b.constructor.arguments:::true 77 77 PASS delete b.constructor["arguments"]:::true 78 PASS (new B()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.79 PASS (new B()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.80 PASS (new B()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.81 PASS (new B()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.82 PASS (new B()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.83 PASS (new B()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.84 PASS (new B()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.85 PASS (new B()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.78 PASS (new B()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 79 PASS (new B()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 80 PASS (new B()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 81 PASS (new B()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 82 PASS (new B()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 83 PASS (new B()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 84 PASS (new B()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 85 PASS (new B()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 86 86 PASS (new B()).constructor.hasOwnProperty("caller"):::false 87 87 PASS (new B()).constructor.hasOwnProperty("arguments"):::false … … 96 96 (new C()).constructor 97 97 PASS 'length,name,prototype':::'length,name,prototype' 98 PASS c.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.99 PASS c.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.100 PASS c.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.101 PASS c.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.102 PASS c.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.103 PASS c.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.104 PASS c.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.105 PASS c.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.98 PASS c.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 99 PASS c.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 100 PASS c.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 101 PASS c.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 102 PASS c.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 103 PASS c.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 104 PASS c.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 105 PASS c.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 106 106 PASS c.constructor.hasOwnProperty("caller"):::false 107 107 PASS c.constructor.hasOwnProperty("arguments"):::false … … 112 112 PASS delete c.constructor.arguments:::true 113 113 PASS delete c.constructor["arguments"]:::true 114 PASS (new C()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.115 PASS (new C()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.116 PASS (new C()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.117 PASS (new C()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.118 PASS (new C()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.119 PASS (new C()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.120 PASS (new C()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.121 PASS (new C()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.114 PASS (new C()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 115 PASS (new C()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 116 PASS (new C()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 117 PASS (new C()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 118 PASS (new C()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 119 PASS (new C()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 120 PASS (new C()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 121 PASS (new C()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 122 122 PASS (new C()).constructor.hasOwnProperty("caller"):::false 123 123 PASS (new C()).constructor.hasOwnProperty("arguments"):::false … … 132 132 (new D()).constructor 133 133 PASS 'length,name,prototype':::'length,name,prototype' 134 PASS d.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.135 PASS d.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.136 PASS d.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.137 PASS d.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.138 PASS d.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.139 PASS d.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.140 PASS d.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.141 PASS d.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.134 PASS d.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 135 PASS d.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 136 PASS d.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 137 PASS d.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 138 PASS d.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 139 PASS d.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 140 PASS d.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 141 PASS d.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 142 142 PASS d.constructor.hasOwnProperty("caller"):::false 143 143 PASS d.constructor.hasOwnProperty("arguments"):::false … … 148 148 PASS delete d.constructor.arguments:::true 149 149 PASS delete d.constructor["arguments"]:::true 150 PASS (new D()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.151 PASS (new D()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.152 PASS (new D()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.153 PASS (new D()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.154 PASS (new D()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.155 PASS (new D()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.156 PASS (new D()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.157 PASS (new D()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.150 PASS (new D()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 151 PASS (new D()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 152 PASS (new D()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 153 PASS (new D()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 154 PASS (new D()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 155 PASS (new D()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 156 PASS (new D()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 157 PASS (new D()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 158 158 PASS (new D()).constructor.hasOwnProperty("caller"):::false 159 159 PASS (new D()).constructor.hasOwnProperty("arguments"):::false … … 167 167 PASS 'length,name,prototype':::'length,name,prototype' 168 168 (new E()).getItem 169 PASS 'length,name ,prototype':::'length,name,prototype'170 PASS e.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.171 PASS e.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.172 PASS e.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.173 PASS e.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.174 PASS e.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.175 PASS e.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.176 PASS e.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.177 PASS e.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.169 PASS 'length,name':::'length,name' 170 PASS e.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 171 PASS e.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 172 PASS e.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 173 PASS e.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 174 PASS e.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 175 PASS e.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 176 PASS e.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 177 PASS e.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 178 178 PASS e.constructor.hasOwnProperty("caller"):::false 179 179 PASS e.constructor.hasOwnProperty("arguments"):::false … … 184 184 PASS delete e.constructor.arguments:::true 185 185 PASS delete e.constructor["arguments"]:::true 186 PASS (new E()).getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.187 PASS (new E()).getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.188 PASS (new E()).getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.189 PASS (new E()).getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.190 PASS (new E()).getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.191 PASS (new E()).getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.192 PASS (new E()).getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.193 PASS (new E()).getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.186 PASS (new E()).getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 187 PASS (new E()).getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 188 PASS (new E()).getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 189 PASS (new E()).getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 190 PASS (new E()).getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 191 PASS (new E()).getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 192 PASS (new E()).getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 193 PASS (new E()).getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 194 194 PASS (new E()).getItem.hasOwnProperty("caller"):::false 195 195 PASS (new E()).getItem.hasOwnProperty("arguments"):::false … … 201 201 PASS delete (new E()).getItem["arguments"]:::true 202 202 f.getItem 203 PASS 'length,name ,prototype':::'length,name,prototype'203 PASS 'length,name':::'length,name' 204 204 f.getElement 205 PASS 'length,name ,prototype':::'length,name,prototype'206 PASS f.getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.207 PASS f.getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.208 PASS f.getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.209 PASS f.getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.210 PASS f.getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.211 PASS f.getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.212 PASS f.getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.213 PASS f.getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.205 PASS 'length,name':::'length,name' 206 PASS f.getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 207 PASS f.getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 208 PASS f.getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 209 PASS f.getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 210 PASS f.getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 211 PASS f.getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 212 PASS f.getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 213 PASS f.getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 214 214 PASS f.getItem.hasOwnProperty("caller"):::false 215 215 PASS f.getItem.hasOwnProperty("arguments"):::false … … 220 220 PASS delete f.getItem.arguments:::true 221 221 PASS delete f.getItem["arguments"]:::true 222 PASS f.getElement.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.223 PASS f.getElement.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.224 PASS f.getElement["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.225 PASS f.getElement["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.226 PASS f.getElement.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.227 PASS f.getElement.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.228 PASS f.getElement["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.229 PASS f.getElement["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.222 PASS f.getElement.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 223 PASS f.getElement.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 224 PASS f.getElement["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 225 PASS f.getElement["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 226 PASS f.getElement.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 227 PASS f.getElement.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 228 PASS f.getElement["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 229 PASS f.getElement["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 230 230 PASS f.getElement.hasOwnProperty("caller"):::false 231 231 PASS f.getElement.hasOwnProperty("arguments"):::false … … 237 237 PASS delete f.getElement["arguments"]:::true 238 238 (new F()).getItem 239 PASS 'length,name ,prototype':::'length,name,prototype'239 PASS 'length,name':::'length,name' 240 240 (new F()).getElement 241 PASS 'length,name ,prototype':::'length,name,prototype'242 PASS (new F()).getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.243 PASS (new F()).getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.244 PASS (new F()).getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.245 PASS (new F()).getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.246 PASS (new F()).getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.247 PASS (new F()).getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.248 PASS (new F()).getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.249 PASS (new F()).getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.241 PASS 'length,name':::'length,name' 242 PASS (new F()).getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 243 PASS (new F()).getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 244 PASS (new F()).getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 245 PASS (new F()).getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 246 PASS (new F()).getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 247 PASS (new F()).getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 248 PASS (new F()).getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 249 PASS (new F()).getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 250 250 PASS (new F()).getItem.hasOwnProperty("caller"):::false 251 251 PASS (new F()).getItem.hasOwnProperty("arguments"):::false … … 256 256 PASS delete (new F()).getItem.arguments:::true 257 257 PASS delete (new F()).getItem["arguments"]:::true 258 PASS (new F()).getElement.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.259 PASS (new F()).getElement.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.260 PASS (new F()).getElement["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.261 PASS (new F()).getElement["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.262 PASS (new F()).getElement.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.263 PASS (new F()).getElement.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.264 PASS (new F()).getElement["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.265 PASS (new F()).getElement["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.258 PASS (new F()).getElement.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 259 PASS (new F()).getElement.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 260 PASS (new F()).getElement["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 261 PASS (new F()).getElement["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 262 PASS (new F()).getElement.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 263 PASS (new F()).getElement.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 264 PASS (new F()).getElement["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 265 PASS (new F()).getElement["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 266 266 PASS (new F()).getElement.hasOwnProperty("caller"):::false 267 267 PASS (new F()).getElement.hasOwnProperty("arguments"):::false … … 276 276 ()=>{} 277 277 PASS 'length,name':::'length,name' 278 PASS arr.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.279 PASS arr.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.280 PASS arr["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.281 PASS arr["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.282 PASS arr.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.283 PASS arr.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.284 PASS arr["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.285 PASS arr["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.278 PASS arr.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 279 PASS arr.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 280 PASS arr["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 281 PASS arr["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 282 PASS arr.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 283 PASS arr.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 284 PASS arr["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 285 PASS arr["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 286 286 PASS arr.hasOwnProperty("caller"):::false 287 287 PASS arr.hasOwnProperty("arguments"):::false … … 292 292 PASS delete arr.arguments:::true 293 293 PASS delete arr["arguments"]:::true 294 PASS (()=>{}).caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.295 PASS (()=>{}).arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.296 PASS (()=>{})["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.297 PASS (()=>{})["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.298 PASS (()=>{}).caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.299 PASS (()=>{}).arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.300 PASS (()=>{})["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.301 PASS (()=>{})["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.294 PASS (()=>{}).caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 295 PASS (()=>{}).arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 296 PASS (()=>{})["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 297 PASS (()=>{})["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 298 PASS (()=>{}).caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 299 PASS (()=>{}).arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 300 PASS (()=>{})["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 301 PASS (()=>{})["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 302 302 PASS (()=>{}).hasOwnProperty("caller"):::false 303 303 PASS (()=>{}).hasOwnProperty("arguments"):::false … … 312 312 PASS (new G()).item.caller:::undefined 313 313 PASS (new G()).item.arguments:::undefined 314 PASS H.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.315 PASS H.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.316 PASS H["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.317 PASS H["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.318 PASS H.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.319 PASS H.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.320 PASS H["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.321 PASS H["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.314 PASS H.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 315 PASS H.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 316 PASS H["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 317 PASS H["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 318 PASS H.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 319 PASS H.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 320 PASS H["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 321 PASS H["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 322 322 PASS H.hasOwnProperty("caller"):::false 323 323 PASS H.hasOwnProperty("arguments"):::false … … 331 331 PASS h.arguments():::"value" 332 332 h.caller 333 PASS 'length,name ,prototype':::'length,name,prototype'333 PASS 'length,name':::'length,name' 334 334 h.arguments 335 PASS 'length,name ,prototype':::'length,name,prototype'336 PASS h.caller.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.337 PASS h.caller.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.338 PASS h.caller["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.339 PASS h.caller["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.340 PASS h.caller.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.341 PASS h.caller.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.342 PASS h.caller["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.343 PASS h.caller["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.335 PASS 'length,name':::'length,name' 336 PASS h.caller.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 337 PASS h.caller.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 338 PASS h.caller["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 339 PASS h.caller["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 340 PASS h.caller.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 341 PASS h.caller.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 342 PASS h.caller["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 343 PASS h.caller["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 344 344 PASS h.caller.hasOwnProperty("caller"):::false 345 345 PASS h.caller.hasOwnProperty("arguments"):::false … … 352 352 PASS (new H()).caller():::"value" 353 353 PASS (new H()).arguments():::"value" 354 PASS (new H()).caller.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.355 PASS (new H()).caller.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.356 PASS (new H()).caller["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.357 PASS (new H()).caller["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.358 PASS (new H()).caller.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.359 PASS (new H()).caller.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.360 PASS (new H()).caller["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.361 PASS (new H()).caller["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.354 PASS (new H()).caller.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 355 PASS (new H()).caller.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 356 PASS (new H()).caller["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 357 PASS (new H()).caller["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 358 PASS (new H()).caller.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 359 PASS (new H()).caller.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 360 PASS (new H()).caller["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 361 PASS (new H()).caller["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 362 362 PASS (new H()).caller.hasOwnProperty("caller"):::false 363 363 PASS (new H()).caller.hasOwnProperty("arguments"):::false … … 372 372 J.get 373 373 PASS 'length,name,prototype':::'length,name,prototype' 374 PASS J.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.375 PASS J.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.376 PASS J.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.377 PASS J.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.378 PASS J.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.379 PASS J.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.380 PASS J.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.381 PASS J.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.374 PASS J.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 375 PASS J.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 376 PASS J.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 377 PASS J.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 378 PASS J.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 379 PASS J.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 380 PASS J.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 381 PASS J.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 382 382 PASS J.gen.hasOwnProperty("caller"):::false 383 383 PASS J.gen.hasOwnProperty("arguments"):::false … … 388 388 PASS delete J.gen.arguments:::true 389 389 PASS delete J.gen["arguments"]:::true 390 PASS J.get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.391 PASS J.get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.392 PASS J.get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.393 PASS J.get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.394 PASS J.get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.395 PASS J.get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.396 PASS J.get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.397 PASS J.get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.390 PASS J.get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 391 PASS J.get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 392 PASS J.get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 393 PASS J.get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 394 PASS J.get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 395 PASS J.get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 396 PASS J.get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 397 PASS J.get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 398 398 PASS J.get.hasOwnProperty("caller"):::false 399 399 PASS J.get.hasOwnProperty("arguments"):::false … … 408 408 j.get 409 409 PASS 'length,name,prototype':::'length,name,prototype' 410 PASS j.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.411 PASS j.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.412 PASS j.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.413 PASS j.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.414 PASS j.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.415 PASS j.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.416 PASS j.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.417 PASS j.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.410 PASS j.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 411 PASS j.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 412 PASS j.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 413 PASS j.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 414 PASS j.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 415 PASS j.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 416 PASS j.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 417 PASS j.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 418 418 PASS j.gen.hasOwnProperty("caller"):::false 419 419 PASS j.gen.hasOwnProperty("arguments"):::false … … 424 424 PASS delete j.gen.arguments:::true 425 425 PASS delete j.gen["arguments"]:::true 426 PASS j.get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.427 PASS j.get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.428 PASS j.get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.429 PASS j.get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.430 PASS j.get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.431 PASS j.get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.432 PASS j.get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.433 PASS j.get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.426 PASS j.get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 427 PASS j.get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 428 PASS j.get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 429 PASS j.get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 430 PASS j.get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 431 PASS j.get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 432 PASS j.get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 433 PASS j.get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 434 434 PASS j.get.hasOwnProperty("caller"):::false 435 435 PASS j.get.hasOwnProperty("arguments"):::false … … 444 444 (new J).get 445 445 PASS 'length,name,prototype':::'length,name,prototype' 446 PASS (new J).gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.447 PASS (new J).gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.448 PASS (new J).gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.449 PASS (new J).gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.450 PASS (new J).gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.451 PASS (new J).gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.452 PASS (new J).gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.453 PASS (new J).gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.446 PASS (new J).gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 447 PASS (new J).gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 448 PASS (new J).gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 449 PASS (new J).gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 450 PASS (new J).gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 451 PASS (new J).gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 452 PASS (new J).gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 453 PASS (new J).gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 454 454 PASS (new J).gen.hasOwnProperty("caller"):::false 455 455 PASS (new J).gen.hasOwnProperty("arguments"):::false … … 460 460 PASS delete (new J).gen.arguments:::true 461 461 PASS delete (new J).gen["arguments"]:::true 462 PASS (new J).get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.463 PASS (new J).get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.464 PASS (new J).get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.465 PASS (new J).get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.466 PASS (new J).get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.467 PASS (new J).get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.468 PASS (new J).get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.469 PASS (new J).get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode.462 PASS (new J).get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 463 PASS (new J).get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 464 PASS (new J).get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 465 PASS (new J).get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 466 PASS (new J).get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 467 PASS (new J).get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 468 PASS (new J).get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 469 PASS (new J).get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 470 470 PASS (new J).get.hasOwnProperty("caller"):::false 471 471 PASS (new J).get.hasOwnProperty("arguments"):::false … … 476 476 PASS delete (new J).get.arguments:::true 477 477 PASS delete (new J).get["arguments"]:::true 478 k.method 479 PASS 'length,name':::'length,name' 480 PASS k.method.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 481 PASS k.method.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 482 PASS k.method["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 483 PASS k.method["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 484 PASS k.method.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 485 PASS k.method.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 486 PASS k.method["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 487 PASS k.method["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 488 PASS k.method.hasOwnProperty("caller"):::false 489 PASS k.method.hasOwnProperty("arguments"):::false 490 PASS Object.getOwnPropertyDescriptor(k.method, "caller"):::undefined 491 PASS Object.getOwnPropertyDescriptor(k.method, "arguments"):::undefined 492 PASS delete k.method.caller:::true 493 PASS delete k.method["caller"]:::true 494 PASS delete k.method.arguments:::true 495 PASS delete k.method["arguments"]:::true 496 k.gen 497 PASS 'length,name,prototype':::'length,name,prototype' 498 PASS k.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 499 PASS k.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 500 PASS k.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 501 PASS k.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 502 PASS k.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 503 PASS k.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 504 PASS k.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 505 PASS k.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 506 PASS k.gen.hasOwnProperty("caller"):::false 507 PASS k.gen.hasOwnProperty("arguments"):::false 508 PASS Object.getOwnPropertyDescriptor(k.gen, "caller"):::undefined 509 PASS Object.getOwnPropertyDescriptor(k.gen, "arguments"):::undefined 510 PASS delete k.gen.caller:::true 511 PASS delete k.gen["caller"]:::true 512 PASS delete k.gen.arguments:::true 513 PASS delete k.gen["arguments"]:::true 514 k.getter 515 PASS 'length,name':::'length,name' 516 PASS Object.getOwnPropertyDescriptor(k, 'getter').get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 517 PASS Object.getOwnPropertyDescriptor(k, 'getter').get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 518 PASS Object.getOwnPropertyDescriptor(k, 'getter').get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 519 PASS Object.getOwnPropertyDescriptor(k, 'getter').get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 520 PASS Object.getOwnPropertyDescriptor(k, 'getter').get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 521 PASS Object.getOwnPropertyDescriptor(k, 'getter').get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 522 PASS Object.getOwnPropertyDescriptor(k, 'getter').get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 523 PASS Object.getOwnPropertyDescriptor(k, 'getter').get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 524 PASS Object.getOwnPropertyDescriptor(k, 'getter').get.hasOwnProperty("caller"):::false 525 PASS Object.getOwnPropertyDescriptor(k, 'getter').get.hasOwnProperty("arguments"):::false 526 PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'getter').get, "caller"):::undefined 527 PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'getter').get, "arguments"):::undefined 528 PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get.caller:::true 529 PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get["caller"]:::true 530 PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get.arguments:::true 531 PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get["arguments"]:::true 532 k.setter 533 PASS 'length,name':::'length,name' 534 PASS Object.getOwnPropertyDescriptor(k, 'setter').set.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 535 PASS Object.getOwnPropertyDescriptor(k, 'setter').set.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 536 PASS Object.getOwnPropertyDescriptor(k, 'setter').set["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 537 PASS Object.getOwnPropertyDescriptor(k, 'setter').set["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 538 PASS Object.getOwnPropertyDescriptor(k, 'setter').set.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 539 PASS Object.getOwnPropertyDescriptor(k, 'setter').set.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 540 PASS Object.getOwnPropertyDescriptor(k, 'setter').set["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 541 PASS Object.getOwnPropertyDescriptor(k, 'setter').set["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. 542 PASS Object.getOwnPropertyDescriptor(k, 'setter').set.hasOwnProperty("caller"):::false 543 PASS Object.getOwnPropertyDescriptor(k, 'setter').set.hasOwnProperty("arguments"):::false 544 PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'setter').set, "caller"):::undefined 545 PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'setter').set, "arguments"):::undefined 546 PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set.caller:::true 547 PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set["caller"]:::true 548 PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set.arguments:::true 549 PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set["arguments"]:::true 478 550 PASS successfullyParsed:::true 479 551 -
trunk/LayoutTests/js/non-strict-function-properties-expected.txt
r205856 r207461 20 20 PASS boo("expected-value")[0] is "expected-value" 21 21 PASS g(f) is g 22 PASS doSetCaller(value, false) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..22 PASS doSetCaller(value, false) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 23 23 PASS doSetCaller(value, true).__proto__.caller is value 24 PASS doSetArguments(value, false) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in strict mode..24 PASS doSetArguments(value, false) threw exception TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. 25 25 PASS doSetArguments(value, true).__proto__.arguments is value 26 26 PASS successfullyParsed is true -
trunk/LayoutTests/js/script-tests/caller-property.js
r201619 r207461 28 28 function strictTailCaller(x) { "use strict"; return x(); } 29 29 shouldBe("nonStrictCaller(nonStrictCallee)", "nonStrictCaller"); 30 shouldThrow("nonStrictCaller(strictCallee)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in strict mode."');30 shouldThrow("nonStrictCaller(strictCallee)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 31 31 shouldThrow("strictCaller(nonStrictCallee)"); 32 shouldThrow("strictCaller(strictCallee)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in strict mode."');32 shouldThrow("strictCaller(strictCallee)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 33 33 shouldBe("strictTailCaller(nonStrictCallee)", "null"); 34 34 shouldThrow("strictTailCaller(strictCallee)"); … … 44 44 shouldThrow("strictTailCaller(boundStrictCallee)"); 45 45 46 // Check that .caller works (or throws) as expected, over an accessor call.46 // Check that .caller throws as expected, over an accessor call. (per https://tc39.github.io/ecma262/#sec-forbidden-extensions) 47 47 function getFooGetter(x) { return Object.getOwnPropertyDescriptor(x, 'foo').get; } 48 48 function getFooSetter(x) { return Object.getOwnPropertyDescriptor(x, 'foo').set; } … … 59 59 function strictGetter(x) { "use strict"; return x.foo; } 60 60 function strictSetter(x) { "use strict"; x.foo = nonStrictSetter; return true; } 61 shouldBe("nonStrictGetter(nonStrictAccessor)", "nonStrictGetter"); 62 shouldBeTrue("nonStrictSetter(nonStrictAccessor)"); 63 shouldThrow("nonStrictGetter(strictAccessor)"); 64 shouldThrow("nonStrictSetter(strictAccessor)"); 65 shouldThrow("strictGetter(nonStrictAccessor)", '"TypeError: Function.caller used to retrieve strict caller"'); 66 shouldThrow("strictSetter(nonStrictAccessor)", '"TypeError: Function.caller used to retrieve strict caller"'); 61 shouldThrow("nonStrictGetter(nonStrictAccessor)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 62 shouldThrow("nonStrictGetter(strictAccessor)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 63 shouldThrow("strictGetter(nonStrictAccessor)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 64 shouldThrow("strictSetter(nonStrictAccessor)", '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 67 65 shouldThrow("strictGetter(strictAccessor)"); 68 66 shouldThrow("strictSetter(strictAccessor)"); -
trunk/LayoutTests/js/script-tests/class-syntax-method-names.js
r205856 r207461 32 32 shouldBe("(class X {static get arguments() {return staticMethodValue;}}).hasOwnProperty('arguments')", "true"); 33 33 shouldBe("(class X {static get caller() {return staticMethodValue;}}).hasOwnProperty('caller')", "true"); 34 shouldThrow('class X {static caller() {return staticMethodValue;}};X.arguments = function(){}', '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in strict mode."');35 shouldThrow('class X {static arguments() {return staticMethodValue;}}; X.caller = function(){}', '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in strict mode."');34 shouldThrow('class X {static caller() {return staticMethodValue;}};X.arguments = function(){}', '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 35 shouldThrow('class X {static arguments() {return staticMethodValue;}}; X.caller = function(){}', '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'); 36 36 shouldBe('class X {static caller() {return "";}} X.caller = function(){ return staticMethodValue; };X.caller()', 'staticMethodValue'); 37 37 shouldBe('class X {static arguments() {return "";}}; X.arguments = function(){ return staticMethodValue; };X.arguments()', 'staticMethodValue'); -
trunk/LayoutTests/js/script-tests/es6-function-properties.js
r205856 r207461 25 25 } 26 26 27 var typeErrorText = '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in strict mode."';27 var typeErrorText = '"TypeError: \'arguments\', \'callee\', and \'caller\' cannot be accessed in this context."'; 28 28 29 29 class A { }; … … 107 107 108 108 checkProperties(e.constructor, "length,name,prototype", "e.constructor"); 109 checkProperties((new E()).getItem, "length,name ,prototype", "(new E()).getItem");109 checkProperties((new E()).getItem, "length,name", "(new E()).getItem"); 110 110 111 111 check('e.constructor'); … … 114 114 var f = new F; 115 115 116 checkProperties(f.getItem, "length,name ,prototype", "f.getItem");117 checkProperties(f.getElement, "length,name ,prototype", "f.getElement");116 checkProperties(f.getItem, "length,name", "f.getItem"); 117 checkProperties(f.getElement, "length,name", "f.getElement"); 118 118 119 119 check('f.getItem'); 120 120 check('f.getElement'); 121 121 122 checkProperties((new F()).getItem, "length,name ,prototype", "(new F()).getItem");123 checkProperties((new F()).getElement, "length,name ,prototype", "(new F()).getElement");122 checkProperties((new F()).getItem, "length,name", "(new F()).getItem"); 123 checkProperties((new F()).getElement, "length,name", "(new F()).getElement"); 124 124 125 125 check('(new F()).getItem'); … … 152 152 shouldBe('h.arguments()', '"value"'); 153 153 154 checkProperties(h.caller, "length,name ,prototype", "h.caller");155 checkProperties(h.arguments, "length,name ,prototype", "h.arguments");154 checkProperties(h.caller, "length,name", "h.caller"); 155 checkProperties(h.arguments, "length,name", "h.arguments"); 156 156 157 157 check('h.caller'); … … 189 189 check('(new J).get'); 190 190 191 var k = { 192 method() {}, 193 *gen() {}, 194 get getter() { }, 195 set setter(v) { } 196 }; 197 198 checkProperties(k.method, "length,name", "k.method"); 199 check("k.method"); 200 201 checkProperties(k.gen, "length,name,prototype", "k.gen"); 202 check("k.gen"); 203 204 checkProperties(Object.getOwnPropertyDescriptor(k, "getter").get, "length,name", "k.getter"); 205 check("Object.getOwnPropertyDescriptor(k, 'getter').get"); 206 207 checkProperties(Object.getOwnPropertyDescriptor(k, "setter").set, "length,name", "k.setter"); 208 check("Object.getOwnPropertyDescriptor(k, 'setter').set"); 209 191 210 var successfullyParsed = true; -
trunk/LayoutTests/js/script-tests/non-strict-function-properties.js
r205856 r207461 50 50 var value = "property-value"; 51 51 52 shouldThrow("doSetCaller(value, false)", "'TypeError: \\'arguments\\', \\'callee\\', and \\'caller\\' cannot be accessed in strict mode.'");52 shouldThrow("doSetCaller(value, false)", "'TypeError: \\'arguments\\', \\'callee\\', and \\'caller\\' cannot be accessed in this context.'"); 53 53 shouldBe("doSetCaller(value, true).__proto__.caller", "value"); 54 54 … … 62 62 }; 63 63 64 shouldThrow("doSetArguments(value, false)", "'TypeError: \\'arguments\\', \\'callee\\', and \\'caller\\' cannot be accessed in strict mode.'");64 shouldThrow("doSetArguments(value, false)", "'TypeError: \\'arguments\\', \\'callee\\', and \\'caller\\' cannot be accessed in this context.'"); 65 65 shouldBe("doSetArguments(value, true).__proto__.arguments", "value"); -
trunk/Source/JavaScriptCore/ChangeLog
r207456 r207461 1 2016-10-18 Caitlin Potter <caitp@igalia.com> 2 3 [JSC] ES6 Method functions should not have prototype 4 https://bugs.webkit.org/show_bug.cgi?id=162530 5 6 Reviewed by Saam Barati. 7 8 ECMA-262 only adds "prototype" properties to specific syntactic function forms. 9 Specific items which do not contain "prototype" include (most) built-in functions (such as Math.pow), 10 MethodDefinitions which are not either class "constructor" methods or GeneratorMethods, AsyncFunctions, 11 and ArrowFunctions. 12 13 For details, see the following spec text, and the difference between GeneratorMethod evaluation and 14 the evaluation of other MethodDefinition forms. 15 16 - https://tc39.github.io/ecma262/#sec-method-definitions-runtime-semantics-propertydefinitionevaluation 17 - https://tc39.github.io/ecma262/#sec-arrow-function-definitions-runtime-semantics-evaluation 18 - https://tc39.github.io/ecmascript-asyncawait/#async-function-instances 19 - https://tc39.github.io/ecma262/#sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation 20 21 22 * runtime/Executable.h: 23 * runtime/JSFunction.cpp: 24 (JSC::JSFunction::callerGetter): 25 (JSC::JSFunction::getOwnPropertySlot): 26 (JSC::JSFunction::deleteProperty): 27 28 * bytecompiler/BytecodeGenerator.h: 29 (JSC::BytecodeGenerator::makeFunction): 30 * runtime/Executable.h: 31 * runtime/JSFunction.cpp: 32 (JSC::JSFunction::getOwnPropertySlot): 33 (JSC::JSFunction::getOwnNonIndexPropertyNames): 34 (JSC::JSFunction::put): 35 (JSC::JSFunction::deleteProperty): 36 (JSC::JSFunction::defineOwnProperty): 37 * runtime/JSGlobalObjectFunctions.cpp: 38 (JSC::globalFuncThrowTypeErrorArgumentsCalleeAndCaller): 39 1 40 2016-10-17 Yusuke Suzuki <utatane.tea@gmail.com> 2 41 -
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
r207228 r207461 856 856 // https://bugs.webkit.org/show_bug.cgi?id=151547 857 857 SourceParseMode parseMode = metadata->parseMode(); 858 ConstructAbility constructAbility = ConstructAbility::CanConstruct; 859 if (parseMode == SourceParseMode::GetterMode || parseMode == SourceParseMode::SetterMode || parseMode == SourceParseMode::ArrowFunctionMode || parseMode == SourceParseMode::GeneratorWrapperFunctionMode) 860 constructAbility = ConstructAbility::CannotConstruct; 861 else if (parseMode == SourceParseMode::MethodMode && metadata->constructorKind() == ConstructorKind::None) 862 constructAbility = ConstructAbility::CannotConstruct; 858 ConstructAbility constructAbility = constructAbilityForParseMode(parseMode); 859 if (parseMode == SourceParseMode::MethodMode && metadata->constructorKind() != ConstructorKind::None) 860 constructAbility = ConstructAbility::CanConstruct; 863 861 864 862 return UnlinkedFunctionExecutable::create(m_vm, m_scopeNode->source(), metadata, isBuiltinFunction() ? UnlinkedBuiltinFunction : UnlinkedNormalFunction, constructAbility, scriptMode(), variablesUnderTDZ, newDerivedContextType); -
trunk/Source/JavaScriptCore/runtime/Executable.h
r206525 r207461 650 650 bool isGetter() const { return parseMode() == SourceParseMode::GetterMode; } 651 651 bool isSetter() const { return parseMode() == SourceParseMode::SetterMode; } 652 bool isGenerator() const { return parseMode() == SourceParseMode::GeneratorBodyMode || parseMode() == SourceParseMode::GeneratorWrapperFunctionMode; } 653 bool isES6Function() const { return isClassConstructorFunction() || isArrowFunction() || isGenerator() || parseMode() == SourceParseMode::MethodMode;} 652 bool isGenerator() const { return SourceParseModeSet(SourceParseMode::GeneratorBodyMode, SourceParseMode::GeneratorWrapperFunctionMode).contains(parseMode()); } 653 bool isMethod() const { return parseMode() == SourceParseMode::MethodMode; } 654 bool hasCallerAndArgumentsProperties() const 655 { 656 // Per https://tc39.github.io/ecma262/#sec-forbidden-extensions, only sloppy-mode non-builtin functions in old-style (pre-ES6) syntactic forms can contain 657 // "caller" and "arguments". 658 return !isStrictMode() && parseMode() == SourceParseMode::NormalFunctionMode && !isClassConstructorFunction(); 659 } 660 bool hasPrototypeProperty() const 661 { 662 return SourceParseModeSet( 663 SourceParseMode::NormalFunctionMode, 664 SourceParseMode::GeneratorBodyMode, 665 SourceParseMode::GeneratorWrapperFunctionMode 666 ).contains(parseMode()) || isClass(); 667 } 654 668 DerivedContextType derivedContextType() const { return m_unlinkedExecutable->derivedContextType(); } 655 669 bool isClassConstructorFunction() const { return m_unlinkedExecutable->isClassConstructorFunction(); } -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r207411 r207461 353 353 } 354 354 355 if (propertyName == vm.propertyNames->prototype && !thisObject->jsExecutable()->isArrowFunction()) {355 if (propertyName == vm.propertyNames->prototype && thisObject->jsExecutable()->hasPrototypeProperty() && !thisObject->jsExecutable()->isClassConstructorFunction()) { 356 356 unsigned attributes; 357 357 PropertyOffset offset = thisObject->getDirectOffset(vm, propertyName, attributes); … … 377 377 378 378 if (propertyName == exec->propertyNames().arguments) { 379 if ( thisObject->jsExecutable()->isStrictMode() || thisObject->jsExecutable()->isES6Function())379 if (!thisObject->jsExecutable()->hasCallerAndArgumentsProperties()) 380 380 return Base::getOwnPropertySlot(thisObject, exec, propertyName, slot); 381 381 382 382 slot.setCacheableCustom(thisObject, ReadOnly | DontEnum | DontDelete, argumentsGetter); 383 383 return true; … … 385 385 386 386 if (propertyName == exec->propertyNames().caller) { 387 if ( thisObject->jsExecutable()->isStrictMode() || thisObject->jsExecutable()->isES6Function())387 if (!thisObject->jsExecutable()->hasCallerAndArgumentsProperties()) 388 388 return Base::getOwnPropertySlot(thisObject, exec, propertyName, slot); 389 389 … … 406 406 thisObject->methodTable(vm)->getOwnPropertySlot(thisObject, exec, vm.propertyNames->prototype, slot); 407 407 408 if ( !thisObject->jsExecutable()->isStrictMode() && !thisObject->jsExecutable()->isES6Function()) {408 if (thisObject->jsExecutable()->hasCallerAndArgumentsProperties()) { 409 409 propertyNames.add(vm.propertyNames->arguments); 410 410 propertyNames.add(vm.propertyNames->caller); … … 447 447 } 448 448 449 if ((thisObject->jsExecutable()->isStrictMode() || thisObject->jsExecutable()->isES6Function()) && (propertyName == vm.propertyNames->arguments || propertyName == vm.propertyNames->caller)) { 450 // This will trigger the property to be reified, if this is not already the case! 451 bool okay = thisObject->hasProperty(exec, propertyName); 452 ASSERT_UNUSED(okay, okay); 453 scope.release(); 454 return Base::put(thisObject, exec, propertyName, value, slot); 455 } 456 if (propertyName == vm.propertyNames->arguments || propertyName == vm.propertyNames->caller) 449 if (propertyName == exec->propertyNames().arguments || propertyName == exec->propertyNames().caller) { 450 if (!thisObject->jsExecutable()->hasCallerAndArgumentsProperties()) { 451 // This will trigger the property to be reified, if this is not already the case! 452 // FIXME: Investigate if the `hasProperty()` call is even needed, as in the `!hasCallerAndArgumentsProperties()` case, 453 // these properties are not lazy and should not need to be reified. (https://bugs.webkit.org/show_bug.cgi?id=163579) 454 bool okay = thisObject->hasProperty(exec, propertyName); 455 ASSERT_UNUSED(okay, okay); 456 scope.release(); 457 return Base::put(thisObject, exec, propertyName, value, slot); 458 } 457 459 return reject(exec, scope, slot.isStrictMode(), ASCIILiteral(ReadonlyPropertyWriteError)); 460 } 458 461 thisObject->reifyLazyPropertyIfNeeded(vm, exec, propertyName); 459 462 scope.release(); … … 470 473 VM& vm = exec->vm(); 471 474 FunctionExecutable* executable = thisObject->jsExecutable(); 472 bool isES6OrStrictMode = executable->isStrictMode() || executable->isES6Function(); 473 if ((propertyName == exec->propertyNames().arguments && !isES6OrStrictMode) 474 || (propertyName == exec->propertyNames().prototype && !executable->isArrowFunction()) 475 || (propertyName == exec->propertyNames().caller && !isES6OrStrictMode)) 475 476 if (propertyName == exec->propertyNames().caller || propertyName == exec->propertyNames().arguments) 477 return !executable->hasCallerAndArgumentsProperties(); 478 479 if (propertyName == exec->propertyNames().prototype && !executable->isArrowFunction()) 476 480 return false; 477 478 if ((propertyName == exec->propertyNames().arguments && isES6OrStrictMode)479 || (propertyName == exec->propertyNames().caller && isES6OrStrictMode))480 return true;481 481 482 482 thisObject->reifyLazyPropertyIfNeeded(vm, exec, propertyName); … … 509 509 bool valueCheck; 510 510 if (propertyName == vm.propertyNames->arguments) { 511 if ( thisObject->jsExecutable()->isClass()) {512 thisObject->reifyLazyPropertyIfNeeded(vm, exec, propertyName);513 return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException);514 }515 if (thisObject->jsExecutable()->isStrictMode() || thisObject->jsExecutable()->isES6Function()) {511 if (!thisObject->jsExecutable()->hasCallerAndArgumentsProperties()) { 512 if (thisObject->jsExecutable()->isClass()) { 513 thisObject->reifyLazyPropertyIfNeeded(vm, exec, propertyName); 514 return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException); 515 } 516 516 PropertySlot slot(thisObject, PropertySlot::InternalMethodType::VMInquiry); 517 517 if (!Base::getOwnPropertySlot(thisObject, exec, propertyName, slot)) … … 521 521 valueCheck = !descriptor.value() || sameValue(exec, descriptor.value(), retrieveArguments(exec, thisObject)); 522 522 } else if (propertyName == vm.propertyNames->caller) { 523 if ( thisObject->jsExecutable()->isClass()) {524 thisObject->reifyLazyPropertyIfNeeded(vm, exec, propertyName);525 return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException);526 }527 if (thisObject->jsExecutable()->isStrictMode() || thisObject->jsExecutable()->isES6Function()) {523 if (!thisObject->jsExecutable()->hasCallerAndArgumentsProperties()) { 524 if (thisObject->jsExecutable()->isClass()) { 525 thisObject->reifyLazyPropertyIfNeeded(vm, exec, propertyName); 526 return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException); 527 } 528 528 PropertySlot slot(thisObject, PropertySlot::InternalMethodType::VMInquiry); 529 529 if (!Base::getOwnPropertySlot(thisObject, exec, propertyName, slot)) -
trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
r206386 r207461 863 863 VM& vm = exec->vm(); 864 864 auto scope = DECLARE_THROW_SCOPE(vm); 865 return throwVMTypeError(exec, scope, "'arguments', 'callee', and 'caller' cannot be accessed in strict mode.");865 return throwVMTypeError(exec, scope, "'arguments', 'callee', and 'caller' cannot be accessed in this context."); 866 866 } 867 867
Note: See TracChangeset
for help on using the changeset viewer.