Bug 1083752 - Calling Map/Set/WeakMap (without new) should throw. r=Waldo

This commit is contained in:
Tom Schuster 2015-07-23 11:37:05 +02:00
parent c469478701
commit 59de081e97
5 changed files with 24 additions and 32 deletions

View File

@ -1236,14 +1236,13 @@ MapObject::finalize(FreeOp* fop, JSObject* obj)
bool
MapObject::construct(JSContext* cx, unsigned argc, Value* vp)
{
Rooted<MapObject*> obj(cx, MapObject::create(cx));
if (!obj)
return false;
CallArgs args = CallArgsFromVp(argc, vp);
// FIXME: bug 1083752
if (!WarnIfNotConstructing(cx, args, "Map"))
if (!ThrowIfNotConstructing(cx, args, "Map"))
return false;
Rooted<MapObject*> obj(cx, MapObject::create(cx));
if (!obj)
return false;
if (!args.get(0).isNullOrUndefined()) {
@ -1902,14 +1901,13 @@ SetObject::finalize(FreeOp* fop, JSObject* obj)
bool
SetObject::construct(JSContext* cx, unsigned argc, Value* vp)
{
Rooted<SetObject*> obj(cx, SetObject::create(cx));
if (!obj)
return false;
CallArgs args = CallArgsFromVp(argc, vp);
// FIXME: bug 1083752
if (!WarnIfNotConstructing(cx, args, "Set"))
if (!ThrowIfNotConstructing(cx, args, "Set"))
return false;
Rooted<SetObject*> obj(cx, SetObject::create(cx));
if (!obj)
return false;
if (!args.get(0).isNullOrUndefined()) {

View File

@ -9,8 +9,6 @@ assertEq(m.size, 0);
m = new Map(null);
assertEq(m.size, 0);
// FIXME: bug 1083752
assertWarning(() => Map(), "None");
// assertThrowsInstanceOf(() => Map(), TypeError);
// assertThrowsInstanceOf(() => Map(undefined), TypeError);
// assertThrowsInstanceOf(() => Map(null), TypeError);
assertThrowsInstanceOf(() => Map(), TypeError);
assertThrowsInstanceOf(() => Map(undefined), TypeError);
assertThrowsInstanceOf(() => Map(null), TypeError);

View File

@ -9,8 +9,6 @@ assertEq(s.size, 0);
s = new Set(null);
assertEq(s.size, 0);
// FIXME: bug 1083752
assertWarning(() => Set(), "None");
// assertThrowsInstanceOf(() => Set(), TypeError);
// assertThrowsInstanceOf(() => Set(undefined), TypeError);
// assertThrowsInstanceOf(() => Set(null), TypeError);
assertThrowsInstanceOf(() => Set(), TypeError);
assertThrowsInstanceOf(() => Set(undefined), TypeError);
assertThrowsInstanceOf(() => Set(null), TypeError);

View File

@ -6,8 +6,6 @@ new WeakMap();
new WeakMap(undefined);
new WeakMap(null);
// FIXME: bug 1083752
assertWarning(() => WeakMap(), "None");
// assertThrowsInstanceOf(() => WeakMap(), TypeError);
// assertThrowsInstanceOf(() => WeakMap(undefined), TypeError);
// assertThrowsInstanceOf(() => WeakMap(null), TypeError);
assertThrowsInstanceOf(() => WeakMap(), TypeError);
assertThrowsInstanceOf(() => WeakMap(undefined), TypeError);
assertThrowsInstanceOf(() => WeakMap(null), TypeError);

View File

@ -512,13 +512,13 @@ static bool
WeakMap_construct(JSContext* cx, unsigned argc, Value* vp)
{
CallArgs args = CallArgsFromVp(argc, vp);
RootedObject obj(cx, NewBuiltinClassInstance(cx, &WeakMapObject::class_));
if (!obj)
return false;
// ES6 draft rev 31 (15 Jan 2015) 23.3.1.1 step 1.
// FIXME: bug 1083752
if (!WarnIfNotConstructing(cx, args, "WeakMap"))
if (!ThrowIfNotConstructing(cx, args, "WeakMap"))
return false;
RootedObject obj(cx, NewBuiltinClassInstance(cx, &WeakMapObject::class_));
if (!obj)
return false;
// Steps 5-6, 11.