diff --git a/js/src/builtin/MapObject.cpp b/js/src/builtin/MapObject.cpp index 973823d26ed3..60504bcb0393 100644 --- a/js/src/builtin/MapObject.cpp +++ b/js/src/builtin/MapObject.cpp @@ -1236,14 +1236,13 @@ MapObject::finalize(FreeOp* fop, JSObject* obj) bool MapObject::construct(JSContext* cx, unsigned argc, Value* vp) { - Rooted 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 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 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 obj(cx, SetObject::create(cx)); + if (!obj) return false; if (!args.get(0).isNullOrUndefined()) { diff --git a/js/src/jit-test/tests/collections/Map-constructor-1.js b/js/src/jit-test/tests/collections/Map-constructor-1.js index 528f43cc2340..b1a55967dc8a 100644 --- a/js/src/jit-test/tests/collections/Map-constructor-1.js +++ b/js/src/jit-test/tests/collections/Map-constructor-1.js @@ -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); diff --git a/js/src/jit-test/tests/collections/Set-constructor-1.js b/js/src/jit-test/tests/collections/Set-constructor-1.js index 47913f869160..eab36af90930 100644 --- a/js/src/jit-test/tests/collections/Set-constructor-1.js +++ b/js/src/jit-test/tests/collections/Set-constructor-1.js @@ -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); diff --git a/js/src/jit-test/tests/collections/WeakMap-constructor-1.js b/js/src/jit-test/tests/collections/WeakMap-constructor-1.js index bfeaa2511a3f..ab73feb51cee 100644 --- a/js/src/jit-test/tests/collections/WeakMap-constructor-1.js +++ b/js/src/jit-test/tests/collections/WeakMap-constructor-1.js @@ -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); diff --git a/js/src/jsweakmap.cpp b/js/src/jsweakmap.cpp index 3d835ae6982c..ddd8c4e5a22c 100644 --- a/js/src/jsweakmap.cpp +++ b/js/src/jsweakmap.cpp @@ -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.