You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Improve boundary handling in atomic tests (#118191)
These were set up to require what comes after the boundary to also be disjoint from its predecessor being tested. But that's not necessary; the boundary itself is sufficient to determine atomicity.
caseRegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomicwhensubsequent.M==0&&node.Ch!=subsequent.Ch:
2356
2360
caseRegexNodeKind.Notonelazy or RegexNodeKind.Notoneloop or RegexNodeKind.Notoneloopatomicwhensubsequent.M==0&&node.Ch==subsequent.Ch:
2357
2361
caseRegexNodeKind.Setlazy or RegexNodeKind.Setloop or RegexNodeKind.Setloopatomicwhensubsequent.M==0&&!RegexCharClass.CharInClass(node.Ch,subsequent.Str!):
caseRegexNodeKind.EndZ or RegexNodeKind.Eolwhen!RegexCharClass.CharInClass('\n',node.Str!):
2400
-
returntrue;
2401
-
2402
-
caseRegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomicwhensubsequent.M==0&&!RegexCharClass.CharInClass(subsequent.Ch,node.Str!):
2403
-
caseRegexNodeKind.Setlazy or RegexNodeKind.Setloop or RegexNodeKind.Setloopatomicwhensubsequent.M==0&&!RegexCharClass.MayOverlap(node.Str!,subsequent.Str!):
caseRegexNodeKind.NonBoundarywhennode.M>0&&node.StrisRegexCharClass.NotWordClass or RegexCharClass.NotDigitClass:
2406
2402
caseRegexNodeKind.ECMABoundarywhennode.M>0&&node.StrisRegexCharClass.ECMAWordClass or RegexCharClass.ECMADigitClass:
2407
2403
caseRegexNodeKind.NonECMABoundarywhennode.M>0&&node.StrisRegexCharClass.NotECMAWordClass or RegexCharClass.NotDigitClass:
2404
+
returntrue;
2405
+
2406
+
caseRegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomicwhensubsequent.M==0&&!RegexCharClass.CharInClass(subsequent.Ch,node.Str!):
2407
+
caseRegexNodeKind.Setlazy or RegexNodeKind.Setloop or RegexNodeKind.Setloopatomicwhensubsequent.M==0&&!RegexCharClass.MayOverlap(node.Str!,subsequent.Str!):
2408
2408
// The loop can be made atomic based on this subsequent node, but we'll need to evaluate the next one as well.
caseRegexNodeKind.NonBoundarywhennode.M>0&&(loopStartingSetisRegexCharClass.NotWordClass or RegexCharClass.NotDigitClass)&&(loopEndingSetisRegexCharClass.NotWordClass or RegexCharClass.NotDigitClass):
2453
2449
caseRegexNodeKind.ECMABoundarywhennode.M>0&&(loopStartingSetisRegexCharClass.ECMAWordClass or RegexCharClass.ECMADigitClass)&&(loopEndingSetisRegexCharClass.ECMAWordClass or RegexCharClass.ECMADigitClass):
2454
2450
caseRegexNodeKind.NonECMABoundarywhennode.M>0&&(loopStartingSetisRegexCharClass.NotECMAWordClass or RegexCharClass.NotDigitClass)&&(loopEndingSetisRegexCharClass.NotECMAWordClass or RegexCharClass.NotDigitClass):
2451
+
returntrue;
2452
+
2453
+
caseRegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomicwhensubsequent.M==0&&!CharInStartingOrEndingSet(subsequent.Ch):
2454
+
caseRegexNodeKind.Setlazy or RegexNodeKind.Setloop or RegexNodeKind.Setloopatomicwhensubsequent.M==0&&!MayOverlapStartingOrEndingSet(subsequent.Str!):
2455
2455
// The loop can be made atomic based on this subsequent node, but we'll need to evaluate the next one as well.
0 commit comments