From bb9f457278115c67b5533195c12a8e34a9db3d0f Mon Sep 17 00:00:00 2001 From: David Poeschl Date: Fri, 12 Apr 2019 10:39:42 -0700 Subject: [PATCH] Improve linked file handling --- .../AbstractSymbolCompletionProvider.cs | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/Features/Core/Portable/Completion/Providers/AbstractSymbolCompletionProvider.cs b/src/Features/Core/Portable/Completion/Providers/AbstractSymbolCompletionProvider.cs index 99074b5f4e3..2ceeb5ab81b 100644 --- a/src/Features/Core/Portable/Completion/Providers/AbstractSymbolCompletionProvider.cs +++ b/src/Features/Core/Portable/Completion/Providers/AbstractSymbolCompletionProvider.cs @@ -163,13 +163,7 @@ private bool ShouldIncludeInTargetTypedCompletionList(ISymbol symbol, ImmutableA symbolGroup.Key.displayText, symbolGroup.Key.suffix, symbolGroup.Key.insertionText, symbolGroup.ToList(), originatingContextMap[symbolGroup.First()], invalidProjectMap, totalProjects, preselect); - if (symbolGroup.Any( - s => ShouldIncludeInTargetTypedCompletionList( - s, inferredTypes, originatingContextMap.First().Value.SemanticModel, - originatingContextMap.First().Value.Position))) - { - item = item.AddTag(WellKnownTags.TargetTypeMatch); - } + item = AddTargetTypeMatchTagIfAppropriate(item, originatingContextMap, inferredTypes, symbolGroup); itemListBuilder.Add(item); } @@ -190,6 +184,26 @@ private bool ShouldIncludeInTargetTypedCompletionList(ISymbol symbol, ImmutableA } } + private CompletionItem AddTargetTypeMatchTagIfAppropriate( + CompletionItem item, + Dictionary originatingContextMap, + ImmutableArray inferredTypes, + IGrouping<(string displayText, string suffix, string insertionText), ISymbol> symbolGroup) + { + foreach (var symbol in symbolGroup) + { + foreach (var syntaxContext in originatingContextMap.Values) + { + if (ShouldIncludeInTargetTypedCompletionList(symbol, inferredTypes, syntaxContext.SemanticModel, syntaxContext.Position)) + { + return item.AddTag(WellKnownTags.TargetTypeMatch); + } + } + } + + return item; + } + /// /// Given a Symbol, creates the completion item for it. /// -- GitLab