Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions LunrCore/TokenSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ public static TokenSet FromFuzzyString(
idProvider ??= TokenSetIdProvider.Instance;
var root = new TokenSet(idProvider);

var seen = new HashSet<(int nodeId, string frameStr, int editsRemaining)>();

var stack = new Stack<(TokenSet node, int editsRemaining, string str)>();
stack.Push((
node: root,
Expand All @@ -111,6 +113,13 @@ public static TokenSet FromFuzzyString(
{
(TokenSet frameNode, int frameEditsRemaining, string frameStr) = stack.Pop();

// skip if already processed
var stateKey = (frameNode.Id, frameStr, frameEditsRemaining);
if (!seen.Add(stateKey))
{
continue;
}

// no edit
if (frameStr.Length > 0)
{
Expand Down
Loading