From 204780e97ac7f9811550c365488b85d0ba808a9b Mon Sep 17 00:00:00 2001 From: akhera99 Date: Tue, 3 Dec 2024 15:01:59 -0800 Subject: [PATCH] fix --- .../CSharpInlineParameterNameHintsService.cs | 18 +++++-------- ...AbstractInlineParameterNameHintsService.cs | 27 ++++++++++++------- ...ualBasicInlineParameterNameHintsService.vb | 4 +-- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/Features/CSharp/Portable/InlineHints/CSharpInlineParameterNameHintsService.cs b/src/Features/CSharp/Portable/InlineHints/CSharpInlineParameterNameHintsService.cs index a3e711d372eca..945156338c0f1 100644 --- a/src/Features/CSharp/Portable/InlineHints/CSharpInlineParameterNameHintsService.cs +++ b/src/Features/CSharp/Portable/InlineHints/CSharpInlineParameterNameHintsService.cs @@ -31,23 +31,22 @@ protected override void AddAllParameterNameHintLocations( SemanticModel semanticModel, ISyntaxFactsService syntaxFacts, SyntaxNode node, - ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)> buffer, + ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer, CancellationToken cancellationToken) { if (node is BaseArgumentListSyntax argumentList) { - AddArguments(semanticModel, syntaxFacts, buffer, argumentList, cancellationToken); + AddArguments(semanticModel, buffer, argumentList, cancellationToken); } else if (node is AttributeArgumentListSyntax attributeArgumentList) { - AddArguments(semanticModel, syntaxFacts, buffer, attributeArgumentList, cancellationToken); + AddArguments(semanticModel, buffer, attributeArgumentList, cancellationToken); } } private static void AddArguments( SemanticModel semanticModel, - ISyntaxFactsService syntaxFacts, - ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)> buffer, + ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer, AttributeArgumentListSyntax argumentList, CancellationToken cancellationToken) { @@ -57,15 +56,13 @@ private static void AddArguments( continue; var parameter = argument.DetermineParameter(semanticModel, cancellationToken: cancellationToken); - var identifierArgument = GetIdentifierNameFromArgument(argument, syntaxFacts); - buffer.Add((argument.Span.Start, identifierArgument, parameter, GetKind(argument.Expression))); + buffer.Add((argument.Span.Start, argument, parameter, GetKind(argument.Expression))); } } private static void AddArguments( SemanticModel semanticModel, - ISyntaxFactsService syntaxFacts, - ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)> buffer, + ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer, BaseArgumentListSyntax argumentList, CancellationToken cancellationToken) { @@ -75,8 +72,7 @@ private static void AddArguments( continue; var parameter = argument.DetermineParameter(semanticModel, cancellationToken: cancellationToken); - var identifierArgument = GetIdentifierNameFromArgument(argument, syntaxFacts); - buffer.Add((argument.Span.Start, identifierArgument, parameter, GetKind(argument.Expression))); + buffer.Add((argument.Span.Start, argument, parameter, GetKind(argument.Expression))); } } diff --git a/src/Features/Core/Portable/InlineHints/AbstractInlineParameterNameHintsService.cs b/src/Features/Core/Portable/InlineHints/AbstractInlineParameterNameHintsService.cs index 54c75865c2fab..f1e03c625d84e 100644 --- a/src/Features/Core/Portable/InlineHints/AbstractInlineParameterNameHintsService.cs +++ b/src/Features/Core/Portable/InlineHints/AbstractInlineParameterNameHintsService.cs @@ -27,7 +27,7 @@ protected abstract void AddAllParameterNameHintLocations( SemanticModel semanticModel, ISyntaxFactsService syntaxFacts, SyntaxNode node, - ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)> buffer, + ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer, CancellationToken cancellationToken); protected abstract bool IsIndexer(SyntaxNode node, IParameterSymbol parameter); @@ -61,7 +61,7 @@ public async Task> GetInlineHintsAsync( var syntaxFacts = document.GetRequiredLanguageService(); using var _1 = ArrayBuilder.GetInstance(out var result); - using var _2 = ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)>.GetInstance(out var buffer); + using var _2 = ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)>.GetInstance(out var buffer); foreach (var node in root.DescendantNodes(textSpan, n => n.Span.IntersectsWith(textSpan))) { @@ -82,7 +82,7 @@ void AddHintsIfAppropriate(SyntaxNode node) if (suppressForParametersThatDifferOnlyBySuffix && ParametersDifferOnlyBySuffix(buffer)) return; - foreach (var (position, identifierArgument, parameter, kind) in buffer) + foreach (var (position, argument, parameter, kind) in buffer) { if (string.IsNullOrEmpty(parameter?.Name)) continue; @@ -90,7 +90,7 @@ void AddHintsIfAppropriate(SyntaxNode node) if (suppressForParametersThatMatchMethodIntent && MatchesMethodIntent(parameter)) continue; - if (suppressForParametersThatMatchArgumentName && ParameterMatchesArgumentName(identifierArgument, parameter, syntaxFacts)) + if (suppressForParametersThatMatchArgumentName && ParameterMatchesArgumentName(argument, parameter, syntaxFacts)) continue; if (!indexerParameters && IsIndexer(node, parameter)) @@ -119,7 +119,7 @@ [new TaggedText(TextTags.Text, parameter.Name + ": ")], } private static bool ParametersDifferOnlyBySuffix( - ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)> parameterHints) + ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints) { // Only relevant if we have two or more parameters. if (parameterHints.Count <= 1) @@ -129,7 +129,7 @@ private static bool ParametersDifferOnlyBySuffix( ParametersDifferOnlyByNumericSuffix(parameterHints); static bool ParametersDifferOnlyByAlphaSuffix( - ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)> parameterHints) + ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints) { if (!HasAlphaSuffix(parameterHints[0].parameter, out var firstPrefix)) return false; @@ -147,7 +147,7 @@ static bool ParametersDifferOnlyByAlphaSuffix( } static bool ParametersDifferOnlyByNumericSuffix( - ArrayBuilder<(int position, string? identifierArgument, IParameterSymbol? parameter, HintKind kind)> parameterHints) + ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints) { if (!HasNumericSuffix(parameterHints[0].parameter, out var firstPrefix)) return false; @@ -273,8 +273,11 @@ static bool SuffixMatchesParameterName(ReadOnlyMemory suffix, string param } } - private static bool ParameterMatchesArgumentName(string? identifierArgument, IParameterSymbol parameter, ISyntaxFactsService syntaxFacts) - => syntaxFacts.StringComparer.Compare(parameter.Name, identifierArgument) == 0; + private static bool ParameterMatchesArgumentName(SyntaxNode argument, IParameterSymbol parameter, ISyntaxFactsService syntaxFacts) + { + var argumentName = GetIdentifierNameFromArgument(argument, syntaxFacts); + return syntaxFacts.StringComparer.Compare(parameter.Name, argumentName) == 0; + } protected static string GetIdentifierNameFromArgument(SyntaxNode argument, ISyntaxFactsService syntaxFacts) { @@ -282,10 +285,16 @@ protected static string GetIdentifierNameFromArgument(SyntaxNode argument, ISynt syntaxFacts.IsArgument(argument) ? syntaxFacts.GetExpressionOfArgument(argument) : syntaxFacts.IsAttributeArgument(argument) ? syntaxFacts.GetExpressionOfAttributeArgument(argument) : null; + if (syntaxFacts.IsMemberAccessExpression(identifierNameSyntax)) + { + identifierNameSyntax = syntaxFacts.GetNameOfMemberAccessExpression(identifierNameSyntax); + } + if (!syntaxFacts.IsIdentifierName(identifierNameSyntax)) return string.Empty; var identifier = syntaxFacts.GetIdentifierOfIdentifierName(identifierNameSyntax); + return identifier.ValueText; } } diff --git a/src/Features/VisualBasic/Portable/InlineHints/VisualBasicInlineParameterNameHintsService.vb b/src/Features/VisualBasic/Portable/InlineHints/VisualBasicInlineParameterNameHintsService.vb index 76f12f22011ca..0947303ee0d7c 100644 --- a/src/Features/VisualBasic/Portable/InlineHints/VisualBasicInlineParameterNameHintsService.vb +++ b/src/Features/VisualBasic/Portable/InlineHints/VisualBasicInlineParameterNameHintsService.vb @@ -25,7 +25,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.InlineHints semanticModel As SemanticModel, syntaxFacts As ISyntaxFactsService, node As SyntaxNode, - buffer As ArrayBuilder(Of (position As Integer, identifierArgument As String, parameter As IParameterSymbol, kind As HintKind)), + buffer As ArrayBuilder(Of (position As Integer, argument As SyntaxNode, parameter As IParameterSymbol, kind As HintKind)), cancellationToken As CancellationToken) Dim argumentList = TryCast(node, ArgumentListSyntax) @@ -53,7 +53,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.InlineHints End If Dim argumentIdentifier = GetIdentifierNameFromArgument(argument, syntaxFacts) - buffer.Add((argument.Span.Start, argumentIdentifier, parameter, GetKind(argument.Expression))) + buffer.Add((argument.Span.Start, argument, parameter, GetKind(argument.Expression))) Next End Sub