LibRegex: Error out on Eof when parsing nonempty class range elements

Fixes #22507.
This commit is contained in:
Ali Mohammad Pur 2023-12-31 17:44:44 +03:30 committed by Andreas Kling
parent ee3d09f225
commit 267040dde7
Notes: sideshowbarker 2024-07-16 22:58:46 +09:00
2 changed files with 18 additions and 0 deletions

View file

@ -1175,3 +1175,16 @@ TEST_CASE(inversion_state_in_char_class)
EXPECT_EQ(result.capture_group_matches.first()[1].view.to_byte_string(), "}"sv);
}
}
TEST_CASE(mismatching_brackets)
{
auto const test_cases = Array {
"["sv,
"[ -"sv,
};
for (auto const& test_case : test_cases) {
Regex<ECMA262> re(test_case);
EXPECT_EQ(re.parser_result.error, regex::Error::MismatchingBracket);
}
}

View file

@ -1963,6 +1963,11 @@ bool ECMA262Parser::parse_nonempty_class_ranges(Vector<CompareTypeAndValuePair>&
return {};
}
if (match(TokenType::Eof)) {
set_error(Error::MismatchingBracket);
return {};
}
if (match(TokenType::RightBracket) || match(TokenType::HyphenMinus))
return {};