Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit36e32a7

Browse files
Fix static extension method not showing up on enum type
1 parent3e26030 commit36e32a7

File tree

4 files changed

+40
-12
lines changed

4 files changed

+40
-12
lines changed

‎src/EditorFeatures/Test2/IntelliSense/CSharpCompletionCommandHandlerTests.vb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12998,6 +12998,31 @@ public class Class1
1299812998
EndUsing
1299912999
EndFunction
1300013000

13001+
<WpfTheory,CombinatorialData>
13002+
PublicAsyncFunctionTestStaticExtensionMethod_OnEnumType(showCompletionInArgumentListsAsBoolean)AsTask
13003+
Usingstate=TestStateFactory.CreateCSharpTestState(
13004+
<Document>
13005+
usingSystem;
13006+
13007+
E.$$
13008+
13009+
enumE;
13010+
13011+
staticclassC
13012+
{
13013+
extension(E)
13014+
{
13015+
publicstaticvoidEM(){}
13016+
}
13017+
}
13018+
</Document>,
13019+
showCompletionInArgumentLists:=showCompletionInArgumentLists,languageVersion:=LanguageVersionExtensions.CSharpNext)
13020+
13021+
state.SendInvokeCompletionList()
13022+
Awaitstate.AssertCompletionItemsContain("EM",displayTextSuffix:="")
13023+
EndUsing
13024+
EndFunction
13025+
1300113026
<WorkItem("https://github.com/dotnet/roslyn/issues/78284")>
1300213027
<WpfTheory,CombinatorialData>
1300313028
PublicAsyncFunctionTestOverrideInstanceAssignmentOperator(showCompletionInArgumentListsAsBoolean)AsTask

‎src/Features/CSharp/Portable/Completion/CompletionProviders/EnumAndCompletionListTagCompletionProvider.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,20 @@
1616
usingMicrosoft.CodeAnalysis.Host.Mef;
1717
usingMicrosoft.CodeAnalysis.LanguageService;
1818
usingMicrosoft.CodeAnalysis.Shared.Extensions;
19+
usingMicrosoft.CodeAnalysis.Shared.Extensions.ContextQuery;
1920
usingMicrosoft.CodeAnalysis.Shared.Utilities;
2021
usingMicrosoft.CodeAnalysis.Tags;
2122
usingMicrosoft.CodeAnalysis.Text;
2223
usingRoslyn.Utilities;
2324

2425
namespaceMicrosoft.CodeAnalysis.CSharp.Completion.Providers;
2526

26-
[ExportCompletionProvider(nameof(EnumAndCompletionListTagCompletionProvider),LanguageNames.CSharp)]
27+
[ExportCompletionProvider(nameof(EnumAndCompletionListTagCompletionProvider),LanguageNames.CSharp),Shared]
2728
[ExtensionOrder(After=nameof(CSharpSuggestionModeCompletionProvider))]
28-
[Shared]
29-
internalsealedpartialclassEnumAndCompletionListTagCompletionProvider:LSPCompletionProvider
29+
[method:ImportingConstructor]
30+
[method:Obsolete(MefConstruction.ImportingConstructorMessage,error:true)]
31+
internalsealedpartialclassEnumAndCompletionListTagCompletionProvider()
32+
:LSPCompletionProvider
3033
{
3134
privatestaticreadonlyCompletionItemRuless_enumTypeRules=
3235
CompletionItemRules.Default.WithCommitCharacterRules([CharacterSetModificationRule.Create(CharacterSetModificationKind.Replace,'.')])
@@ -35,12 +38,6 @@ internal sealed partial class EnumAndCompletionListTagCompletionProvider : LSPCo
3538

3639
privatestaticreadonlyImmutableHashSet<char>s_triggerCharacters=[' ','[','(','~'];
3740

38-
[ImportingConstructor]
39-
[Obsolete(MefConstruction.ImportingConstructorMessage,error:true)]
40-
publicEnumAndCompletionListTagCompletionProvider()
41-
{
42-
}
43-
4441
internaloverridestringLanguage=>LanguageNames.CSharp;
4542

4643
publicoverrideboolIsInsertionTrigger(SourceTexttext,intcharacterPosition,CompletionOptionsoptions)
@@ -105,7 +102,12 @@ public override async Task ProvideCompletionsAsync(CompletionContext context)
105102
}
106103

107104
privatestaticasyncTaskHandleSingleTypeAsync(
108-
CompletionContextcontext,SemanticModelsemanticModel,SyntaxTokentoken,ITypeSymboltype,boolisParams,CancellationTokencancellationToken)
105+
CompletionContextcontext,
106+
SemanticModelsemanticModel,
107+
SyntaxTokentoken,
108+
ITypeSymboltype,
109+
boolisParams,
110+
CancellationTokencancellationToken)
109111
{
110112
if(isParams&&typeisIArrayTypeSymbolarrayType)
111113
type=arrayType.ElementType;

‎src/Features/Core/Portable/Completion/Providers/AbstractSymbolCompletionProvider.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
usingMicrosoft.CodeAnalysis.Internal.Log;
1414
usingMicrosoft.CodeAnalysis.LanguageService;
1515
usingMicrosoft.CodeAnalysis.PooledObjects;
16-
usingMicrosoft.CodeAnalysis.Shared.Collections;
1716
usingMicrosoft.CodeAnalysis.Shared.Extensions;
1817
usingMicrosoft.CodeAnalysis.Shared.Extensions.ContextQuery;
1918
usingMicrosoft.CodeAnalysis.Shared.Utilities;

‎src/Workspaces/Core/Portable/Recommendations/AbstractRecommendationService.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ internal bool ShouldIncludeSymbol(ISymbol symbol)
113113

114114
if(_context.IsEnumTypeMemberAccessContext)
115115
{
116-
returnsymbol.Kind==SymbolKind.Field;
116+
// Within an enum type, we can access fields of the enum, as well as static extensions on that type.
117+
returnsymbol.Kind==SymbolKind.Field||
118+
symbolis{IsStatic:true,ContainingType.IsExtension:true};
117119
}
118120

119121
// In an expression or statement context, we don't want to display instance members declared in outer containing types.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp