mirror of
https://github.com/icsharpcode/ILSpy.git
synced 2026-10-12 02:15:58 +00:00
AbstractSearchStrategy.IsMatch runs for every metadata row of every loaded module on each keystroke, yet it re-stripped the operator prefix per name and, for fuzzy terms, additionally lowercased both the name and the term - the largest allocation source in interactive search. The terms are invariant for the lifetime of a strategy (each keystroke builds a new request and strategy), so the stripping and lowercasing now happen once in the constructor, and the noncontiguous matcher compares spans with per-char ToLowerInvariant. This switches fuzzy matching from culture-sensitive to invariant lowercasing, which is the appropriate semantic for matching metadata names. The new IsMatchTests pin the +, -, =, ~ operator semantics (including the pre-existing quirk that =Name compares against the backtick- suffixed name of generic types) as observed before the change. Assisted-by: Claude:claude-fable-5:Claude Code