diff --git a/acorn.js b/acorn.js index e03f6f2e2e..ec3d4ed7e2 100644 --- a/acorn.js +++ b/acorn.js @@ -767,7 +767,13 @@ // here (don't ask). var mods = readWord1(); if (mods && !/^[gmsiy]*$/.test(mods)) raise(start, "Invalid regexp flag"); - return finishToken(_regexp, new RegExp(content, mods)); + try { + var value = new RegExp(content, mods); + } catch (e) { + if (e instanceof SyntaxError) raise(start, e.message); + raise(e); + } + return finishToken(_regexp, value); } // Read an integer in the given radix. Return null if zero digits diff --git a/index.html b/index.html index 8b53efce15..9c86b83d78 100644 --- a/index.html +++ b/index.html @@ -532,7 +532,13 @@ since a '/' inside a '[]' set does not end the expression.
++tokPos;Need to use readWord1 because '\uXXXX' sequences are allowed
here (don't ask).
var mods = readWord1();
if (mods && !/^[gmsiy]*$/.test(mods)) raise(start, "Invalid regexp flag");
- return finishToken(_regexp, new RegExp(content, mods));
+ try {
+ var value = new RegExp(content, mods);
+ } catch (e) {
+ if (e instanceof SyntaxError) raise(start, e.message);
+ raise(e);
+ }
+ return finishToken(_regexp, value);
}Read an integer in the given radix. Return null if zero digits
were read, the integer value otherwise. When len is given, this
will return null unless the integer has exactly len digits.
function readInt(radix, len) {