Lines Matching refs:function
37 function TestWithProxies(test, x, y, z) {
39 test(function(h) {return Proxy.createFunction(h, function() {})}, x, y, z)
48 function TestGetOwnProperty(handler) {
52 function TestGetOwnProperty2(create, handler) {
61 getOwnPropertyDescriptor: function(k) {
68 getOwnPropertyDescriptor: function(k) {
71 getOwnPropertyDescriptor2: function(k) {
78 getOwnPropertyDescriptor: function(k) {
85 get: function(pr, pk) {
86 return function(k) { key = k; return {value: 42, configurable: true} }
91 function TestGetOwnPropertyThrow(handler) {
95 function TestGetOwnPropertyThrow2(create, handler) {
97 assertThrows(function(){ Object.getOwnPropertyDescriptor(p, "a") }, "myexn")
98 assertThrows(function(){ Object.getOwnPropertyDescriptor(p, 77) }, "myexn")
102 getOwnPropertyDescriptor: function(k) { throw "myexn" }
106 getOwnPropertyDescriptor: function(k) {
109 getOwnPropertyDescriptor2: function(k) { throw "myexn" }
113 getOwnPropertyDescriptor: function(k) {
119 get: function(pr, pk) {
120 return function(k) { throw "myexn" }
130 function TestGet(handler) {
134 function TestGet2(create, handler) {
142 assertEquals(42, (function(n) { return p[n] })("c"))
144 assertEquals(42, (function(n) { return p[n] })(101))
156 assertEquals(42, (function(n) { return o[n] })("c"))
158 assertEquals(42, (function(n) { return o[n] })(101))
160 assertEquals(88, (function(n) { return o[n] })("x"))
164 get: function(r, k) { key = k; return 42 }
168 get: function(r, k) { return this.get2(r, k) },
169 get2: function(r, k) { key = k; return 42 }
173 getPropertyDescriptor: function(k) { key = k; return {value: 42} }
177 getPropertyDescriptor: function(k) { return this.getPropertyDescriptor2(k) },
178 getPropertyDescriptor2: function(k) { key = k; return {value: 42} }
182 getPropertyDescriptor: function(k) {
190 getPropertyDescriptor: function(k) { key = k; return {value: 42} }
194 get: function(pr, pk) {
195 return function(r, k) { key = k; return 42 }
200 function TestGetCall(handler) {
204 function TestGetCall2(create, handler) {
214 assertEquals(55, (function(n) { return p[n]() })("f"))
215 assertEquals(55, (function(n) { return p[n].call(p) })("f"))
216 assertEquals(55, (function(n) { return p[n](15, 20) })("withargs"))
217 assertEquals(55, (function(n) { return p[n].call(p, 13, 21) })("withargs"))
220 var o = Object.create(p, {g: {value: function(x) { return x + 88 }}})
233 assertEquals(55, (function(n) { return o[n]() })("f"))
234 assertEquals(55, (function(n) { return o[n].call(o) })("f"))
235 assertEquals(55, (function(n) { return o[n](15, 20) })("withargs"))
236 assertEquals(55, (function(n) { return o[n].call(o, 13, 21) })("withargs"))
237 assertEquals(93, (function(n) { return o[n](5) })("g"))
238 assertEquals(94, (function(n) { return o[n].call(o, 6) })("g"))
239 assertEquals(95, (function(n) { return o[n].call(p, 7) })("g"))
244 get: function(r, k) { return function() { return 55 } }
248 get: function(r, k) { return this.get2(r, k) },
249 get2: function(r, k) { return function() { return 55 } }
253 getPropertyDescriptor: function(k) {
254 return {value: function() { return 55 }}
259 getPropertyDescriptor: function(k) { return this.getPropertyDescriptor2(k) },
260 getPropertyDescriptor2: function(k) {
261 return {value: function() { return 55 }}
266 getPropertyDescriptor: function(k) {
267 return {get value() { return function() { return 55 } }}
273 getPropertyDescriptor: function(k) {
274 return {value: function() { return 55 }}
279 get: function(r, k) {
281 return function() { return 55 }
283 return function(n, m) { return n + m * 2 }
285 return function() { return this.gg() }
291 get: function(pr, pk) {
292 return function(r, k) { return function() { return 55 } }
297 function TestGetThrow(handler) {
301 function TestGetThrow2(create, handler) {
303 assertThrows(function(){ p.a }, "myexn")
304 assertThrows(function(){ p["b"] }, "myexn")
305 assertThrows(function(){ p[3] }, "myexn")
306 assertThrows(function(){ (function(n) { p[n] })("c") }, "myexn")
307 assertThrows(function(){ (function(n) { p[n] })(99) }, "myexn")
310 assertThrows(function(){ o.a }, "myexn")
311 assertThrows(function(){ o["b"] }, "myexn")
312 assertThrows(function(){ o[3] }, "myexn")
313 assertThrows(function(){ (function(n) { o[n] })("c") }, "myexn")
314 assertThrows(function(){ (function(n) { o[n] })(99) }, "myexn")
318 get: function(r, k) { throw "myexn" }
322 get: function(r, k) { return this.get2(r, k) },
323 get2: function(r, k) { throw "myexn" }
327 getPropertyDescriptor: function(k) { throw "myexn" }
331 getPropertyDescriptor: function(k) { return this.getPropertyDescriptor2(k) },
332 getPropertyDescriptor2: function(k) { throw "myexn" }
336 getPropertyDescriptor: function(k) {
343 getPropertyDescriptor: function(k) { throw "myexn" }
347 get: function(pr, pk) { throw "myexn" }
351 get: function(pr, pk) {
352 return function(r, k) { throw "myexn" }
363 function TestSet(handler) {
367 function TestSet2(create, handler) {
379 assertEquals(45, (function(n) { return p[n] = 45 })("c"))
382 assertEquals(46, (function(n) { return p[n] = 46 })(99))
388 set: function(r, k, v) { key = k; val = v; return true }
392 set: function(r, k, v) { return this.set2(r, k, v) },
393 set2: function(r, k, v) { key = k; val = v; return true }
397 getOwnPropertyDescriptor: function(k) { return {writable: true} },
398 defineProperty: function(k, desc) { key = k; val = desc.value }
402 getOwnPropertyDescriptor: function(k) {
405 getOwnPropertyDescriptor2: function(k) { return {writable: true} },
406 defineProperty: function(k, desc) { this.defineProperty2(k, desc) },
407 defineProperty2: function(k, desc) { key = k; val = desc.value }
411 getOwnPropertyDescriptor: function(k) {
414 defineProperty: function(k, desc) { key = k; val = desc.value }
418 getOwnPropertyDescriptor: function(k) {
419 return {set: function(v) { key = k; val = v }}
424 getOwnPropertyDescriptor: function(k) { return null },
425 getPropertyDescriptor: function(k) { return {writable: true} },
426 defineProperty: function(k, desc) { key = k; val = desc.value }
430 getOwnPropertyDescriptor: function(k) { return null },
431 getPropertyDescriptor: function(k) {
434 defineProperty: function(k, desc) { key = k; val = desc.value }
438 getOwnPropertyDescriptor: function(k) { return null },
439 getPropertyDescriptor: function(k) {
440 return {set: function(v) { key = k; val = v }}
445 getOwnPropertyDescriptor: function(k) { return null },
446 getPropertyDescriptor: function(k) { return null },
447 defineProperty: function(k, desc) { key = k, val = desc.value }
451 get: function(pr, pk) {
452 return function(r, k, v) { key = k; val = v; return true }
457 function TestSetThrow(handler) {
461 function TestSetThrow2(create, handler) {
463 assertThrows(function(){ p.a = 42 }, "myexn")
464 assertThrows(function(){ p["b"] = 42 }, "myexn")
465 assertThrows(function(){ p[22] = 42 }, "myexn")
466 assertThrows(function(){ (function(n) { p[n] = 45 })("c") }, "myexn")
467 assertThrows(function(){ (function(n) { p[n] = 46 })(99) }, "myexn")
471 set: function(r, k, v) { throw "myexn" }
475 set: function(r, k, v) { return this.set2(r, k, v) },
476 set2: function(r, k, v) { throw "myexn" }
480 getOwnPropertyDescriptor: function(k) { throw "myexn" },
481 defineProperty: function(k, desc) { key = k; val = desc.value }
485 getOwnPropertyDescriptor: function(k) { return {writable: true} },
486 defineProperty: function(k, desc) { throw "myexn" }
490 getOwnPropertyDescriptor: function(k) {
493 getOwnPropertyDescriptor2: function(k) { throw "myexn" },
494 defineProperty: function(k, desc) { this.defineProperty2(k, desc) },
495 defineProperty2: function(k, desc) { key = k; val = desc.value }
499 getOwnPropertyDescriptor: function(k) {
502 getOwnPropertyDescriptor2: function(k) { return {writable: true} },
503 defineProperty: function(k, desc) { this.defineProperty2(k, desc) },
504 defineProperty2: function(k, desc) { throw "myexn" }
508 getOwnPropertyDescriptor: function(k) { throw "myexn" },
509 defineProperty: function(k, desc) { key = k; val = desc.value }
513 getOwnPropertyDescriptor: function(k) {
516 defineProperty: function(k, desc) { throw "myexn" }
520 getOwnPropertyDescriptor: function(k) { throw "myexn" }
524 getOwnPropertyDescriptor: function(k) {
525 return {set: function(v) { throw "myexn" }}
530 getOwnPropertyDescriptor: function(k) { throw "myexn" },
531 getPropertyDescriptor: function(k) { return {writable: true} },
532 defineProperty: function(k, desc) { key = k; val = desc.value }
536 getOwnPropertyDescriptor: function(k) { return null },
537 getPropertyDescriptor: function(k) { throw "myexn" },
538 defineProperty: function(k, desc) { key = k; val = desc.value }
542 getOwnPropertyDescriptor: function(k) { return null },
543 getPropertyDescriptor: function(k) { return {writable: true} },
544 defineProperty: function(k, desc) { throw "myexn" }
548 getOwnPropertyDescriptor: function(k) { return null },
549 getPropertyDescriptor: function(k) {
552 defineProperty: function(k, desc) { key = k; val = desc.value }
556 getOwnPropertyDescriptor: function(k) { return null },
557 getPropertyDescriptor: function(k) {
558 return {set: function(v) { throw "myexn" }}
563 getOwnPropertyDescriptor: function(k) { return null },
564 getPropertyDescriptor: function(k) { return null },
565 defineProperty: function(k, desc) { throw "myexn" }
569 get: function(pr, pk) { throw "myexn" }
573 get: function(pr, pk) {
574 return function(r, k, v) { throw "myexn" }
583 function TestSetForDerived(trap) {
587 function TestSetForDerived2(create, trap) {
617 assertThrows(function(){ "use strict"; o.p_nonwritable = 45 }, TypeError)
635 assertThrows(function(){ "use strict"; o.p_nosetter = 50 }, TypeError)
640 assertThrows(function(){ o.p_nonconf = 53 }, TypeError)
644 assertThrows(function(){ o.p_throw = 51 }, "myexn")
648 assertThrows(function(){ o.p_setterthrow = 52 }, "myexn")
655 function(k) {
666 set: function(x) { rec = this; val = x },
670 get: function() { return 1 },
675 case "p_setterthrow": return {set: function(x) { throw "myexn" }}
685 TestWithProxies(function(create) {
688 getPropertyDescriptor: function() {
691 ? {get: function() { return 5 }, configurable: true}
692 : {set: function() { return false }, configurable: true}
701 TestWithProxies(function(create) {
703 getPropertyDescriptor: function() {
704 Object.defineProperty(o, "x", {get: function() { return 5 }});
705 return {set: function() {}}
726 function TestDefine(handler) {
730 function TestDefine2(create, handler) {
767 assertEquals(p, Object.defineProperty(p, "e", {get: function(){ return 5 }}))
777 get: function(r, k) { return (k === "value") ? 77 : void 0 },
778 getOwnPropertyNames: function() { return ["value"] },
779 enumerate: function() { return ["value"] }
790 blub: {get: function() { return true }},
803 assertThrows(function(){ Object.defineProperties(p, props) }, "myexn")
807 defineProperty: function(k, d) { key = k; desc = d; return true }
811 defineProperty: function(k, d) { return this.defineProperty2(k, d) },
812 defineProperty2: function(k, d) { key = k; desc = d; return true }
816 get: function(pr, pk) {
817 return function(k, d) { key = k; desc = d; return true }
822 function TestDefineThrow(handler) {
826 function TestDefineThrow2(create, handler) {
828 assertThrows(function(){ Object.defineProperty(p, "a", {value: 44})}, "myexn")
829 assertThrows(function(){ Object.defineProperty(p, 0, {value: 44})}, "myexn")
832 get: function(r, k) { throw "myexn" },
833 getOwnPropertyNames: function() { return ["value"] }
835 assertThrows(function(){ Object.defineProperty(p, "p", d1) }, "myexn")
837 get: function(r, k) { return 77 },
838 getOwnPropertyNames: function() { throw "myexn" }
840 assertThrows(function(){ Object.defineProperty(p, "p", d2) }, "myexn")
843 assertThrows(function(){ Object.defineProperties(p, props) }, "otherexn")
847 defineProperty: function(k, d) { throw "myexn" }
851 defineProperty: function(k, d) { return this.defineProperty2(k, d) },
852 defineProperty2: function(k, d) { throw "myexn" }
856 get: function(pr, pk) { throw "myexn" }
860 get: function(pr, pk) {
861 return function(k, d) { throw "myexn" }
871 function TestDelete(handler) {
875 function TestDelete2(create, handler) {
889 (function() {
898 assertThrows(function(){ delete p.z3 }, TypeError)
900 assertThrows(function(){ delete p["z4"] }, TypeError)
906 delete: function(k) { key = k; return k < "z" }
910 delete: function(k) { return this.delete2(k) },
911 delete2: function(k) { key = k; return k < "z" }
915 get: function(pr, pk) {
916 return function(k) { key = k; return k < "z" }
921 function TestDeleteThrow(handler) {
925 function TestDeleteThrow2(create, handler) {
927 assertThrows(function(){ delete p.a }, "myexn")
928 assertThrows(function(){ delete p["b"] }, "myexn");
929 assertThrows(function(){ delete p[3] }, "myexn");
931 (function() {
933 assertThrows(function(){ delete p.c }, "myexn")
934 assertThrows(function(){ delete p["d"] }, "myexn")
935 assertThrows(function(){ delete p[4] }, "myexn");
940 delete: function(k) { throw "myexn" }
944 delete: function(k) { return this.delete2(k) },
945 delete2: function(k) { throw "myexn" }
949 get: function(pr, pk) { throw "myexn" }
953 get: function(pr, pk) {
954 return function(k) { throw "myexn" }
962 function TestDescriptor(handler) {
966 function TestDescriptor2(create, handler) {
973 {get: function() { "get" }, set: function() { "set" }, configurable: true}
988 defineProperty: function(k, d) { this["__" + k] = d; return true },
989 getOwnPropertyDescriptor: function(k) { return this["__" + k] }
993 defineProperty: function(k, d) { this["__" + k] = d; return true },
994 getOwnPropertyDescriptor: function(k) {
997 getOwnPropertyDescriptor2: function(k) { return this["__" + k] }
1001 function TestDescriptorThrow(handler) {
1005 function TestDescriptorThrow2(create, handler) {
1007 assertThrows(function(){ Object.getOwnPropertyDescriptor(p, "a") }, "myexn")
1011 getOwnPropertyDescriptor: function(k) { throw "myexn" }
1015 getOwnPropertyDescriptor: function(k) {
1018 getOwnPropertyDescriptor2: function(k) { throw "myexn" }
1025 function TestComparison(eq) {
1029 function TestComparison2(create, eq) {
1041 TestComparison(function(o1, o2) { return o1 == o2 })
1042 TestComparison(function(o1, o2) { return o1 === o2 })
1043 TestComparison(function(o1, o2) { return !(o1 != o2) })
1044 TestComparison(function(o1, o2) { return !(o1 !== o2) })
1050 function TestTypeof() {
1055 assertEquals("function", typeof Proxy.createFunction({}, function() {}))
1056 assertTrue(typeof Proxy.createFunction({}, function() {}) == "function")
1057 assertTrue("function" == typeof Proxy.createFunction({}, function() {}))
1068 function TestIn(handler) {
1072 function TestIn2(create, handler) {
1111 has: function(k) { key = k; return k < "z" }
1115 has: function(k) { return this.has2(k) },
1116 has2: function(k) { key = k; return k < "z" }
1120 getPropertyDescriptor: function(k) {
1126 getPropertyDescriptor: function(k) { return this.getPropertyDescriptor2(k) },
1127 getPropertyDescriptor2: function(k) {
1133 getPropertyDescriptor: function(k) {
1140 getPropertyDescriptor: function(k) {
1146 get: function(pr, pk) {
1147 return function(k) { key = k; return k < "z" }
1152 function TestInThrow(handler) {
1156 function TestInThrow2(create, handler) {
1158 assertThrows(function(){ return "a" in o }, "myexn")
1159 assertThrows(function(){ return 99 in o }, "myexn")
1160 assertThrows(function(){ return !("a" in o) }, "myexn")
1161 assertThrows(function(){ return ("a" in o) ? 2 : 3 }, "myexn")
1162 assertThrows(function(){ if ("b" in o) {} }, "myexn")
1163 assertThrows(function(){ if (!("b" in o)) {} }, "myexn")
1164 assertThrows(function(){ if ("zzz" in o) {} }, "myexn")
1168 has: function(k) { throw "myexn" }
1172 has: function(k) { return this.has2(k) },
1173 has2: function(k) { throw "myexn" }
1177 getPropertyDescriptor: function(k) { throw "myexn" }
1181 getPropertyDescriptor: function(k) { return this.getPropertyDescriptor2(k) },
1182 getPropertyDescriptor2: function(k) { throw "myexn" }
1187 getPropertyDescriptor: function(k) { throw "myexn" }
1191 get: function(pr, pk) { throw "myexn" }
1195 get: function(pr, pk) {
1196 return function(k) { throw "myexn" }
1201 function TestInForDerived(handler) {
1205 function TestInForDerived2(create, handler) {
1245 getPropertyDescriptor: function(k) {
1251 getPropertyDescriptor: function(k) { return this.getPropertyDescriptor2(k) },
1252 getPropertyDescriptor2: function(k) {
1258 getPropertyDescriptor: function(k) {
1267 getOwnPropertyDescriptor: function(k) {
1273 getOwnPropertyDescriptor: function(k) {
1276 getOwnPropertyDescriptor2: function(k) {
1282 getOwnPropertyDescriptor: function(k) {
1290 get: function(pr, pk) {
1291 return function(k) {
1303 function TestDescriptorGetOrder(handler) {
1306 TestDescriptorGetOrder2(function(n) { return p[n] }, "vV")
1307 TestDescriptorGetOrder2(function(n) { return n in p }, "")
1308 TestDescriptorGetOrder2(function(n) { return o[n] }, "vV")
1309 TestDescriptorGetOrder2(function(n) { return n in o }, "eEcCvVwWgs")
1312 function TestDescriptorGetOrder2(f, access) {
1325 getPropertyDescriptor: function(k) {
1329 get: function(r, attr) {
1333 has: function(attr) {
1358 function TestHasOwn(handler) {
1362 function TestHasOwn2(create, handler) {
1373 hasOwn: function(k) { key = k; return k < "z" }
1377 hasOwn: function(k) { return this.hasOwn2(k) },
1378 hasOwn2: function(k) { key = k; return k < "z" }
1382 getOwnPropertyDescriptor: function(k) {
1388 getOwnPropertyDescriptor: function(k) {
1391 getOwnPropertyDescriptor2: function(k) {
1397 getOwnPropertyDescriptor: function(k) {
1404 getOwnPropertyDescriptor: function(k) {
1410 get: function(pr, pk) {
1411 return function(k) { key = k; return k < "z" }
1416 function TestHasOwnThrow(handler) {
1420 function TestHasOwnThrow2(create, handler) {
1422 assertThrows(function(){ Object.prototype.hasOwnProperty.call(p, "a")},
1424 assertThrows(function(){ Object.prototype.hasOwnProperty.call(p, 99)},
1429 hasOwn: function(k) { throw "myexn" }
1433 hasOwn: function(k) { return this.hasOwn2(k) },
1434 hasOwn2: function(k) { throw "myexn" }
1438 getOwnPropertyDescriptor: function(k) { throw "myexn" }
1442 getOwnPropertyDescriptor: function(k) {
1445 getOwnPropertyDescriptor2: function(k) { throw "myexn" }
1450 getOwnPropertyDescriptor: function(k) { throw "myexn" }
1454 get: function(pr, pk) { throw "myexn" }
1458 get: function(pr, pk) {
1459 return function(k) { throw "myexn" }
1467 function TestProxyInstanceof() {
1474 var f0 = function() {}
1476 var f1 = function() {}
1478 var f2 = function() {}
1480 var f3 = function() {}
1509 var f = Proxy.createFunction({}, function() {})
1510 assertTrue(f instanceof Function)
1516 function TestInstanceofProxy() {
1524 function handler(o) { return {get: function() { return o } } }
1525 var f0 = Proxy.createFunction(handler(o0), function() {})
1526 var f1 = Proxy.createFunction(handler(o1), function() {})
1527 var f2 = Proxy.createFunction(handler(o2), function() {})
1528 var f3 = Proxy.createFunction(handler(o3), function() {})
1529 var f4 = Proxy.createFunction(handler(o4), function() {})
1530 var f5 = Proxy.createFunction(handler(o4), function() {})
1570 var f = Proxy.createFunction({}, function() {})
1571 var ff = Proxy.createFunction(handler(Function), function() {})
1572 assertTrue(f instanceof Function)
1582 function TestPrototype() {
1635 var f = Proxy.createFunction({}, function() {})
1636 assertSame(Object.getPrototypeOf(f), Function.prototype)
1638 assertTrue(Object.prototype.isPrototypeOf.call(Function.prototype, f))
1647 function TestPropertyNames(names, handler) {
1651 function TestPropertyNames2(create, handler, names) {
1657 getOwnPropertyNames: function() { return [] }
1661 getOwnPropertyNames: function() { return ["a", "zz", " ", 0, "toString"] }
1664 TestPropertyNames(["throw", "function "], {
1665 getOwnPropertyNames: function() { return this.getOwnPropertyNames2() },
1666 getOwnPropertyNames2: function() { return ["throw", "function "] }
1671 return function() { return [{}] }
1676 function TestPropertyNamesThrow(handler) {
1680 function TestPropertyNamesThrow2(create, handler) {
1682 assertThrows(function(){ Object.getOwnPropertyNames(p) }, "myexn")
1686 getOwnPropertyNames: function() { throw "myexn" }
1690 getOwnPropertyNames: function() { return this.getOwnPropertyNames2() },
1691 getOwnPropertyNames2: function() { throw "myexn" }
1695 function TestKeys(names, handler) {
1699 function TestKeys2(create, handler, names) {
1705 keys: function() { return [] }
1709 keys: function() { return ["a", "zz", " ", 0, "toString"] }
1712 TestKeys(["throw", "function "], {
1713 keys: function() { return this.keys2() },
1714 keys2: function() { return ["throw", "function "] }
1719 return function() { return [{}] }
1724 getOwnPropertyNames: function() { return ["a", 23, "zz", "", 0] },
1725 getOwnPropertyDescriptor: function(k) {
1731 getOwnPropertyNames: function() { return this.getOwnPropertyNames2() },
1732 getOwnPropertyNames2: function() { return ["a", 23, "zz", "", 0] },
1733 getOwnPropertyDescriptor: function(k) {
1736 getOwnPropertyDescriptor2: function(k) { return {enumerable: k.length != 1} }
1741 return function() { return ["0", 4, "a", "b", "c", 5, "ety"] }
1744 return function(k) {
1752 return function() { return ["a", "b", "c"] }
1754 getOwnPropertyDescriptor: function(k) { return {} }
1758 function TestKeysThrow(handler) {
1762 function TestKeysThrow2(create, handler) {
1764 assertThrows(function(){ Object.keys(p) }, "myexn")
1768 keys: function() { throw "myexn" }
1772 keys: function() { return this.keys2() },
1773 keys2: function() { throw "myexn" }
1777 getOwnPropertyNames: function() { throw "myexn" },
1778 getOwnPropertyDescriptor: function(k) { return true }
1782 getOwnPropertyNames: function() { return [1, 2] },
1783 getOwnPropertyDescriptor: function(k) { throw "myexn" }
1787 getOwnPropertyNames: function() { return this.getOwnPropertyNames2() },
1788 getOwnPropertyNames2: function() { throw "myexn" },
1792 getOwnPropertyNames: function() { return this.getOwnPropertyNames2() },
1793 getOwnPropertyNames2: function() { return [1, 2] },
1794 getOwnPropertyDescriptor: function(k) {
1797 getOwnPropertyDescriptor2: function(k) { throw "myexn" }
1806 return function() { throw "myexn" }
1812 return function() { return [1, 2] }
1814 getOwnPropertyDescriptor: function(k) { throw "myexn" }
1822 function TestFix(names, handler) {
1824 var assertFixing = function(o, s, f, e) {
1835 assertArrayEquals(names.filter(function(x) {return x < "z"}).sort(),
1849 assertArrayEquals(names.filter(function(x) {return x < "z"}).sort(),
1864 assertArrayEquals(names.filter(function(x) {return x < "z"}).sort(),
1879 fix: function() { return {} }
1883 fix: function() {
1895 fix: function() { return this.fix2() },
1896 fix2: function() {
1903 return function() {
1910 function TestFixFunction(fix) {
1912 fix: function() { return {} }
1913 }, function() {})
1918 fix: function() { return {length: {value: 3}} }
1919 }, function() {})
1924 fix: function() { return {length: {value: "huh"}} }
1925 }, function() {})
1935 function TestFixThrow(handler) {
1939 function TestFixThrow2(create, handler) {
1941 assertThrows(function(){ Object.seal(p) }, "myexn")
1942 assertThrows(function(){ Object.freeze(p) }, "myexn")
1943 assertThrows(function(){ Object.preventExtensions(p) }, "myexn")
1947 fix: function() { throw "myexn" }
1951 fix: function() { return this.fix2() },
1952 fix2: function() { throw "myexn" }
1961 return function() { throw "myexn" }
1969 function TestReentrantFix(f) {
1975 TestReentrantFix(function(create, freeze) {
1978 fix: function() { return {} }
1985 TestReentrantFix(function(create, freeze) {
1987 get: function() { freeze(p); return 3 },
1988 fix: function() { return {} }
1995 TestReentrantFix(function(create, freeze) {
1997 getPropertyDescriptor: function() { freeze(p); return undefined },
1998 fix: function() { return {} }
2005 TestReentrantFix(function(create, freeze) {
2007 getPropertyDescriptor: function() { freeze(p); return {get: function(){}} },
2008 fix: function() { return {} }
2016 TestReentrantFix(function(create, freeze) {
2019 fix: function() { return {} }
2026 TestReentrantFix(function(create, freeze) {
2028 set: function() { freeze(p); return true },
2029 fix: function() { return {} }
2036 TestReentrantFix(function(create, freeze) {
2038 getOwnPropertyDescriptor: function() { freeze(p); return undefined },
2039 fix: function() { return {} }
2046 TestReentrantFix(function(create, freeze) {
2048 getPropertyDescriptor: function() { freeze(p); return {set: function(){}} },
2049 fix: function() { return {} }
2057 TestReentrantFix(function(create, freeze) {
2059 getPropertyDescriptor: function() { freeze(p); return {set: function(){}} },
2060 fix: function() { return {x: {get: function(){}}} }
2068 TestReentrantFix(function(create, freeze) {
2070 get fix() { freeze(p); return function(){} }
2081 TestReentrantFix(function(create, freeze) {
2083 fix: function() { freeze(p); return {} }
2098 // Function.prototype.toString)
2102 function TestToString(handler) {
2110 var f = Proxy.createFunction(handler, function() {})
2112 assertEquals("[object Function]", Object.prototype.toString.call(f))
2116 assertDoesNotThrow(function(){ Function.prototype.toString.call(f) })
2127 get: function(r, k) { key = k; return function() { return "my_proxy" } }
2131 get: function(r, k) { return this.get2(r, k) },
2132 get2: function(r, k) { key = k; return function() { return "my_proxy" } }
2136 get: function(pr, pk) {
2137 return function(r, k) { key = k; return function() { return "my_proxy" } }
2142 function TestToStringThrow(handler) {
2145 assertThrows(function(){ Object.prototype.toLocaleString.call(p) }, "myexn")
2147 var f = Proxy.createFunction(handler, function() {})
2148 assertEquals("[object Function]", Object.prototype.toString.call(f))
2149 assertThrows(function(){ Object.prototype.toLocaleString.call(f) }, "myexn")
2153 assertThrows(function(){ Object.prototype.toLocaleString.call(o) }, "myexn")
2157 get: function(r, k) { throw "myexn" }
2161 get: function(r, k) { return function() { throw "myexn" } }
2165 get: function(r, k) { return this.get2(r, k) },
2166 get2: function(r, k) { throw "myexn" }
2170 get: function(pr, pk) { throw "myexn" }
2174 get: function(pr, pk) {
2175 return function(r, k) { throw "myexn" }
2183 function TestValueOf(handler) {
2187 function TestValueOf2(create, handler) {
2200 function TestIsEnumerable(handler) {
2204 function TestIsEnumerable2(create, handler) {
2220 getOwnPropertyDescriptor: function(k) {
2226 getOwnPropertyDescriptor: function(k) {
2229 getOwnPropertyDescriptor2: function(k) {
2235 getOwnPropertyDescriptor: function(k) {
2241 get: function(pr, pk) {
2242 return function(k) {
2249 function TestIsEnumerableThrow(handler) {
2253 function TestIsEnumerableThrow2(create, handler) {
2255 assertThrows(function(){ Object.prototype.propertyIsEnumerable.call(p, "a") },
2257 assertThrows(function(){ Object.prototype.propertyIsEnumerable.call(p, 11) },
2262 getOwnPropertyDescriptor: function(k) { throw "myexn" }
2266 getOwnPropertyDescriptor: function(k) {
2269 getOwnPropertyDescriptor2: function(k) { throw "myexn" }
2273 getOwnPropertyDescriptor: function(k) {
2279 get: function(pr, pk) { throw "myexn" }
2283 get: function(pr, pk) {
2284 return function(k) { throw "myexn" }
2292 function TestConstructorWithProxyPrototype() {
2296 function TestConstructorWithProxyPrototype2(create, handler) {
2297 function C() {};