fix(regular_expression): Handle - in /[\-]/u as escaped character (#5631)

Fixes #5487
This commit is contained in:
leaysgur 2024-09-09 04:14:17 +00:00
parent af6d240559
commit 28aad281b6
2 changed files with 5 additions and 1 deletions

View file

@ -979,7 +979,7 @@ impl<'a> PatternParser<'a> {
if self.state.unicode_mode && self.reader.eat('-') { if self.state.unicode_mode && self.reader.eat('-') {
return Ok(Some(ast::CharacterClassContents::Character(ast::Character { return Ok(Some(ast::CharacterClassContents::Character(ast::Character {
span: self.span_factory.create(span_start, self.reader.offset()), span: self.span_factory.create(span_start, self.reader.offset()),
kind: ast::CharacterKind::Symbol, kind: ast::CharacterKind::SingleEscape,
value: '-' as u32, value: '-' as u32,
}))); })));
} }

View file

@ -548,6 +548,10 @@ mod test {
(r"/\udf06/u", Some(r"/\uDF06/u")), (r"/\udf06/u", Some(r"/\uDF06/u")),
// we capitalize hex unicodes. // we capitalize hex unicodes.
(r"/^|\udf06/g", Some(r"/^|\uDF06/g")), (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) { fn test_display(allocator: &Allocator, (source, expect): &Case) {