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

Side by Side Diff: src/collection.js

Issue 21400002: Calling Map etc without new should throw TypeError (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 months 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | test/mjsunit/harmony/collections.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 29 matching lines...) Expand all
40 // supported internally but required for Harmony sets and maps. 40 // supported internally but required for Harmony sets and maps.
41 var undefined_sentinel = {}; 41 var undefined_sentinel = {};
42 42
43 // ------------------------------------------------------------------- 43 // -------------------------------------------------------------------
44 // Harmony Set 44 // Harmony Set
45 45
46 function SetConstructor() { 46 function SetConstructor() {
47 if (%_IsConstructCall()) { 47 if (%_IsConstructCall()) {
48 %SetInitialize(this); 48 %SetInitialize(this);
49 } else { 49 } else {
50 return new $Set(); 50 throw MakeTypeError('constructor_not_function', ['Set']);
51 } 51 }
52 } 52 }
53 53
54 54
55 function SetAdd(key) { 55 function SetAdd(key) {
56 if (!IS_SET(this)) { 56 if (!IS_SET(this)) {
57 throw MakeTypeError('incompatible_method_receiver', 57 throw MakeTypeError('incompatible_method_receiver',
58 ['Set.prototype.add', this]); 58 ['Set.prototype.add', this]);
59 } 59 }
60 if (IS_UNDEFINED(key)) { 60 if (IS_UNDEFINED(key)) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 SetUpSet(); 134 SetUpSet();
135 135
136 136
137 // ------------------------------------------------------------------- 137 // -------------------------------------------------------------------
138 // Harmony Map 138 // Harmony Map
139 139
140 function MapConstructor() { 140 function MapConstructor() {
141 if (%_IsConstructCall()) { 141 if (%_IsConstructCall()) {
142 %MapInitialize(this); 142 %MapInitialize(this);
143 } else { 143 } else {
144 return new $Map(); 144 throw MakeTypeError('constructor_not_function', ['Map']);
145 } 145 }
146 } 146 }
147 147
148 148
149 function MapGet(key) { 149 function MapGet(key) {
150 if (!IS_MAP(this)) { 150 if (!IS_MAP(this)) {
151 throw MakeTypeError('incompatible_method_receiver', 151 throw MakeTypeError('incompatible_method_receiver',
152 ['Map.prototype.get', this]); 152 ['Map.prototype.get', this]);
153 } 153 }
154 if (IS_UNDEFINED(key)) { 154 if (IS_UNDEFINED(key)) {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 SetUpMap(); 236 SetUpMap();
237 237
238 238
239 // ------------------------------------------------------------------- 239 // -------------------------------------------------------------------
240 // Harmony WeakMap 240 // Harmony WeakMap
241 241
242 function WeakMapConstructor() { 242 function WeakMapConstructor() {
243 if (%_IsConstructCall()) { 243 if (%_IsConstructCall()) {
244 %WeakCollectionInitialize(this); 244 %WeakCollectionInitialize(this);
245 } else { 245 } else {
246 return new $WeakMap(); 246 throw MakeTypeError('constructor_not_function', ['WeakMap']);
247 } 247 }
248 } 248 }
249 249
250 250
251 function WeakMapGet(key) { 251 function WeakMapGet(key) {
252 if (!IS_WEAKMAP(this)) { 252 if (!IS_WEAKMAP(this)) {
253 throw MakeTypeError('incompatible_method_receiver', 253 throw MakeTypeError('incompatible_method_receiver',
254 ['WeakMap.prototype.get', this]); 254 ['WeakMap.prototype.get', this]);
255 } 255 }
256 if (!(IS_SPEC_OBJECT(key) || IS_SYMBOL(key))) { 256 if (!(IS_SPEC_OBJECT(key) || IS_SYMBOL(key))) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 SetUpWeakMap(); 328 SetUpWeakMap();
329 329
330 330
331 // ------------------------------------------------------------------- 331 // -------------------------------------------------------------------
332 // Harmony WeakSet 332 // Harmony WeakSet
333 333
334 function WeakSetConstructor() { 334 function WeakSetConstructor() {
335 if (%_IsConstructCall()) { 335 if (%_IsConstructCall()) {
336 %WeakCollectionInitialize(this); 336 %WeakCollectionInitialize(this);
337 } else { 337 } else {
338 return new $WeakSet(); 338 throw MakeTypeError('constructor_not_function', ['WeakSet']);
339 } 339 }
340 } 340 }
341 341
342 342
343 function WeakSetAdd(value) { 343 function WeakSetAdd(value) {
344 if (!IS_WEAKSET(this)) { 344 if (!IS_WEAKSET(this)) {
345 throw MakeTypeError('incompatible_method_receiver', 345 throw MakeTypeError('incompatible_method_receiver',
346 ['WeakSet.prototype.add', this]); 346 ['WeakSet.prototype.add', this]);
347 } 347 }
348 if (!(IS_SPEC_OBJECT(value) || IS_SYMBOL(value))) { 348 if (!(IS_SPEC_OBJECT(value) || IS_SYMBOL(value))) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 // Set up the non-enumerable functions on the WeakSet prototype object. 398 // Set up the non-enumerable functions on the WeakSet prototype object.
399 InstallFunctions($WeakSet.prototype, DONT_ENUM, $Array( 399 InstallFunctions($WeakSet.prototype, DONT_ENUM, $Array(
400 "add", WeakSetAdd, 400 "add", WeakSetAdd,
401 "has", WeakSetHas, 401 "has", WeakSetHas,
402 "delete", WeakSetDelete, 402 "delete", WeakSetDelete,
403 "clear", WeakSetClear 403 "clear", WeakSetClear
404 )); 404 ));
405 } 405 }
406 406
407 SetUpWeakSet(); 407 SetUpWeakSet();
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/harmony/collections.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698