| 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 |