diff --git a/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder.cs b/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder.cs index 52935f47b7..d7ba22f239 100644 --- a/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder.cs +++ b/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder.cs @@ -56,6 +56,7 @@ internal static partial class CompletionListBuilder { WellKnownTags.Warning, CompletionItemKind.Text }, }; + internal const string AwaitCompletionProvider = "Microsoft.CodeAnalysis.CSharp.Completion.Providers.AwaitCompletionProvider"; internal const string ObjectCreationCompletionProvider = "Microsoft.CodeAnalysis.CSharp.Completion.Providers.ObjectCreationCompletionProvider"; internal const string OverrideCompletionProvider = "Microsoft.CodeAnalysis.CSharp.Completion.Providers.OverrideCompletionProvider"; internal const string PartialMethodCompletionProvider = "Microsoft.CodeAnalysis.CSharp.Completion.Providers.PartialMethodCompletionProvider"; diff --git a/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder_Async.cs b/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder_Async.cs index 13d55b2f61..9e6814f7cd 100644 --- a/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder_Async.cs +++ b/src/OmniSharp.Roslyn.CSharp/Services/Completion/CompletionListBuilder_Async.cs @@ -32,8 +32,6 @@ internal static partial class CompletionListBuilder var seenUnimportedCompletions = false; var commitCharacterRuleCache = new Dictionary, IReadOnlyList>(); var commitCharacterRuleBuilder = new HashSet(); - var isOverrideOrPartialCompletion = completions.Items.Length > 0 - && completions.Items[0].GetProviderName() is OverrideCompletionProvider or PartialMethodCompletionProvider; for (int i = 0; i < completions.Items.Length; i++) { @@ -51,23 +49,26 @@ internal static partial class CompletionListBuilder // The completion is somehow expensive. Currently, this one of two categories: import completion, or override/partial // completion. Debug.Assert(completion.GetProviderName() is OverrideCompletionProvider or PartialMethodCompletionProvider - or TypeImportCompletionProvider or ExtensionMethodImportCompletionProvider); + or TypeImportCompletionProvider or ExtensionMethodImportCompletionProvider + or AwaitCompletionProvider); changeSpan = typedSpan; - if (isOverrideOrPartialCompletion) + switch (completion.GetProviderName()) { - // For override and partial completion, we don't want to use the DisplayText as the insert text because they contain - // characters that will affect our ability to asynchronously resolve the change later. - insertText = completion.FilterText; - sortText = GetSortText(completion, labelText, expectingImportedItems); - hasAfterInsertStep = true; - } - else - { - insertText = completion.DisplayText; - sortText = '1' + completion.SortText; - seenUnimportedCompletions = true; + case OverrideCompletionProvider or PartialMethodCompletionProvider or AwaitCompletionProvider: + // For override and partial completion, we don't want to use the DisplayText as the insert text because they contain + // characters that will affect our ability to asynchronously resolve the change later. + insertText = completion.FilterText; + sortText = GetSortText(completion, labelText, expectingImportedItems); + hasAfterInsertStep = true; + break; + + default: // case TypeImportCompletionProvider or ExtensionMethodImportCompletionProvider: + insertText = completion.DisplayText; + sortText = '1' + completion.SortText; + seenUnimportedCompletions = true; + break; } } else