OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --allow-natives-syntax | 5 // Flags: --allow-natives-syntax |
6 // Flags: --harmony-destructuring --harmony-rest-parameters --harmony-sloppy | 6 // Flags: --harmony-destructuring --harmony-rest-parameters --harmony-sloppy |
7 | 7 |
8 (function TestSuperNamedLoads() { | 8 (function TestSuperNamedLoads() { |
9 function Base() { } | 9 function Base() { } |
10 function fBase() { } | 10 function fBase() { } |
(...skipping 931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
942 assertEquals(55, this.ownReadOnly); | 942 assertEquals(55, this.ownReadOnly); |
943 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadOnly'); | 943 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadOnly'); |
944 assertEquals(55, descr.value); | 944 assertEquals(55, descr.value); |
945 assertTrue(descr.configurable); | 945 assertTrue(descr.configurable); |
946 assertFalse(descr.enumerable); | 946 assertFalse(descr.enumerable); |
947 assertFalse(descr.writable); | 947 assertFalse(descr.writable); |
948 assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); | 948 assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); |
949 | 949 |
950 assertEquals(15, this.ownReadonlyAccessor); | 950 assertEquals(15, this.ownReadonlyAccessor); |
951 super.ownReadonlyAccessor = 25; | 951 super.ownReadonlyAccessor = 25; |
952 assertEquals(25, this.ownReadonlyAccessor); | 952 assertSame(undefined, super.ownReadonlyAccessor); |
953 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadonlyAccessor'); | 953 assertEquals(15, this.ownReadonlyAccessor); |
954 assertEquals(25, descr.value); | |
955 assertTrue(descr.configurable); | |
956 assertFalse(descr.enumerable); | |
957 assertTrue(descr.writable); | |
958 assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); | 954 assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); |
959 | 955 |
960 super.ownSetter = 35; | 956 super.ownSetter = 35; |
961 assertEquals(35, this.ownSetter); | 957 assertSame(undefined, super.ownSetter); |
962 var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); | 958 var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); |
963 assertEquals(35, descr.value); | 959 assertTrue('set' in descr); |
964 assertTrue(descr.configurable); | |
965 assertFalse(descr.enumerable); | |
966 assertTrue(descr.writable); | |
967 assertFalse(Base.prototype.hasOwnProperty('ownSetter')); | 960 assertFalse(Base.prototype.hasOwnProperty('ownSetter')); |
968 }, | 961 }, |
969 mStrict() { | 962 mStrict() { |
970 'use strict'; | 963 'use strict'; |
971 assertEquals(42, this.ownReadOnly); | 964 assertEquals(42, this.ownReadOnly); |
972 super.ownReadOnly = 55; | 965 super.ownReadOnly = 55; |
973 assertEquals(55, this.ownReadOnly); | 966 assertEquals(55, this.ownReadOnly); |
974 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadOnly'); | 967 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadOnly'); |
975 assertEquals(55, descr.value); | 968 assertEquals(55, descr.value); |
976 assertTrue(descr.configurable); | 969 assertTrue(descr.configurable); |
977 assertFalse(descr.enumerable); | 970 assertFalse(descr.enumerable); |
978 assertFalse(descr.writable); | 971 assertFalse(descr.writable); |
979 assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); | 972 assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); |
980 | 973 |
981 assertEquals(15, this.ownReadonlyAccessor); | 974 assertEquals(15, this.ownReadonlyAccessor); |
982 super.ownReadonlyAccessor = 25; | 975 assertThrows(() => {super.ownReadonlyAccessor = 25}, TypeError); |
983 assertEquals(25, this.ownReadonlyAccessor); | 976 assertSame(undefined, super.ownReadonlyAccessor); |
984 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadonlyAccessor'); | 977 assertEquals(15, this.ownReadonlyAccessor); |
985 assertEquals(25, descr.value); | |
986 assertTrue(descr.configurable); | |
987 assertFalse(descr.enumerable); | |
988 assertTrue(descr.writable); | |
989 assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); | 978 assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); |
990 | 979 |
991 super.ownSetter = 35; | 980 assertThrows(() => {super.ownSetter = 35}, TypeError); |
992 assertEquals(35, this.ownSetter); | 981 assertSame(undefined, super.ownSetter); |
993 var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); | 982 var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); |
994 assertEquals(35, descr.value); | 983 assertTrue('set' in descr); |
995 assertTrue(descr.configurable); | |
996 assertFalse(descr.enumerable); | |
997 assertTrue(descr.writable); | |
998 assertFalse(Base.prototype.hasOwnProperty('ownSetter')); | 984 assertFalse(Base.prototype.hasOwnProperty('ownSetter')); |
999 }, | 985 }, |
1000 }; | 986 }; |
1001 | 987 |
1002 var d = new Derived(); | 988 var d = new Derived(); |
1003 Object.defineProperty(d, 'ownReadOnly', { | 989 Object.defineProperty(d, 'ownReadOnly', { |
1004 value: 42, | 990 value: 42, |
1005 writable: false, | 991 writable: false, |
1006 configurable: true | 992 configurable: true |
1007 }); | 993 }); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1045 assertEquals(42, this.ownReadOnly); | 1031 assertEquals(42, this.ownReadOnly); |
1046 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadOnly'); | 1032 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadOnly'); |
1047 assertEquals(42, descr.value); | 1033 assertEquals(42, descr.value); |
1048 assertFalse(descr.configurable); | 1034 assertFalse(descr.configurable); |
1049 assertFalse(descr.enumerable); | 1035 assertFalse(descr.enumerable); |
1050 assertFalse(descr.writable); | 1036 assertFalse(descr.writable); |
1051 assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); | 1037 assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); |
1052 | 1038 |
1053 assertEquals(15, this.ownReadonlyAccessor); | 1039 assertEquals(15, this.ownReadonlyAccessor); |
1054 super.ownReadonlyAccessor = 25; | 1040 super.ownReadonlyAccessor = 25; |
| 1041 assertSame(undefined, super.ownReadonlyAccessor); |
1055 assertEquals(15, this.ownReadonlyAccessor); | 1042 assertEquals(15, this.ownReadonlyAccessor); |
1056 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadonlyAccessor'); | 1043 var descr = Object.getOwnPropertyDescriptor(this, 'ownReadonlyAccessor'); |
1057 assertFalse(descr.configurable); | 1044 assertFalse(descr.configurable); |
1058 assertFalse(descr.enumerable); | 1045 assertFalse(descr.enumerable); |
1059 assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); | 1046 assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); |
1060 | 1047 |
1061 super.ownSetter = 35; | 1048 super.ownSetter = 35; |
1062 var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); | 1049 var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); |
1063 assertFalse(descr.configurable); | 1050 assertFalse(descr.configurable); |
1064 assertFalse(descr.enumerable); | 1051 assertFalse(descr.enumerable); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1183 assertEquals(55, this[ownReadOnly]); | 1170 assertEquals(55, this[ownReadOnly]); |
1184 var descr = Object.getOwnPropertyDescriptor(this, ownReadOnly); | 1171 var descr = Object.getOwnPropertyDescriptor(this, ownReadOnly); |
1185 assertEquals(55, descr.value); | 1172 assertEquals(55, descr.value); |
1186 assertTrue(descr.configurable); | 1173 assertTrue(descr.configurable); |
1187 assertFalse(descr.enumerable); | 1174 assertFalse(descr.enumerable); |
1188 assertFalse(descr.writable); | 1175 assertFalse(descr.writable); |
1189 assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); | 1176 assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); |
1190 | 1177 |
1191 assertEquals(15, this[ownReadonlyAccessor]); | 1178 assertEquals(15, this[ownReadonlyAccessor]); |
1192 super[ownReadonlyAccessor] = 25; | 1179 super[ownReadonlyAccessor] = 25; |
1193 assertEquals(25, this[ownReadonlyAccessor]); | 1180 assertSame(undefined, super[ownReadonlyAccessor]); |
1194 var descr = Object.getOwnPropertyDescriptor(this, ownReadonlyAccessor); | 1181 assertEquals(15, this[ownReadonlyAccessor]); |
1195 assertEquals(25, descr.value); | |
1196 assertTrue(descr.configurable); | |
1197 assertFalse(descr.enumerable); | |
1198 assertTrue(descr.writable); | |
1199 assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); | 1182 assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); |
1200 | 1183 |
1201 super[ownSetter] = 35; | 1184 super[ownSetter] = 35; |
1202 assertEquals(35, this[ownSetter]); | 1185 assertSame(undefined, super[ownSetter]); |
1203 var descr = Object.getOwnPropertyDescriptor(this, ownSetter); | 1186 var descr = Object.getOwnPropertyDescriptor(this, ownSetter); |
1204 assertEquals(35, descr.value); | 1187 assertTrue('set' in descr); |
1205 assertTrue(descr.configurable); | |
1206 assertFalse(descr.enumerable); | |
1207 assertTrue(descr.writable); | |
1208 assertFalse(Base.prototype.hasOwnProperty(ownSetter)); | 1188 assertFalse(Base.prototype.hasOwnProperty(ownSetter)); |
1209 }, | 1189 }, |
1210 mStrict() { | 1190 mStrict() { |
1211 'use strict'; | 1191 'use strict'; |
1212 assertEquals(42, this[ownReadOnly]); | 1192 assertEquals(42, this[ownReadOnly]); |
1213 super[ownReadOnly] = 55; | 1193 super[ownReadOnly] = 55; |
1214 assertEquals(55, this[ownReadOnly]); | 1194 assertEquals(55, this[ownReadOnly]); |
1215 var descr = Object.getOwnPropertyDescriptor(this, ownReadOnly); | 1195 var descr = Object.getOwnPropertyDescriptor(this, ownReadOnly); |
1216 assertEquals(55, descr.value); | 1196 assertEquals(55, descr.value); |
1217 assertTrue(descr.configurable); | 1197 assertTrue(descr.configurable); |
1218 assertFalse(descr.enumerable); | 1198 assertFalse(descr.enumerable); |
1219 assertFalse(descr.writable); | 1199 assertFalse(descr.writable); |
1220 assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); | 1200 assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); |
1221 | 1201 |
1222 assertEquals(15, this[ownReadonlyAccessor]); | 1202 assertEquals(15, this[ownReadonlyAccessor]); |
1223 super[ownReadonlyAccessor] = 25; | 1203 assertThrows(() => {super[ownReadonlyAccessor] = 25}, TypeError); |
1224 assertEquals(25, this[ownReadonlyAccessor]); | 1204 assertSame(undefined, super[ownReadonlyAccessor]); |
1225 var descr = Object.getOwnPropertyDescriptor(this, ownReadonlyAccessor); | 1205 assertEquals(15, this[ownReadonlyAccessor]); |
1226 assertEquals(25, descr.value); | |
1227 assertTrue(descr.configurable); | |
1228 assertFalse(descr.enumerable); | |
1229 assertTrue(descr.writable); | |
1230 assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); | 1206 assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); |
1231 | 1207 |
1232 super[ownSetter] = 35; | 1208 assertThrows(() => {super[ownSetter] = 35}, TypeError); |
1233 assertEquals(35, this[ownSetter]); | 1209 assertSame(undefined, super[ownSetter]); |
1234 var descr = Object.getOwnPropertyDescriptor(this, ownSetter); | 1210 var descr = Object.getOwnPropertyDescriptor(this, ownSetter); |
1235 assertEquals(35, descr.value); | 1211 assertTrue('set' in descr); |
1236 assertTrue(descr.configurable); | |
1237 assertFalse(descr.enumerable); | |
1238 assertTrue(descr.writable); | |
1239 assertFalse(Base.prototype.hasOwnProperty(ownSetter)); | 1212 assertFalse(Base.prototype.hasOwnProperty(ownSetter)); |
1240 }, | 1213 }, |
1241 }; | 1214 }; |
1242 | 1215 |
1243 var d = new Derived(); | 1216 var d = new Derived(); |
1244 Object.defineProperty(d, ownReadOnly, { | 1217 Object.defineProperty(d, ownReadOnly, { |
1245 value: 42, | 1218 value: 42, |
1246 writable: false, | 1219 writable: false, |
1247 configurable: true | 1220 configurable: true |
1248 }); | 1221 }); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1291 assertEquals(42, this[ownReadOnly]); | 1264 assertEquals(42, this[ownReadOnly]); |
1292 var descr = Object.getOwnPropertyDescriptor(this, ownReadOnly); | 1265 var descr = Object.getOwnPropertyDescriptor(this, ownReadOnly); |
1293 assertEquals(42, descr.value); | 1266 assertEquals(42, descr.value); |
1294 assertFalse(descr.configurable); | 1267 assertFalse(descr.configurable); |
1295 assertFalse(descr.enumerable); | 1268 assertFalse(descr.enumerable); |
1296 assertFalse(descr.writable); | 1269 assertFalse(descr.writable); |
1297 assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); | 1270 assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); |
1298 | 1271 |
1299 assertEquals(15, this[ownReadonlyAccessor]); | 1272 assertEquals(15, this[ownReadonlyAccessor]); |
1300 super[ownReadonlyAccessor] = 25; | 1273 super[ownReadonlyAccessor] = 25; |
| 1274 assertSame(undefined, super[ownReadonlyAccessor]); |
1301 assertEquals(15, this[ownReadonlyAccessor]); | 1275 assertEquals(15, this[ownReadonlyAccessor]); |
1302 var descr = Object.getOwnPropertyDescriptor(this, ownReadonlyAccessor); | 1276 var descr = Object.getOwnPropertyDescriptor(this, ownReadonlyAccessor); |
1303 assertFalse(descr.configurable); | 1277 assertFalse(descr.configurable); |
1304 assertFalse(descr.enumerable); | 1278 assertFalse(descr.enumerable); |
1305 assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); | 1279 assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); |
1306 | 1280 |
1307 super[ownSetter] = 35; | 1281 super[ownSetter] = 35; |
1308 var descr = Object.getOwnPropertyDescriptor(this, ownSetter); | 1282 var descr = Object.getOwnPropertyDescriptor(this, ownSetter); |
1309 assertFalse(descr.configurable); | 1283 assertFalse(descr.configurable); |
1310 assertFalse(descr.enumerable); | 1284 assertFalse(descr.enumerable); |
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2249 } | 2223 } |
2250 class Derived extends Base { | 2224 class Derived extends Base { |
2251 constructor(x) { | 2225 constructor(x) { |
2252 let r = (() => super(...[x]))(); | 2226 let r = (() => super(...[x]))(); |
2253 assertEquals(this, r); | 2227 assertEquals(this, r); |
2254 } | 2228 } |
2255 } | 2229 } |
2256 let d = new Derived(42); | 2230 let d = new Derived(42); |
2257 assertSame(42, d.x); | 2231 assertSame(42, d.x); |
2258 })(); | 2232 })(); |
OLD | NEW |