// Any copyright is dedicated to the Public Domain. // http://creativecommons.org/licenses/publicdomain/ //----------------------------------------------------------------------------- var BUGNUMBER = 1178653; var summary = "|new| on a cross-compartment wrapper to a non-constructor shouldn't assert"; print(BUGNUMBER + ": " + summary); /************** * BEGIN TEST * **************/ var g = newGlobal(); var otherStr = new g.String("foo"); assertEq(otherStr instanceof g.String, true); assertEq(otherStr.valueOf(), "foo"); // THIS IS WRONG. |new| itself should throw if !IsConstructor(constructor), // meaning this global's TypeError should be used. The problem ultimately is // that wrappers conflate callable/constructible, so any old function from // another global appears to be both. Somebody fix bug XXXXXX! try { var constructor = g.parseInt; new constructor(); throw new Error("no error thrown"); } catch (e) { assertEq(e instanceof g.TypeError, true, "THIS REALLY SHOULD BE |e instanceof TypeError|"); } /******************************************************************************/ if (typeof reportCompare === "function") reportCompare(true, true); print("Tests complete");