diff --git a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs index 35fbc2ca5cfc116dfb891409117557aeb92c369a..f6b2323bd6e79364cc6e607f5a76dcae34a8705c 100644 --- a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs +++ b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs @@ -6948,6 +6948,99 @@ void Shared() VerifyItemInLinkedFiles(markup, "Do", expectedDescription); } + [Fact, Trait(Traits.Feature, Traits.Features.Completion)] + public void MethodOverloadDifferencesIgnored_ExtensionMethod() + { + var markup = @" + + + + + + + +"; + + var expectedDescription = $"(extension) void C.Do(string x)"; + VerifyItemInLinkedFiles(markup, "Do", expectedDescription); + } + + [Fact, Trait(Traits.Feature, Traits.Features.Completion)] + public void MethodOverloadDifferencesIgnored_ContainingType() + { + var markup = @" + + + + + + + +"; + + var expectedDescription = $"void Methods2.Do(string x)"; + VerifyItemInLinkedFiles(markup, "Do", expectedDescription); + } + [Fact, Trait(Traits.Feature, Traits.Features.Completion)] public void ConditionalAccessWalkUp() { diff --git a/src/Features/Core/Completion/Providers/AbstractSymbolCompletionProvider.cs b/src/Features/Core/Completion/Providers/AbstractSymbolCompletionProvider.cs index 0eb17d042ed7180918f149ac84921de5a80c1c66..06f049daebb31203199d358ff2a7ff70fd2f796c 100644 --- a/src/Features/Core/Completion/Providers/AbstractSymbolCompletionProvider.cs +++ b/src/Features/Core/Completion/Providers/AbstractSymbolCompletionProvider.cs @@ -243,7 +243,7 @@ private HashSet UnionSymbols(List new { s.ContainingType, s.Name, s.Kind }).Select(g => g.First())) + foreach (var symbol in linkedContextSymbolList.Item3.GroupBy(s => new { s.Name, s.Kind }).Select(g => g.First())) { if (set.Add(symbol)) { diff --git a/src/Features/Core/Shared/Utilities/LinkedFilesSymbolEquivalenceComparer.cs b/src/Features/Core/Shared/Utilities/LinkedFilesSymbolEquivalenceComparer.cs index fbe5bd75277d29b913c614f56c19b3d724e4ec8a..484d74e3e3a96ac3e614fba03eeb3bfaf238d31f 100644 --- a/src/Features/Core/Shared/Utilities/LinkedFilesSymbolEquivalenceComparer.cs +++ b/src/Features/Core/Shared/Utilities/LinkedFilesSymbolEquivalenceComparer.cs @@ -28,16 +28,12 @@ public LinkedFilesSymbolEquivalenceComparer(SymbolEquivalenceComparer symbolEqui bool IEqualityComparer.Equals(ISymbol x, ISymbol y) { - return x.Kind == y.Kind && (x.IsKind(SymbolKind.Local) || x.IsKind(SymbolKind.Label) || x.IsKind(SymbolKind.RangeVariable)) - ? x.Name == y.Name - : x.Name == y.Name && x.Kind == y.Kind && _symbolEquivalenceComparer.Equals(x.ContainingType, y.ContainingType); + return x.Kind == y.Kind && x.Name == y.Name; } int IEqualityComparer.GetHashCode(ISymbol symbol) { - return symbol.IsKind(SymbolKind.Local) || symbol.IsKind(SymbolKind.Label) || symbol.IsKind(SymbolKind.RangeVariable) - ? symbol.Name.GetHashCode() - : _symbolEquivalenceComparer.GetHashCode(symbol.ContainingType); + return symbol.Name.GetHashCode(); } } }