mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-29 08:11:13 +00:00
LibRegex: Use proper CharRange constructor instead of bit_casting
Otherwise the range order would be inverted.
This commit is contained in:
parent
c774790975
commit
7d01ee63d6
Notes:
sideshowbarker
2024-07-17 09:42:17 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/7d01ee63d6 Pull-request: https://github.com/SerenityOS/serenity/pull/14488
|
@ -922,6 +922,7 @@ TEST_CASE(optimizer_atomic_groups)
|
|||
Tuple { "a+b"sv, "aaaaa"sv, false },
|
||||
Tuple { "\\\\(\\d+)"sv, "\\\\"sv, false }, // Rewrite bug turning a+ to a*, see #10952.
|
||||
Tuple { "[a-z.]+\\."sv, "..."sv, true }, // Rewrite bug, incorrect interpretation of Compare.
|
||||
Tuple { "[.-]+\\."sv, ".-."sv, true },
|
||||
// Alternative fuse
|
||||
Tuple { "(abcfoo|abcbar|abcbaz).*x"sv, "abcbarx"sv, true },
|
||||
Tuple { "(a|a)"sv, "a"sv, true },
|
||||
|
|
|
@ -187,7 +187,7 @@ static bool has_overlap(Vector<CompareTypeAndValuePair> const& lhs, Vector<Compa
|
|||
lhs_negated_char_classes.set(static_cast<CharClass>(pair.value));
|
||||
break;
|
||||
case CharacterCompareType::CharRange: {
|
||||
auto range = bit_cast<CharRange>(pair.value);
|
||||
auto range = CharRange(pair.value);
|
||||
if (!current_lhs_inversion_state())
|
||||
lhs_ranges.insert(range.from, range.to);
|
||||
else
|
||||
|
@ -257,7 +257,7 @@ static bool has_overlap(Vector<CompareTypeAndValuePair> const& lhs, Vector<Compa
|
|||
return true;
|
||||
break;
|
||||
case CharacterCompareType::CharRange: {
|
||||
auto range = bit_cast<CharRange>(pair.value);
|
||||
auto range = CharRange(pair.value);
|
||||
if (!current_lhs_inversion_state() && range_contains(range))
|
||||
return true;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue