Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(329)

Side by Side Diff: test/mjsunit/es6/super.js

Issue 1427113002: Fix corner-case behavior of Object::SetSuperProperty. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/objects.cc ('k') | test/mjsunit/harmony/reflect.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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 })();
OLDNEW
« no previous file with comments | « src/objects.cc ('k') | test/mjsunit/harmony/reflect.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698