// Any copyright is dedicated to the Public Domain. // http://creativecommons.org/licenses/publicdomain/ //----------------------------------------------------------------------------- var BUGNUMBER = 657367; var summary = "eval must not parse strings containing U+2028 or U+2029"; print(BUGNUMBER + ": " + summary); /************** * BEGIN TEST * **************/ function esc(s) { return s.split("").map(function(v) { var code = ("000" + v.charCodeAt(0).toString(16)).slice(-4); return "\\u" + code; }).join(""); } try { var r = eval('"\u2028"'); throw new Error("\"\\u2028\" didn't throw, returned " + esc(r)); } catch (e) { assertEq(e instanceof SyntaxError, true, "U+2028 is not a valid string character"); } try { var r = eval('("\u2028")'); throw new Error("(\"\\u2028\") didn't throw, returned " + esc(r)); } catch (e) { assertEq(e instanceof SyntaxError, true, "U+2028 is not a valid string character"); } try { var r = eval('"\u2029"'); throw new Error("\"\\u2029\" didn't throw, returned " + esc(r)); } catch (e) { assertEq(e instanceof SyntaxError, true, "U+2029 is not a valid string character"); } try { var r = eval('("\u2029")'); throw new Error("(\"\\u2029\") didn't throw, returned " + esc(r)); } catch (e) { assertEq(e instanceof SyntaxError, true, "U+2029 is not a valid string character"); } /******************************************************************************/ if (typeof reportCompare === "function") reportCompare(true, true); print("Tests complete!");