Skip to content
Permalink
Browse files

Fix: no-misleading-character-class crash on invalid regex (fixes #12169

…) (#12347)
  • Loading branch information
mdjermanovic authored and platinumazure committed Oct 25, 2019
1 parent c6a9a3b commit 0bffe953d2752dd2d3045f2f8771c96b6cee8fc4
Showing with 19 additions and 7 deletions.
  1. +14 −6 lib/rules/no-misleading-character-class.js
  2. +5 −1 tests/lib/rules/no-misleading-character-class.js
@@ -130,12 +130,6 @@ module.exports = {
* @returns {void}
*/
function verify(node, pattern, flags) {
const patternNode = parser.parsePattern(
pattern,
0,
pattern.length,
flags.includes("u")
);
const has = {
surrogatePairWithoutUFlag: false,
combiningClass: false,
@@ -144,6 +138,20 @@ module.exports = {
regionalIndicatorSymbol: false,
zwj: false
};
let patternNode;

try {
patternNode = parser.parsePattern(
pattern,
0,
pattern.length,
flags.includes("u")
);
} catch (e) {

// Ignore regular expressions with syntax errors
return;
}

visitRegExpAST(patternNode, {
onCharacterClassEnter(ccNode) {
@@ -63,7 +63,11 @@ ruleTester.run("no-misleading-character-class", rule, {

// Ignore solo ZWJ.
"var r = /[\\u200D]/",
"var r = /[\\u200D]/u"
"var r = /[\\u200D]/u",

// don't report and don't crash on invalid regex
"var r = new RegExp('[Á] [ ');",
"var r = RegExp('{ [Á]', 'u');"
],
invalid: [

0 comments on commit 0bffe95

Please sign in to comment.