diff --git a/src/EditorFeatures/Test2/InlineParameterNameHints/CSharpInlineParameterNameHintsTests.vb b/src/EditorFeatures/Test2/InlineParameterNameHints/CSharpInlineParameterNameHintsTests.vb index c404befb7d6f31eabc78a70fc154b1753d3e5fe4..6c01fe48ffd5939e91e953a1e1d4cb7ab98e027a 100644 --- a/src/EditorFeatures/Test2/InlineParameterNameHints/CSharpInlineParameterNameHintsTests.vb +++ b/src/EditorFeatures/Test2/InlineParameterNameHints/CSharpInlineParameterNameHintsTests.vb @@ -305,6 +305,30 @@ class Foo { +} + + + + + Await VerifyParamHints(input) + End Function + + + Public Async Function TestIncompleteFunctionCall() As Task + Dim input = + + + +class A +{ + int testMethod(int x, object y) + { + return x; + } + void Main() + { + testMethod({|x:-(int)5.5|},); + } } diff --git a/src/EditorFeatures/Test2/InlineParameterNameHints/VisualBasicInlineParameterNameHintsTests.vb b/src/EditorFeatures/Test2/InlineParameterNameHints/VisualBasicInlineParameterNameHintsTests.vb index 98743b39f41c1f65c08fa4af3db43490d7309d26..3a30e54cdf7fa09d90c5c7e93e03371195f9ec37 100644 --- a/src/EditorFeatures/Test2/InlineParameterNameHints/VisualBasicInlineParameterNameHintsTests.vb +++ b/src/EditorFeatures/Test2/InlineParameterNameHints/VisualBasicInlineParameterNameHintsTests.vb @@ -308,5 +308,27 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.InlineParameterNameHints Await VerifyParamHints(input) End Function + + + Public Async Function TestIncompleteFunctionCall() As Task + Dim input = + + + + Class Foo + Sub Main(args As String()) + TestMethod({|x:5|},) + End Sub + + Sub TestMethod(x As Integer, y As Double) + + End Sub + End Class + + + + + Await VerifyParamHints(input) + End Function End Class End Namespace diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Extensions/ArgumentSyntaxExtensions.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Extensions/ArgumentSyntaxExtensions.cs index 1c0542364973cc94aae2ccaa863533d11ee3c31f..aab5bc9d3b13e385d76c72e61a3ffcdd99d63a88 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Extensions/ArgumentSyntaxExtensions.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Extensions/ArgumentSyntaxExtensions.cs @@ -59,7 +59,14 @@ public static RefKind GetRefKind(this ArgumentSyntax argument) return null; } - var symbol = semanticModel.GetSymbolInfo(invocableExpression, cancellationToken).Symbol; + // Get the symbol as long if it's not null or if there is only one candidate symbol + var symbolInfo = semanticModel.GetSymbolInfo(invocableExpression, cancellationToken); + var symbol = symbolInfo.Symbol; + if (symbol == null && symbolInfo.CandidateSymbols.Length == 1) + { + symbol = symbolInfo.CandidateSymbols[0]; + } + if (symbol == null) { return null; diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ArgumentSyntaxExtensions.vb b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ArgumentSyntaxExtensions.vb index 7bd5243b45d1a6f73874a59643fde5e0a5f582a8..5daa9aa85f97589cfee118e9f4f0300a3428c3c7 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ArgumentSyntaxExtensions.vb +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ArgumentSyntaxExtensions.vb @@ -31,7 +31,14 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions Return Nothing End If - Dim symbol = semanticModel.GetSymbolInfo(argumentList.Parent, cancellationToken).Symbol + ' Get the symbol if it is not Nothing or if there is a singular candidate symbol + Dim symbolInfo = semanticModel.GetSymbolInfo(argumentList.Parent, cancellationToken) + Dim symbol = symbolInfo.Symbol + + If symbol Is Nothing AndAlso symbolInfo.CandidateSymbols.Length = 1 Then + symbol = symbolInfo.CandidateSymbols.Item(0) + End If + If symbol Is Nothing Then Return Nothing End If