Tests for ES6 class method and constructor properties On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". a.constructor PASS 'length,name,prototype':::'length,name,prototype' (new A()).constructor PASS 'length,name,prototype':::'length,name,prototype' PASS a.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.hasOwnProperty("caller"):::false PASS a.constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(a.constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(a.constructor, "arguments"):::undefined PASS delete a.constructor.caller:::true PASS delete a.constructor["caller"]:::true PASS delete a.constructor.arguments:::true PASS delete a.constructor["arguments"]:::true PASS a.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS a.constructor.hasOwnProperty("caller"):::false PASS a.constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(a.constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(a.constructor, "arguments"):::undefined PASS delete a.constructor.caller:::true PASS delete a.constructor["caller"]:::true PASS delete a.constructor.arguments:::true PASS delete a.constructor["arguments"]:::true PASS (new A()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new A()).constructor.hasOwnProperty("caller"):::false PASS (new A()).constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new A()).constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new A()).constructor, "arguments"):::undefined PASS delete (new A()).constructor.caller:::true PASS delete (new A()).constructor["caller"]:::true PASS delete (new A()).constructor.arguments:::true PASS delete (new A()).constructor["arguments"]:::true b.constructor PASS 'length,name,prototype':::'length,name,prototype' (new B()).constructor PASS 'length,name,prototype':::'length,name,prototype' PASS b.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS b.constructor.hasOwnProperty("caller"):::false PASS b.constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(b.constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(b.constructor, "arguments"):::undefined PASS delete b.constructor.caller:::true PASS delete b.constructor["caller"]:::true PASS delete b.constructor.arguments:::true PASS delete b.constructor["arguments"]:::true PASS (new B()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new B()).constructor.hasOwnProperty("caller"):::false PASS (new B()).constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new B()).constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new B()).constructor, "arguments"):::undefined PASS delete (new B()).constructor.caller:::true PASS delete (new B()).constructor["caller"]:::true PASS delete (new B()).constructor.arguments:::true PASS delete (new B()).constructor["arguments"]:::true c.constructor PASS 'length,name,prototype':::'length,name,prototype' (new C()).constructor PASS 'length,name,prototype':::'length,name,prototype' PASS c.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS c.constructor.hasOwnProperty("caller"):::false PASS c.constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(c.constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(c.constructor, "arguments"):::undefined PASS delete c.constructor.caller:::true PASS delete c.constructor["caller"]:::true PASS delete c.constructor.arguments:::true PASS delete c.constructor["arguments"]:::true PASS (new C()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new C()).constructor.hasOwnProperty("caller"):::false PASS (new C()).constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new C()).constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new C()).constructor, "arguments"):::undefined PASS delete (new C()).constructor.caller:::true PASS delete (new C()).constructor["caller"]:::true PASS delete (new C()).constructor.arguments:::true PASS delete (new C()).constructor["arguments"]:::true c.constructor PASS 'length,name,prototype':::'length,name,prototype' (new D()).constructor PASS 'length,name,prototype':::'length,name,prototype' PASS d.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS d.constructor.hasOwnProperty("caller"):::false PASS d.constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(d.constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(d.constructor, "arguments"):::undefined PASS delete d.constructor.caller:::true PASS delete d.constructor["caller"]:::true PASS delete d.constructor.arguments:::true PASS delete d.constructor["arguments"]:::true PASS (new D()).constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new D()).constructor.hasOwnProperty("caller"):::false PASS (new D()).constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new D()).constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new D()).constructor, "arguments"):::undefined PASS delete (new D()).constructor.caller:::true PASS delete (new D()).constructor["caller"]:::true PASS delete (new D()).constructor.arguments:::true PASS delete (new D()).constructor["arguments"]:::true e.constructor PASS 'length,name,prototype':::'length,name,prototype' (new E()).getItem PASS 'length,name':::'length,name' PASS e.constructor.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS e.constructor.hasOwnProperty("caller"):::false PASS e.constructor.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(e.constructor, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(e.constructor, "arguments"):::undefined PASS delete e.constructor.caller:::true PASS delete e.constructor["caller"]:::true PASS delete e.constructor.arguments:::true PASS delete e.constructor["arguments"]:::true PASS (new E()).getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new E()).getItem.hasOwnProperty("caller"):::false PASS (new E()).getItem.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new E()).getItem, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new E()).getItem, "arguments"):::undefined PASS delete (new E()).getItem.caller:::true PASS delete (new E()).getItem["caller"]:::true PASS delete (new E()).getItem.arguments:::true PASS delete (new E()).getItem["arguments"]:::true f.getItem PASS 'length,name':::'length,name' f.getElement PASS 'length,name':::'length,name' PASS f.getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getItem.hasOwnProperty("caller"):::false PASS f.getItem.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(f.getItem, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(f.getItem, "arguments"):::undefined PASS delete f.getItem.caller:::true PASS delete f.getItem["caller"]:::true PASS delete f.getItem.arguments:::true PASS delete f.getItem["arguments"]:::true PASS f.getElement.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS f.getElement.hasOwnProperty("caller"):::false PASS f.getElement.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(f.getElement, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(f.getElement, "arguments"):::undefined PASS delete f.getElement.caller:::true PASS delete f.getElement["caller"]:::true PASS delete f.getElement.arguments:::true PASS delete f.getElement["arguments"]:::true (new F()).getItem PASS 'length,name':::'length,name' (new F()).getElement PASS 'length,name':::'length,name' PASS (new F()).getItem.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getItem.hasOwnProperty("caller"):::false PASS (new F()).getItem.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new F()).getItem, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new F()).getItem, "arguments"):::undefined PASS delete (new F()).getItem.caller:::true PASS delete (new F()).getItem["caller"]:::true PASS delete (new F()).getItem.arguments:::true PASS delete (new F()).getItem["arguments"]:::true PASS (new F()).getElement.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new F()).getElement.hasOwnProperty("caller"):::false PASS (new F()).getElement.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new F()).getElement, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new F()).getElement, "arguments"):::undefined PASS delete (new F()).getElement.caller:::true PASS delete (new F()).getElement["caller"]:::true PASS delete (new F()).getElement.arguments:::true PASS delete (new F()).getElement["arguments"]:::true arr PASS 'length,name':::'length,name' ()=>{} PASS 'length,name':::'length,name' PASS arr.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS arr.hasOwnProperty("caller"):::false PASS arr.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(arr, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(arr, "arguments"):::undefined PASS delete arr.caller:::true PASS delete arr["caller"]:::true PASS delete arr.arguments:::true PASS delete arr["arguments"]:::true PASS (()=>{}).caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{}).arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{})["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{})["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{}).caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{}).arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{})["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{})["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (()=>{}).hasOwnProperty("caller"):::false PASS (()=>{}).hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((()=>{}), "caller"):::undefined PASS Object.getOwnPropertyDescriptor((()=>{}), "arguments"):::undefined PASS delete (()=>{}).caller:::true PASS delete (()=>{})["caller"]:::true PASS delete (()=>{}).arguments:::true PASS delete (()=>{})["arguments"]:::true PASS g.item.caller:::undefined PASS g.item.arguments:::undefined PASS (new G()).item.caller:::undefined PASS (new G()).item.arguments:::undefined PASS H.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS H.hasOwnProperty("caller"):::false PASS H.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(H, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(H, "arguments"):::undefined PASS delete H.caller:::true PASS delete H["caller"]:::true PASS delete H.arguments:::true PASS delete H["arguments"]:::true PASS h.caller():::"value" PASS h.arguments():::"value" h.caller PASS 'length,name':::'length,name' h.arguments PASS 'length,name':::'length,name' PASS h.caller.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS h.caller.hasOwnProperty("caller"):::false PASS h.caller.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(h.caller, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(h.caller, "arguments"):::undefined PASS delete h.caller.caller:::true PASS delete h.caller["caller"]:::true PASS delete h.caller.arguments:::true PASS delete h.caller["arguments"]:::true PASS (new H()).caller():::"value" PASS (new H()).arguments():::"value" PASS (new H()).caller.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new H()).caller.hasOwnProperty("caller"):::false PASS (new H()).caller.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new H()).caller, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new H()).caller, "arguments"):::undefined PASS delete (new H()).caller.caller:::true PASS delete (new H()).caller["caller"]:::true PASS delete (new H()).caller.arguments:::true PASS delete (new H()).caller["arguments"]:::true J.gen PASS 'length,name,prototype':::'length,name,prototype' J.get PASS 'length,name,prototype':::'length,name,prototype' PASS J.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.gen.hasOwnProperty("caller"):::false PASS J.gen.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(J.gen, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(J.gen, "arguments"):::undefined PASS delete J.gen.caller:::true PASS delete J.gen["caller"]:::true PASS delete J.gen.arguments:::true PASS delete J.gen["arguments"]:::true PASS J.get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS J.get.hasOwnProperty("caller"):::false PASS J.get.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(J.get, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(J.get, "arguments"):::undefined PASS delete J.get.caller:::true PASS delete J.get["caller"]:::true PASS delete J.get.arguments:::true PASS delete J.get["arguments"]:::true j.gen PASS 'length,name,prototype':::'length,name,prototype' j.get PASS 'length,name,prototype':::'length,name,prototype' PASS j.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.gen.hasOwnProperty("caller"):::false PASS j.gen.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(j.gen, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(j.gen, "arguments"):::undefined PASS delete j.gen.caller:::true PASS delete j.gen["caller"]:::true PASS delete j.gen.arguments:::true PASS delete j.gen["arguments"]:::true PASS j.get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS j.get.hasOwnProperty("caller"):::false PASS j.get.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(j.get, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(j.get, "arguments"):::undefined PASS delete j.get.caller:::true PASS delete j.get["caller"]:::true PASS delete j.get.arguments:::true PASS delete j.get["arguments"]:::true (new J).gen PASS 'length,name,prototype':::'length,name,prototype' (new J).get PASS 'length,name,prototype':::'length,name,prototype' PASS (new J).gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).gen.hasOwnProperty("caller"):::false PASS (new J).gen.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new J).gen, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new J).gen, "arguments"):::undefined PASS delete (new J).gen.caller:::true PASS delete (new J).gen["caller"]:::true PASS delete (new J).gen.arguments:::true PASS delete (new J).gen["arguments"]:::true PASS (new J).get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS (new J).get.hasOwnProperty("caller"):::false PASS (new J).get.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor((new J).get, "caller"):::undefined PASS Object.getOwnPropertyDescriptor((new J).get, "arguments"):::undefined PASS delete (new J).get.caller:::true PASS delete (new J).get["caller"]:::true PASS delete (new J).get.arguments:::true PASS delete (new J).get["arguments"]:::true k.method PASS 'length,name':::'length,name' PASS k.method.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.method.hasOwnProperty("caller"):::false PASS k.method.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(k.method, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(k.method, "arguments"):::undefined PASS delete k.method.caller:::true PASS delete k.method["caller"]:::true PASS delete k.method.arguments:::true PASS delete k.method["arguments"]:::true k.gen PASS 'length,name,prototype':::'length,name,prototype' PASS k.gen.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS k.gen.hasOwnProperty("caller"):::false PASS k.gen.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(k.gen, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(k.gen, "arguments"):::undefined PASS delete k.gen.caller:::true PASS delete k.gen["caller"]:::true PASS delete k.gen.arguments:::true PASS delete k.gen["arguments"]:::true k.getter PASS 'length,name':::'length,name' PASS Object.getOwnPropertyDescriptor(k, 'getter').get.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'getter').get.hasOwnProperty("caller"):::false PASS Object.getOwnPropertyDescriptor(k, 'getter').get.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'getter').get, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'getter').get, "arguments"):::undefined PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get.caller:::true PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get["caller"]:::true PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get.arguments:::true PASS delete Object.getOwnPropertyDescriptor(k, 'getter').get["arguments"]:::true k.setter PASS 'length,name':::'length,name' PASS Object.getOwnPropertyDescriptor(k, 'setter').set.caller:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set.arguments:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set["caller"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set["arguments"]:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set.caller = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set.arguments = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set["caller"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set["arguments"] = function () {}:::TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. PASS Object.getOwnPropertyDescriptor(k, 'setter').set.hasOwnProperty("caller"):::false PASS Object.getOwnPropertyDescriptor(k, 'setter').set.hasOwnProperty("arguments"):::false PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'setter').set, "caller"):::undefined PASS Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptor(k, 'setter').set, "arguments"):::undefined PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set.caller:::true PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set["caller"]:::true PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set.arguments:::true PASS delete Object.getOwnPropertyDescriptor(k, 'setter').set["arguments"]:::true PASS successfullyParsed:::true TEST COMPLETE