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

Side by Side Diff: test/mjsunit/harmony/reflect.js

Issue 1408163005: [es6] Partially implement Reflect.getOwnPropertyDescriptor. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: 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/property-descriptor.cc ('k') | test/mjsunit/harmony/reflect-get-own-property-descriptor.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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: --harmony-reflect 5 // Flags: --harmony-reflect
6 6
7 // TODO(neis): Test with proxies. 7 // TODO(neis): Test with proxies.
8 8
9 9
10 10
(...skipping 29 matching lines...) Expand all
40 new WeakSet, 40 new WeakSet,
41 new ArrayBuffer(10), 41 new ArrayBuffer(10),
42 new Int32Array(5), 42 new Int32Array(5),
43 Object, 43 Object,
44 Function, 44 Function,
45 Date, 45 Date,
46 RegExp, 46 RegExp,
47 global 47 global
48 ]; 48 ];
49 49
50 function prepare(tgt) { 50 function prepare(target) {
51 tgt["bla"] = true; 51 target["bla"] = true;
52 tgt[4] = 42; 52 target[4] = 42;
53 tgt[sym] = "foo"; 53 target[sym] = "foo";
54 tgt["noconf"] = 43; 54 target["noconf"] = 43;
55 Object.defineProperty(tgt, "noconf", {configurable: false}); 55 Object.defineProperty(target, "noconf", {configurable: false});
56 Object.defineProperty(tgt, "getter", 56 Object.defineProperty(target, "getter",
57 { get: function () {return this.bla}, configurable: true }); 57 { get: function () {return this.bla}, configurable: true });
58 Object.defineProperty(tgt, "setter", 58 Object.defineProperty(target, "setter",
59 { set: function () {}, configurable: true }); 59 { set: function () {}, configurable: true });
60 } 60 }
61 61
62 62
63 63
64 //////////////////////////////////////////////////////////////////////////////// 64 ////////////////////////////////////////////////////////////////////////////////
65 // Reflect.get 65 // Reflect.get
66 66
67 67
68 (function testReflectGetArity() { 68 (function testReflectGetArity() {
69 assertEquals(3, Reflect.get.length); 69 assertEquals(3, Reflect.get.length);
70 })(); 70 })();
71 71
72 72
73 (function testReflectGetOnNonObject() { 73 (function testReflectGetOnNonObject() {
74 assertThrows(function() { Reflect.get(); }, TypeError); 74 assertThrows(function() { Reflect.get(); }, TypeError);
75 assertThrows(function() { Reflect.get(42, "bla"); }, TypeError); 75 assertThrows(function() { Reflect.get(42, "bla"); }, TypeError);
76 assertThrows(function() { Reflect.get(null, "bla"); }, TypeError); 76 assertThrows(function() { Reflect.get(null, "bla"); }, TypeError);
77 })(); 77 })();
78 78
79 79
80 (function testReflectGetKeyConversion() { 80 (function testReflectGetKeyConversion() {
81 var tgt = {bla: 42}; 81 var target = {bla: 42};
82 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; 82 var a = { [Symbol.toPrimitive]: function() { return "bla" } };
83 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; 83 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } };
84 assertEquals(42, Reflect.get(tgt, a)); 84 assertEquals(42, Reflect.get(target, a));
85 assertThrows(function() { Reflect.get(tgt, b); }, "gaga"); 85 assertThrows(function() { Reflect.get(target, b); }, "gaga");
86 })(); 86 })();
87 87
88 88
89 (function testReflectGetOnObject() { 89 (function testReflectGetOnObject() {
90 var receiver = {bla: false}; 90 var receiver = {bla: false};
91 for (let tgt of objects) { 91 for (let target of objects) {
92 prepare(tgt); 92 prepare(target);
93 assertEquals(true, Reflect.get(tgt, "bla")); 93 assertEquals(true, Reflect.get(target, "bla"));
94 assertEquals(true, Reflect.get(tgt, "bla", tgt)); 94 assertEquals(true, Reflect.get(target, "bla", target));
95 assertEquals(true, Reflect.get(tgt, "bla", receiver)); 95 assertEquals(true, Reflect.get(target, "bla", receiver));
96 assertEquals(42, Reflect.get(tgt, 4)); 96 assertEquals(42, Reflect.get(target, 4));
97 assertEquals(42, Reflect.get(tgt, 4, tgt)); 97 assertEquals(42, Reflect.get(target, 4, target));
98 assertEquals(42, Reflect.get(tgt, 4, receiver)); 98 assertEquals(42, Reflect.get(target, 4, receiver));
99 assertEquals(42, Reflect.get(tgt, "4")); 99 assertEquals(42, Reflect.get(target, "4"));
100 assertEquals(42, Reflect.get(tgt, "4", tgt)); 100 assertEquals(42, Reflect.get(target, "4", target));
101 assertEquals(42, Reflect.get(tgt, "4", receiver)); 101 assertEquals(42, Reflect.get(target, "4", receiver));
102 assertEquals("foo", Reflect.get(tgt, sym)); 102 assertEquals("foo", Reflect.get(target, sym));
103 assertEquals("foo", Reflect.get(tgt, sym, tgt)); 103 assertEquals("foo", Reflect.get(target, sym, target));
104 assertEquals("foo", Reflect.get(tgt, sym, receiver)); 104 assertEquals("foo", Reflect.get(target, sym, receiver));
105 assertEquals(43, Reflect.get(tgt, "noconf")); 105 assertEquals(43, Reflect.get(target, "noconf"));
106 assertEquals(43, Reflect.get(tgt, "noconf", tgt)); 106 assertEquals(43, Reflect.get(target, "noconf", target));
107 assertEquals(43, Reflect.get(tgt, "noconf", receiver)); 107 assertEquals(43, Reflect.get(target, "noconf", receiver));
108 assertEquals(true, Reflect.get(tgt, "getter")); 108 assertEquals(true, Reflect.get(target, "getter"));
109 assertEquals(true, Reflect.get(tgt, "getter", tgt)); 109 assertEquals(true, Reflect.get(target, "getter", target));
110 assertEquals(false, Reflect.get(tgt, "getter", receiver)); 110 assertEquals(false, Reflect.get(target, "getter", receiver));
111 assertEquals(undefined, Reflect.get(tgt, "setter")); 111 assertEquals(undefined, Reflect.get(target, "setter"));
112 assertEquals(undefined, Reflect.get(tgt, "setter", tgt)); 112 assertEquals(undefined, Reflect.get(target, "setter", target));
113 assertEquals(undefined, Reflect.get(tgt, "setter", receiver)); 113 assertEquals(undefined, Reflect.get(target, "setter", receiver));
114 assertEquals(undefined, Reflect.get(tgt, "foo")); 114 assertEquals(undefined, Reflect.get(target, "foo"));
115 assertEquals(undefined, Reflect.get(tgt, "foo", tgt)); 115 assertEquals(undefined, Reflect.get(target, "foo", target));
116 assertEquals(undefined, Reflect.get(tgt, "foo", receiver)); 116 assertEquals(undefined, Reflect.get(target, "foo", receiver));
117 assertEquals(undefined, Reflect.get(tgt, 666)); 117 assertEquals(undefined, Reflect.get(target, 666));
118 assertEquals(undefined, Reflect.get(tgt, 666, tgt)); 118 assertEquals(undefined, Reflect.get(target, 666, target));
119 assertEquals(undefined, Reflect.get(tgt, 666, receiver)); 119 assertEquals(undefined, Reflect.get(target, 666, receiver));
120 120
121 let proto = tgt.__proto__; 121 let proto = target.__proto__;
122 tgt.__proto__ = { get foo() {return this.bla} }; 122 target.__proto__ = { get foo() {return this.bla} };
123 assertEquals(true, Reflect.get(tgt, "foo")); 123 assertEquals(true, Reflect.get(target, "foo"));
124 assertEquals(true, Reflect.get(tgt, "foo", tgt)); 124 assertEquals(true, Reflect.get(target, "foo", target));
125 assertEquals(false, Reflect.get(tgt, "foo", receiver)); 125 assertEquals(false, Reflect.get(target, "foo", receiver));
126 tgt.__proto__ = proto; 126 target.__proto__ = proto;
127 } 127 }
128 })(); 128 })();
129 129
130 130
131 131
132 //////////////////////////////////////////////////////////////////////////////// 132 ////////////////////////////////////////////////////////////////////////////////
133 // Reflect.has 133 // Reflect.has
134 134
135 135
136 (function testReflectHasArity() { 136 (function testReflectHasArity() {
137 assertEquals(2, Reflect.has.length); 137 assertEquals(2, Reflect.has.length);
138 })(); 138 })();
139 139
140 140
141 (function testReflectHasOnNonObject() { 141 (function testReflectHasOnNonObject() {
142 assertThrows(function() { Reflect.has(); }, TypeError); 142 assertThrows(function() { Reflect.has(); }, TypeError);
143 assertThrows(function() { Reflect.has(42, "bla"); }, TypeError); 143 assertThrows(function() { Reflect.has(42, "bla"); }, TypeError);
144 assertThrows(function() { Reflect.has(null, "bla"); }, TypeError); 144 assertThrows(function() { Reflect.has(null, "bla"); }, TypeError);
145 })(); 145 })();
146 146
147 147
148 (function testReflectHasKeyConversion() { 148 (function testReflectHasKeyConversion() {
149 var tgt = {bla: 42}; 149 var target = {bla: 42};
150 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; 150 var a = { [Symbol.toPrimitive]: function() { return "bla" } };
151 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; 151 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } };
152 assertTrue(Reflect.has(tgt, a)); 152 assertTrue(Reflect.has(target, a));
153 assertThrows(function() { Reflect.has(tgt, b); }, "gaga"); 153 assertThrows(function() { Reflect.has(target, b); }, "gaga");
154 })(); 154 })();
155 155
156 156
157 (function testReflectHasOnObject() { 157 (function testReflectHasOnObject() {
158 for (let tgt of objects) { 158 for (let target of objects) {
159 prepare(tgt); 159 prepare(target);
160 assertTrue(Reflect.has(tgt, "bla")); 160 assertTrue(Reflect.has(target, "bla"));
161 assertTrue(Reflect.has(tgt, 4)); 161 assertTrue(Reflect.has(target, 4));
162 assertTrue(Reflect.has(tgt, "4")); 162 assertTrue(Reflect.has(target, "4"));
163 assertTrue(Reflect.has(tgt, sym)); 163 assertTrue(Reflect.has(target, sym));
164 assertTrue(Reflect.has(tgt, "noconf")); 164 assertTrue(Reflect.has(target, "noconf"));
165 assertTrue(Reflect.has(tgt, "getter")); 165 assertTrue(Reflect.has(target, "getter"));
166 assertTrue(Reflect.has(tgt, "setter")); 166 assertTrue(Reflect.has(target, "setter"));
167 assertFalse(Reflect.has(tgt, "foo")); 167 assertFalse(Reflect.has(target, "foo"));
168 assertFalse(Reflect.has(tgt, 666)); 168 assertFalse(Reflect.has(target, 666));
169 169
170 let proto = tgt.__proto__; 170 let proto = target.__proto__;
171 tgt.__proto__ = { get foo() {return this.bla} }; 171 target.__proto__ = { get foo() {return this.bla} };
172 assertEquals(true, Reflect.has(tgt, "foo")); 172 assertEquals(true, Reflect.has(target, "foo"));
173 tgt.__proto__ = proto; 173 target.__proto__ = proto;
174 } 174 }
175 })(); 175 })();
176 176
177 177
178 178
179 //////////////////////////////////////////////////////////////////////////////// 179 ////////////////////////////////////////////////////////////////////////////////
180 // Reflect.defineProperty 180 // Reflect.defineProperty
181 181
182 182
183 (function testReflectDefinePropertyArity() { 183 (function testReflectDefinePropertyArity() {
184 assertEquals(3, Reflect.defineProperty.length); 184 assertEquals(3, Reflect.defineProperty.length);
185 })(); 185 })();
186 186
187 187
188 (function testReflectDefinePropertyOnNonObject() { 188 (function testReflectDefinePropertyOnNonObject() {
189 assertThrows(function() { Reflect.defineProperty(); }, TypeError); 189 assertThrows(function() { Reflect.defineProperty(); }, TypeError);
190 assertThrows(function() { Reflect.defineProperty(42, "bla"); }, TypeError); 190 assertThrows(function() { Reflect.defineProperty(42, "bla"); }, TypeError);
191 assertThrows(function() { Reflect.defineProperty(null, "bla"); }, TypeError); 191 assertThrows(function() { Reflect.defineProperty(null, "bla"); }, TypeError);
192 assertThrows(function() { Reflect.defineProperty({}, "bla"); }, TypeError); 192 assertThrows(function() { Reflect.defineProperty({}, "bla"); }, TypeError);
193 assertThrows(function() { Reflect.defineProperty({}, "bla", 42); }, 193 assertThrows(function() { Reflect.defineProperty({}, "bla", 42); },
194 TypeError); 194 TypeError);
195 assertThrows(function() { Reflect.defineProperty({}, "bla", null); }, 195 assertThrows(function() { Reflect.defineProperty({}, "bla", null); },
196 TypeError); 196 TypeError);
197 })(); 197 })();
198 198
199 199
200 (function testReflectDefinePropertyKeyConversion() { 200 (function testReflectDefinePropertyKeyConversion() {
201 var tgt = {}; 201 var target = {};
202 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; 202 var a = { [Symbol.toPrimitive]: function() { return "bla" } };
203 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; 203 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } };
204 assertTrue(Reflect.defineProperty(tgt, a, {value: 42})); 204 assertTrue(Reflect.defineProperty(target, a, {value: 42}));
205 assertEquals(tgt.bla, 42); 205 assertEquals(target.bla, 42);
206 assertThrows(function() { Reflect.defineProperty(tgt, b); }, "gaga"); 206 assertThrows(function() { Reflect.defineProperty(target, b); }, "gaga");
207 })(); 207 })();
208 208
209 209
210 // See reflect-define-property.js for further tests. 210 // See reflect-define-property.js for further tests.
211 211
212 212
213 213
214 //////////////////////////////////////////////////////////////////////////////// 214 ////////////////////////////////////////////////////////////////////////////////
215 // Reflect.deleteProperty 215 // Reflect.deleteProperty
216 216
217 217
218 (function testReflectDeletePropertyArity() { 218 (function testReflectDeletePropertyArity() {
219 assertEquals(2, Reflect.deleteProperty.length); 219 assertEquals(2, Reflect.deleteProperty.length);
220 })(); 220 })();
221 221
222 222
223 (function testReflectDeletePropertyOnNonObject() { 223 (function testReflectDeletePropertyOnNonObject() {
224 assertThrows(function() { Reflect.deleteProperty(); }, TypeError); 224 assertThrows(function() { Reflect.deleteProperty(); }, TypeError);
225 assertThrows(function() { Reflect.deleteProperty(42, "bla"); }, TypeError); 225 assertThrows(function() { Reflect.deleteProperty(42, "bla"); }, TypeError);
226 assertThrows(function() { Reflect.deleteProperty(null, "bla"); }, TypeError); 226 assertThrows(function() { Reflect.deleteProperty(null, "bla"); }, TypeError);
227 })(); 227 })();
228 228
229 229
230 (function testReflectDeletePropertyKeyConversion() { 230 (function testReflectDeletePropertyKeyConversion() {
231 var tgt = {bla: 42}; 231 var target = {bla: 42};
232 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; 232 var a = { [Symbol.toPrimitive]: function() { return "bla" } };
233 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; 233 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } };
234 assertTrue(Reflect.deleteProperty(tgt, a)); 234 assertTrue(Reflect.deleteProperty(target, a));
235 assertThrows(function() { Reflect.deleteProperty(tgt, b); }, "gaga"); 235 assertThrows(function() { Reflect.deleteProperty(target, b); }, "gaga");
236 })(); 236 })();
237 237
238 238
239 (function testReflectDeletePropertyOnObject() { 239 (function testReflectDeletePropertyOnObject() {
240 for (let tgt of objects) { 240 for (let target of objects) {
241 prepare(tgt); 241 prepare(target);
242 assertTrue(Reflect.deleteProperty(tgt, "bla")); 242 assertTrue(Reflect.deleteProperty(target, "bla"));
243 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, "bla")); 243 assertEquals(undefined, Object.getOwnPropertyDescriptor(target, "bla"));
244 if (tgt instanceof Int32Array) { 244 if (target instanceof Int32Array) {
245 assertFalse(Reflect.deleteProperty(tgt, 4)); 245 assertFalse(Reflect.deleteProperty(target, 4));
246 } else { 246 } else {
247 assertTrue(Reflect.deleteProperty(tgt, 4)); 247 assertTrue(Reflect.deleteProperty(target, 4));
248 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, 4)); 248 assertEquals(undefined, Object.getOwnPropertyDescriptor(target, 4));
249 } 249 }
250 assertTrue(Reflect.deleteProperty(tgt, sym)); 250 assertTrue(Reflect.deleteProperty(target, sym));
251 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, sym)); 251 assertEquals(undefined, Object.getOwnPropertyDescriptor(target, sym));
252 assertFalse(Reflect.deleteProperty(tgt, "noconf")); 252 assertFalse(Reflect.deleteProperty(target, "noconf"));
253 assertEquals(43, tgt.noconf); 253 assertEquals(43, target.noconf);
254 assertTrue(Reflect.deleteProperty(tgt, "getter")); 254 assertTrue(Reflect.deleteProperty(target, "getter"));
255 assertTrue(Reflect.deleteProperty(tgt, "setter")); 255 assertTrue(Reflect.deleteProperty(target, "setter"));
256 assertTrue(Reflect.deleteProperty(tgt, "foo")); 256 assertTrue(Reflect.deleteProperty(target, "foo"));
257 assertTrue(Reflect.deleteProperty(tgt, 666)); 257 assertTrue(Reflect.deleteProperty(target, 666));
258 258
259 let proto = tgt.__proto__; 259 let proto = target.__proto__;
260 tgt.__proto__ = { get foo() {return this.bla} }; 260 target.__proto__ = { get foo() {return this.bla} };
261 assertEquals(true, Reflect.deleteProperty(tgt, "foo")); 261 assertEquals(true, Reflect.deleteProperty(target, "foo"));
262 tgt.__proto__ = proto; 262 target.__proto__ = proto;
263 } 263 }
264 })(); 264 })();
265 265
266 266
267 267
268 //////////////////////////////////////////////////////////////////////////////// 268 ////////////////////////////////////////////////////////////////////////////////
269 // Reflect.getPrototypeOf 269 // Reflect.getPrototypeOf
270 270
271 271
272 (function testReflectGetPrototypeOfArity() { 272 (function testReflectGetPrototypeOfArity() {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 322
323 (function testReflectIsExtensibleOnNonObject() { 323 (function testReflectIsExtensibleOnNonObject() {
324 assertThrows(function() { Reflect.isExtensible(); }, TypeError); 324 assertThrows(function() { Reflect.isExtensible(); }, TypeError);
325 assertThrows(function() { Reflect.isExtensible(42); }, TypeError); 325 assertThrows(function() { Reflect.isExtensible(42); }, TypeError);
326 assertThrows(function() { Reflect.isExtensible(null); }, TypeError); 326 assertThrows(function() { Reflect.isExtensible(null); }, TypeError);
327 })(); 327 })();
328 328
329 329
330 (function testReflectIsExtensibleOnObject() { 330 (function testReflectIsExtensibleOnObject() {
331 // This should be the last test on [objects] as it modifies them irreversibly. 331 // This should be the last test on [objects] as it modifies them irreversibly.
332 for (let tgt of objects) { 332 for (let target of objects) {
333 prepare(tgt); 333 prepare(target);
334 if (tgt instanceof Int32Array) continue; // issue v8:4460 334 if (target instanceof Int32Array) continue; // issue v8:4460
335 assertTrue(Reflect.isExtensible(tgt)); 335 assertTrue(Reflect.isExtensible(target));
336 Object.preventExtensions(tgt); 336 Object.preventExtensions(target);
337 assertFalse(Reflect.isExtensible(tgt)); 337 assertFalse(Reflect.isExtensible(target));
338 } 338 }
339 })(); 339 })();
340 340
341 341
342 342
343 //////////////////////////////////////////////////////////////////////////////// 343 ////////////////////////////////////////////////////////////////////////////////
344 // Reflect.enumerate 344 // Reflect.enumerate
345 345
346 346
347 (function testReflectEnumerateArity() { 347 (function testReflectEnumerateArity() {
348 assertEquals(1, Reflect.enumerate.length); 348 assertEquals(1, Reflect.enumerate.length);
349 })(); 349 })();
350 350
351 351
352 (function testReflectEnumerateOnNonObject() { 352 (function testReflectEnumerateOnNonObject() {
353 assertThrows(function() { Reflect.enumerate(); }, TypeError); 353 assertThrows(function() { Reflect.enumerate(); }, TypeError);
354 assertThrows(function() { Reflect.enumerate(42); }, TypeError); 354 assertThrows(function() { Reflect.enumerate(42); }, TypeError);
355 assertThrows(function() { Reflect.enumerate(null); }, TypeError); 355 assertThrows(function() { Reflect.enumerate(null); }, TypeError);
356 })(); 356 })();
357 357
358 358
359 // See reflect-enumerate*.js for further tests. 359 // See reflect-enumerate*.js for further tests.
360 360
361 361
362 362
363 //////////////////////////////////////////////////////////////////////////////// 363 ////////////////////////////////////////////////////////////////////////////////
364 // Reflect.getOwnPropertyDescriptor
365
366
367 (function testReflectGetOwnPropertyDescriptorArity() {
368 assertEquals(2, Reflect.getOwnPropertyDescriptor.length);
369 })();
370
371
372 (function testReflectGetOwnPropertyDescriptorOnNonObject() {
373 assertThrows(function() { Reflect.getOwnPropertyDescriptor(); }, TypeError);
374 assertThrows(function() { Reflect.getOwnPropertyDescriptor(42); },
375 TypeError);
376 assertThrows(function() { Reflect.getOwnPropertyDescriptor(null); },
377 TypeError);
378 })();
379
380
381 (function testReflectGetOwnPropertyDescriptorKeyConversion() {
382 var target = {bla: 42};
383 var a = { [Symbol.toPrimitive]: function() { return "bla" } };
384 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } };
385 assertEquals(42, Reflect.getOwnPropertyDescriptor(target, a).value);
386 assertThrows(function() { Reflect.getOwnPropertyDescriptor(target, b); },
387 "gaga");
388 })();
389
390
391 // See reflect-get-own-property-descriptor.js for further tests.
392
393
394
395 ////////////////////////////////////////////////////////////////////////////////
364 // Reflect.preventExtensions 396 // Reflect.preventExtensions
365 397
366 398
367 (function testReflectPreventExtensionsArity() { 399 (function testReflectPreventExtensionsArity() {
368 assertEquals(1, Reflect.preventExtensions.length); 400 assertEquals(1, Reflect.preventExtensions.length);
369 })(); 401 })();
370 402
371 403
372 (function testReflectPreventExtensionsOnNonObject() { 404 (function testReflectPreventExtensionsOnNonObject() {
373 assertThrows(function() { Reflect.preventExtensions(); }, TypeError); 405 assertThrows(function() { Reflect.preventExtensions(); }, TypeError);
374 assertThrows(function() { Reflect.preventExtensions(42); }, TypeError); 406 assertThrows(function() { Reflect.preventExtensions(42); }, TypeError);
375 assertThrows(function() { Reflect.preventExtensions(null); }, TypeError); 407 assertThrows(function() { Reflect.preventExtensions(null); }, TypeError);
376 })(); 408 })();
377 409
378 410
379 // See reflect-prevent-extensions.js for further tests. 411 // See reflect-prevent-extensions.js for further tests.
380 412
381 // TODO(neis): Need proxies to test the situation where 413 // TODO(neis): Need proxies to test the situation where
382 // [[preventExtensions]] returns false. 414 // [[preventExtensions]] returns false.
OLDNEW
« no previous file with comments | « src/property-descriptor.cc ('k') | test/mjsunit/harmony/reflect-get-own-property-descriptor.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698