From 28aad281b61a6092383f76988fca016f68488408 Mon Sep 17 00:00:00 2001 From: leaysgur <6259812+leaysgur@users.noreply.github.com> Date: Mon, 9 Sep 2024 04:14:17 +0000 Subject: [PATCH] fix(regular_expression): Handle `-` in `/[\-]/u` as escaped character (#5631) Fixes #5487 --- crates/oxc_regular_expression/src/body_parser/parser.rs | 2 +- crates/oxc_regular_expression/src/display.rs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/oxc_regular_expression/src/body_parser/parser.rs b/crates/oxc_regular_expression/src/body_parser/parser.rs index d23d5bdfbf092..80f260c5d6b37 100644 --- a/crates/oxc_regular_expression/src/body_parser/parser.rs +++ b/crates/oxc_regular_expression/src/body_parser/parser.rs @@ -979,7 +979,7 @@ impl<'a> PatternParser<'a> { if self.state.unicode_mode && self.reader.eat('-') { return Ok(Some(ast::CharacterClassContents::Character(ast::Character { span: self.span_factory.create(span_start, self.reader.offset()), - kind: ast::CharacterKind::Symbol, + kind: ast::CharacterKind::SingleEscape, value: '-' as u32, }))); } diff --git a/crates/oxc_regular_expression/src/display.rs b/crates/oxc_regular_expression/src/display.rs index 58c5ecc1fb9b6..89863f0b43bf2 100644 --- a/crates/oxc_regular_expression/src/display.rs +++ b/crates/oxc_regular_expression/src/display.rs @@ -548,6 +548,10 @@ mod test { (r"/\udf06/u", Some(r"/\uDF06/u")), // we capitalize hex unicodes. (r"/^|\udf06/g", Some(r"/^|\uDF06/g")), + (r"/[\-]/", None), + (r"/[\-]/u", None), + (r"/[\-]/v", None), + (r"/([\-a-z]{0,31})/iu", None), ]; fn test_display(allocator: &Allocator, (source, expect): &Case) {