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();
}
}
}