LibRegex: Allow quantifiers after quantifiable assertions
While quantifying assertions is very much meaningless, the specification allows them with annex B's extended grammar for browsers, so read and apply the quantifiers. Fixes #12373.
This commit is contained in:
parent
6a1ae4c185
commit
627bbee055
Notes:
sideshowbarker
2024-07-17 18:29:36 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/627bbee055 Pull-request: https://github.com/SerenityOS/serenity/pull/12653 Issue: https://github.com/SerenityOS/serenity/issues/12373 Issue: https://github.com/SerenityOS/serenity/issues/12615 Reviewed-by: https://github.com/trflynn89
2 changed files with 4 additions and 0 deletions
|
@ -599,6 +599,7 @@ TEST_CASE(ECMA262_parse)
|
|||
{ "(?<$$_$$>a)"sv },
|
||||
{ "(?<ÿ>a)"sv },
|
||||
{ "(?<𝓑𝓻𝓸𝔀𝓷>a)"sv },
|
||||
{ "((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})"sv, regex::Error::NoError, ECMAScriptFlags::BrowserExtended } // #12373, quantifiable assertions.
|
||||
};
|
||||
|
||||
for (auto& test : tests) {
|
||||
|
|
|
@ -1083,6 +1083,9 @@ bool ECMA262Parser::parse_assertion(ByteCode& stack, [[maybe_unused]] size_t& ma
|
|||
if (m_should_use_browser_extended_grammar) {
|
||||
if (!unicode) {
|
||||
if (parse_quantifiable_assertion(assertion_stack, match_length_minimum, named)) {
|
||||
if (!parse_quantifier(assertion_stack, match_length_minimum, unicode, named))
|
||||
return false;
|
||||
|
||||
stack.extend(move(assertion_stack));
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue