提交 5240c078 编写于 作者: C CyrusNajmabadi

Merge pull request #8673 from CyrusNajmabadi/revertAddUsingChange

Revert "Merge pull request #8641 from CyrusNajmabadi/addUsingInteractive"
......@@ -84,15 +84,8 @@ public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context)
if (allSymbolReferences.Count == 0)
{
// No exact matches found. Fall back to fuzzy searching.
// Only bother doing this for host workspaces. We don't want this for
// things like the Interactive workspace as this will cause us to
// create expensive bktrees which we won't even be able to save for
// future use.
if (document.Project.Solution.Workspace.Kind == WorkspaceKind.Host)
{
await FindResults(projectToAssembly, referenceToCompilation, project, allSymbolReferences, finder, exact: false, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
// Nothing found at all. No need to proceed.
if (allSymbolReferences.Count == 0)
......
......@@ -25,7 +25,7 @@ internal partial class SymbolTreeInfo
/// <summary>
/// The spell checker we use for fuzzy match queries.
/// </summary>
private readonly Lazy<SpellChecker> _lazySpellChecker;
private readonly SpellChecker _spellChecker;
private static readonly StringComparer s_caseInsensitiveComparer = CaseInsensitiveComparison.Comparer;
......@@ -45,25 +45,11 @@ internal partial class SymbolTreeInfo
: StringComparer.Ordinal.Compare(s1, s2);
};
private SymbolTreeInfo(VersionStamp version, IReadOnlyList<Node> orderedNodes)
: this(version, orderedNodes, new Lazy<SpellChecker>(() => new SpellChecker(orderedNodes.Select(n => n.Name))))
{
}
private SymbolTreeInfo(VersionStamp version, IReadOnlyList<Node> orderedNodes, SpellChecker spellChecker)
: this(version, orderedNodes, new Lazy<SpellChecker>(() => spellChecker))
{
// Make the lazy 'Created'. This is a no-op since we already have the underlying spell
// checker. This way if we end up wanting to serialize this tree info, we'll also
// serialize the spell checker.
var unused = _lazySpellChecker.Value;
}
private SymbolTreeInfo(VersionStamp version, IReadOnlyList<Node> orderedNodes, Lazy<SpellChecker> lazySpellChecker)
{
_version = version;
_nodes = orderedNodes;
_lazySpellChecker = lazySpellChecker;
_spellChecker = spellChecker;
}
public int Count => _nodes.Count;
......@@ -98,7 +84,7 @@ public Task<IEnumerable<ISymbol>> FindAsync(SearchQuery query, AsyncLazy<IAssemb
/// </summary>
public async Task<IEnumerable<ISymbol>> FuzzyFindAsync(AsyncLazy<IAssemblySymbol> lazyAssembly, string name, CancellationToken cancellationToken)
{
var similarNames = _lazySpellChecker.Value.FindSimilarWords(name);
var similarNames = _spellChecker.FindSimilarWords(name);
var result = new List<ISymbol>();
foreach (var similarName in similarNames)
......@@ -305,7 +291,8 @@ internal static SymbolTreeInfo Create(VersionStamp version, IAssemblySymbol asse
var list = new List<Node>();
GenerateNodes(assembly.GlobalNamespace, list);
return new SymbolTreeInfo(version, SortNodes(list));
var spellChecker = new SpellChecker(list.Select(n => n.Name));
return new SymbolTreeInfo(version, SortNodes(list), spellChecker);
}
private static Node[] SortNodes(List<Node> nodes)
......
......@@ -13,7 +13,7 @@ namespace Microsoft.CodeAnalysis.FindSymbols
internal partial class SymbolTreeInfo : IObjectWritable
{
private const string PrefixMetadataSymbolTreeInfo = "<MetadataSymbolTreeInfoPersistence>_";
private const string SerializationFormat = "10";
private const string SerializationFormat = "9";
private static bool ShouldCreateFromScratch(
Solution solution,
......@@ -123,15 +123,7 @@ public void WriteTo(ObjectWriter writer)
writer.WriteInt32(node.ParentIndex);
}
if (_lazySpellChecker.IsValueCreated)
{
writer.WriteBoolean(true);
_lazySpellChecker.Value.WriteTo(writer);
}
else
{
writer.WriteBoolean(false);
}
_spellChecker.WriteTo(writer);
}
internal static SymbolTreeInfo ReadFrom(ObjectReader reader)
......@@ -149,7 +141,7 @@ internal static SymbolTreeInfo ReadFrom(ObjectReader reader)
var count = reader.ReadInt32();
if (count == 0)
{
return new SymbolTreeInfo(version, ImmutableArray<Node>.Empty);
return new SymbolTreeInfo(version, ImmutableArray<Node>.Empty, SpellChecker.Empty);
}
var nodes = new Node[count];
......@@ -161,10 +153,7 @@ internal static SymbolTreeInfo ReadFrom(ObjectReader reader)
nodes[i] = new Node(name, parentIndex);
}
var hasSpellChecker = reader.ReadBoolean();
return hasSpellChecker
? new SymbolTreeInfo(version, nodes, SpellChecker.ReadFrom(reader))
: new SymbolTreeInfo(version, nodes);
return new SymbolTreeInfo(version, nodes, SpellChecker.ReadFrom(reader));
}
catch (Exception)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册