1 write to FindOptimizations
System.Text.RegularExpressions.Generator (1)
parent\src\System\Text\RegularExpressions\RegexTree.cs (1)
80
FindOptimizations
= RegexFindOptimizations.Create(root, options);
38 references to FindOptimizations
System.Text.RegularExpressions.Generator (38)
RegexGenerator.Emitter.cs (38)
788
else if (rm.Tree.
FindOptimizations
.FindMode is
810
rm.Tree.
FindOptimizations
.FindMode != FindNextStartingPositionMode.NoSearch ||
811
rm.Tree.
FindOptimizations
.MinRequiredLength != 0 ||
812
rm.Tree.
FindOptimizations
.LeadingAnchor != RegexNodeKind.Unknown ||
813
rm.Tree.
FindOptimizations
.TrailingAnchor != RegexNodeKind.Unknown;
863
int minRequiredLength = rm.Tree.
FindOptimizations
.MinRequiredLength;
887
switch (regexTree.
FindOptimizations
.FindMode)
918
Debug.Fail($"Unexpected mode: {regexTree.
FindOptimizations
.FindMode}");
955
switch (regexTree.
FindOptimizations
.FindMode)
961
regexTree.Root.ComputeMaxLength() == regexTree.
FindOptimizations
.MinRequiredLength)
963
int minRequiredLength = regexTree.
FindOptimizations
.MinRequiredLength;
984
if (regexTree.
FindOptimizations
.FindMode == FindNextStartingPositionMode.LeadingAnchor_RightToLeft_Start)
1057
writer.WriteLine($"// The pattern has a trailing end (\\Z) anchor, and any possible match is exactly {regexTree.
FindOptimizations
.MinRequiredLength} characters.");
1058
using (EmitBlock(writer, $"if (pos < inputSpan.Length - {regexTree.
FindOptimizations
.MinRequiredLength + 1})"))
1060
writer.WriteLine($"base.runtextpos = inputSpan.Length - {regexTree.
FindOptimizations
.MinRequiredLength + 1};");
1068
writer.WriteLine($"// The pattern has a trailing end (\\z) anchor, and any possible match is exactly {regexTree.
FindOptimizations
.MinRequiredLength} characters.");
1069
using (EmitBlock(writer, $"if (pos < inputSpan.Length - {regexTree.
FindOptimizations
.MinRequiredLength})"))
1071
writer.WriteLine($"base.runtextpos = inputSpan.Length - {regexTree.
FindOptimizations
.MinRequiredLength};");
1080
switch (regexTree.
FindOptimizations
.LeadingAnchor)
1116
switch (regexTree.
FindOptimizations
.TrailingAnchor)
1118
case RegexNodeKind.End when regexTree.
FindOptimizations
.MaxPossibleLength is int maxLength:
1127
case RegexNodeKind.EndZ when regexTree.
FindOptimizations
.MaxPossibleLength is int maxLength:
1143
RegexFindOptimizations opts = regexTree.
FindOptimizations
;
1150
substring = regexTree.
FindOptimizations
.LeadingPrefix;
1156
substring = regexTree.
FindOptimizations
.LeadingPrefix;
1163
Debug.Assert(!string.IsNullOrEmpty(regexTree.
FindOptimizations
.FixedDistanceLiteral.String));
1164
substring = regexTree.
FindOptimizations
.FixedDistanceLiteral.String;
1165
if (regexTree.
FindOptimizations
.FixedDistanceLiteral is { Distance: > 0 } literal)
1231
RegexFindOptimizations opts = regexTree.
FindOptimizations
;
1262
string prefix = regexTree.
FindOptimizations
.LeadingPrefix;
1278
Debug.Assert(regexTree.
FindOptimizations
.FixedDistanceSets is { Count: > 0 });
1280
List<RegexFindOptimizations.FixedDistanceSet>? sets = regexTree.
FindOptimizations
.FixedDistanceSets;
1466
Debug.Assert(regexTree.
FindOptimizations
.FixedDistanceSets is { Count: > 0 });
1468
RegexFindOptimizations.FixedDistanceSet set = regexTree.
FindOptimizations
.FixedDistanceSets![0];
1500
Debug.Assert(regexTree.
FindOptimizations
.LiteralAfterLoop is not null);
1501
(RegexNode LoopNode, (char Char, string? String, StringComparison StringComparison, char[]? Chars) Literal) target = regexTree.
FindOptimizations
.LiteralAfterLoop.Value;
2860
if (rm.Tree.
FindOptimizations
.FindMode == FindNextStartingPositionMode.LiteralAfterLoop_LeftToRight &&
2861
rm.Tree.
FindOptimizations
.LiteralAfterLoop?.LoopNode == node)