diff -r 000000000000 -r 6474c204b198 js/src/tests/ecma_5/eval/line-terminator-paragraph-terminator.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/tests/ecma_5/eval/line-terminator-paragraph-terminator.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,73 @@ +// 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!");