From 4162f4517a6eb5da97c0dd844987bf96e9c8370f Mon Sep 17 00:00:00 2001 From: Balaji Krishnan Date: Fri, 11 Sep 2015 09:43:33 -0700 Subject: [PATCH] PR Feedback: Add more test and code formatting Fixed code styles and added one more test. --- .../AddUsingTests_ExtensionMethods.cs | 43 +++++++++++++++++++ .../CSharpSyntaxFactsService.cs | 6 +-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/AddUsing/AddUsingTests_ExtensionMethods.cs b/src/EditorFeatures/CSharpTest/Diagnostics/AddUsing/AddUsingTests_ExtensionMethods.cs index f00514aac1b..b087863115f 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/AddUsing/AddUsingTests_ExtensionMethods.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/AddUsing/AddUsingTests_ExtensionMethods.cs @@ -277,6 +277,49 @@ public T F(T x) { return F(new C())?.F(new C())?.Extn(); } +}"; + Test(initialText, expectedText, isLine: false); + } + + [WorkItem(3818, "https://github.com/dotnet/roslyn/issues/3818")] + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddUsing)] + public void InExtensionMethodUnderMultipleConditionalAccessExpressions2() + { + var initialText = + @" + + +public class C +{ + public T F<T>(T x) + { + return F(new C())?.F(new C())[|.Extn()|]?.F(newC()); + } +} + + +namespace Sample.Extensions +{ + public static class Extensions + { + public static C Extn(this C obj) + { + return obj.F(new C()); + } + } +} + + +"; + + var expectedText = +@"using Sample.Extensions; +public class C +{ + public T F(T x) + { + return F(new C())?.F(new C()).Extn()?.F(newC()); + } }"; Test(initialText, expectedText, isLine: false); } diff --git a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs index 0827fa479ad..0e4465e921e 100644 --- a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs +++ b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs @@ -555,9 +555,9 @@ public void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out in public SyntaxNode GetExpressionOfMemberAccessExpression(SyntaxNode node) { - return node.IsKind(SyntaxKind.MemberBindingExpression) ? - GetExpressionOfConditionalMemberAccessExpression(node.GetParentConditionalAccessExpression()) : - (node as MemberAccessExpressionSyntax)?.Expression; + return node.IsKind(SyntaxKind.MemberBindingExpression) + ? GetExpressionOfConditionalMemberAccessExpression(node.GetParentConditionalAccessExpression()) + : (node as MemberAccessExpressionSyntax)?.Expression; } public SyntaxNode GetExpressionOfConditionalMemberAccessExpression(SyntaxNode node) -- GitLab