OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1011 function CheckFunctionPillDescriptor(func, name) { | 1011 function CheckFunctionPillDescriptor(func, name) { |
1012 | 1012 |
1013 function CheckPill(pill) { | 1013 function CheckPill(pill) { |
1014 assertEquals("function", typeof pill); | 1014 assertEquals("function", typeof pill); |
1015 assertInstanceof(pill, Function); | 1015 assertInstanceof(pill, Function); |
1016 pill.property = "value"; | 1016 pill.property = "value"; |
1017 assertEquals(pill.value, undefined); | 1017 assertEquals(pill.value, undefined); |
1018 assertThrows(function() { 'use strict'; pill.property = "value"; }, | 1018 assertThrows(function() { 'use strict'; pill.property = "value"; }, |
1019 TypeError); | 1019 TypeError); |
1020 assertThrows(pill, TypeError); | 1020 assertThrows(pill, TypeError); |
1021 assertEquals(pill.prototype, (function(){}).prototype); | 1021 assertEquals(undefined, pill.prototype); |
1022 var d = Object.getOwnPropertyDescriptor(pill, "prototype"); | |
1023 assertFalse(d.writable); | |
1024 assertFalse(d.configurable); | |
1025 assertFalse(d.enumerable); | |
1026 } | 1022 } |
1027 | 1023 |
1028 // Poisoned accessors are no longer own properties | 1024 // Poisoned accessors are no longer own properties |
1029 func = Object.getPrototypeOf(func); | 1025 func = Object.getPrototypeOf(func); |
1030 var descriptor = Object.getOwnPropertyDescriptor(func, name); | 1026 var descriptor = Object.getOwnPropertyDescriptor(func, name); |
1031 CheckPill(descriptor.get) | 1027 CheckPill(descriptor.get) |
1032 CheckPill(descriptor.set); | 1028 CheckPill(descriptor.set); |
1033 assertFalse(descriptor.enumerable); | 1029 assertFalse(descriptor.enumerable); |
1034 // In ES6, restricted function properties are configurable | 1030 // In ES6, restricted function properties are configurable |
1035 assertTrue(descriptor.configurable); | 1031 assertTrue(descriptor.configurable); |
1036 } | 1032 } |
1037 | 1033 |
1038 | 1034 |
1039 function CheckArgumentsPillDescriptor(func, name) { | 1035 function CheckArgumentsPillDescriptor(func, name) { |
1040 | 1036 |
1041 function CheckPill(pill) { | 1037 function CheckPill(pill) { |
1042 assertEquals("function", typeof pill); | 1038 assertEquals("function", typeof pill); |
1043 assertInstanceof(pill, Function); | 1039 assertInstanceof(pill, Function); |
1044 pill.property = "value"; | 1040 pill.property = "value"; |
1045 assertEquals(pill.value, undefined); | 1041 assertEquals(pill.value, undefined); |
1046 assertThrows(function() { 'use strict'; pill.property = "value"; }, | 1042 assertThrows(function() { 'use strict'; pill.property = "value"; }, |
1047 TypeError); | 1043 TypeError); |
1048 assertThrows(pill, TypeError); | 1044 assertThrows(pill, TypeError); |
1049 assertEquals(pill.prototype, (function(){}).prototype); | 1045 assertEquals(undefined, pill.prototype); |
1050 var d = Object.getOwnPropertyDescriptor(pill, "prototype"); | |
1051 assertFalse(d.writable); | |
1052 assertFalse(d.configurable); | |
1053 assertFalse(d.enumerable); | |
1054 } | 1046 } |
1055 | 1047 |
1056 var descriptor = Object.getOwnPropertyDescriptor(func, name); | 1048 var descriptor = Object.getOwnPropertyDescriptor(func, name); |
1057 CheckPill(descriptor.get) | 1049 CheckPill(descriptor.get) |
1058 CheckPill(descriptor.set); | 1050 CheckPill(descriptor.set); |
1059 assertFalse(descriptor.enumerable); | 1051 assertFalse(descriptor.enumerable); |
1060 assertFalse(descriptor.configurable); | 1052 assertFalse(descriptor.configurable); |
1061 } | 1053 } |
1062 | 1054 |
1063 | 1055 |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1224 assertSame(null, test(i)); | 1216 assertSame(null, test(i)); |
1225 } | 1217 } |
1226 })(); | 1218 })(); |
1227 | 1219 |
1228 | 1220 |
1229 (function TestStrictModeEval() { | 1221 (function TestStrictModeEval() { |
1230 "use strict"; | 1222 "use strict"; |
1231 eval("var eval_local = 10;"); | 1223 eval("var eval_local = 10;"); |
1232 assertThrows(function() { return eval_local; }, ReferenceError); | 1224 assertThrows(function() { return eval_local; }, ReferenceError); |
1233 })(); | 1225 })(); |
OLD | NEW |