From 51e8b0266424533cf8390635a4a86eb0d702072f Mon Sep 17 00:00:00 2001 From: Ivan Basov Date: Thu, 3 Jan 2019 14:06:45 -0800 Subject: [PATCH] completion: do not insert extra colon if colon has been typed (#32134) --- .../CSharpCompletionCommandHandlerTests.vb | 23 +++++++++++++++++++ .../NamedParameterCompletionProvider.cs | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/EditorFeatures/Test2/IntelliSense/CSharpCompletionCommandHandlerTests.vb b/src/EditorFeatures/Test2/IntelliSense/CSharpCompletionCommandHandlerTests.vb index 0f74a6eef56..1bd0bf2b83b 100644 --- a/src/EditorFeatures/Test2/IntelliSense/CSharpCompletionCommandHandlerTests.vb +++ b/src/EditorFeatures/Test2/IntelliSense/CSharpCompletionCommandHandlerTests.vb @@ -4180,6 +4180,29 @@ class C End Using End Function + + + + Public Async Function TestNamedParameterDoesNotAddExtraColon(completionImplementation As CompletionImplementation) As Task + Using state = TestStateFactory.CreateCSharpTestState(completionImplementation, + +class C +{ + public double M(double some) => m; + + public void Test() + { + $$ + } +} + ) + + state.SendTypeChars("M(some:M(some:") + Await state.AssertNoCompletionSession() + Assert.Equal(" M(some:M(some:", state.GetLineTextFromCaretPosition()) + End Using + End Function + Private Class MultipleChangeCompletionProvider Inherits CompletionProvider diff --git a/src/Features/CSharp/Portable/Completion/CompletionProviders/NamedParameterCompletionProvider.cs b/src/Features/CSharp/Portable/Completion/CompletionProviders/NamedParameterCompletionProvider.cs index f69fd9b80f0..11aea5eed57 100644 --- a/src/Features/CSharp/Portable/Completion/CompletionProviders/NamedParameterCompletionProvider.cs +++ b/src/Features/CSharp/Portable/Completion/CompletionProviders/NamedParameterCompletionProvider.cs @@ -258,7 +258,8 @@ int IEqualityComparer.GetHashCode(IParameterSymbol obj) selectedItem.Span, // Do not insert colon on so that user can complete out a variable name that does not currently exist. // ch == null is to support the old completion only. - (ch == null || ch == '\t') ? selectedItem.DisplayText : selectedItem.GetEntireDisplayText())); + // Do not insert an extra colon if colon has been explicitly typed. + (ch == null || ch == '\t' || ch == ':') ? selectedItem.DisplayText : selectedItem.GetEntireDisplayText())); } } } -- GitLab