Skip to content

Commit 97c3ce6

Browse files
authored
fix: error in expression character class with nested character class (#136)
1 parent 89cfbd0 commit 97c3ce6

File tree

3 files changed

+410
-9
lines changed

3 files changed

+410
-9
lines changed

src/parser.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,7 @@ class RegExpParserState {
528528
if (
529529
node.type !== "CharacterClass" ||
530530
(node.parent.type !== "Alternative" &&
531-
node.parent.type !== "CharacterClass") ||
532-
(this._expressionBuffer && node.elements.length > 0)
531+
node.parent.type !== "CharacterClass")
533532
) {
534533
throw new Error("UnknownError")
535534
}
@@ -540,10 +539,15 @@ class RegExpParserState {
540539
this._node = parent
541540

542541
const expression = this._expressionBuffer
543-
this._expressionBuffer = null
544-
if (!expression) {
542+
if (
543+
expression?.parent !== (node as unknown as ExpressionCharacterClass)
544+
) {
545545
return
546546
}
547+
if (node.elements.length > 0) {
548+
throw new Error("UnknownError")
549+
}
550+
this._expressionBuffer = null
547551

548552
// Replace with ExpressionCharacterClass.
549553
const newNode: ExpressionCharacterClass = {

0 commit comments

Comments
 (0)