diff --git a/src/EditorFeatures/CSharpTest/AddUsing/AddUsingTests.cs b/src/EditorFeatures/CSharpTest/AddUsing/AddUsingTests.cs index 64d1742c455e9c3a22015641b6a89a4ceeda7733..b63f4860b802af95a57017ed5084483694e8e931 100644 --- a/src/EditorFeatures/CSharpTest/AddUsing/AddUsingTests.cs +++ b/src/EditorFeatures/CSharpTest/AddUsing/AddUsingTests.cs @@ -4989,5 +4989,64 @@ public class Awaiter : INotifyCompletion } }"); } + + + [WorkItem(745490, "https://devdiv.visualstudio.com/DevDiv/_workitems/edit/745490")] + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)] + public async Task TestAddUsingForAwaitableReturningExtensionMethod() + { + await TestAsync( +@" +namespace A +{ + using System; + using System.Threading.Tasks; + + class C + { + C Instance { get; } => null; + + async Task M() => await Instance.[|Foo|](); + } +} + +namespace B +{ + using System; + using System.Threading.Tasks; + using A; + + static class Extensions + { + public static Task Foo(this C instance) => null; + } +}", +@" +namespace A +{ + using System; + using System.Threading.Tasks; + using B; + + class C + { + C Instance { get; } => null; + + async Task M() => await Instance.Foo(); + } +} + +namespace B +{ + using System; + using System.Threading.Tasks; + using A; + + static class Extensions + { + public static Task Foo(this C instance) => null; + } +}"); + } } } diff --git a/src/Features/Core/Portable/AddImport/AbstractAddImportFeatureService.cs b/src/Features/Core/Portable/AddImport/AbstractAddImportFeatureService.cs index 3d2729d69896c11b899b30c6ff8e3dc00903c02f..6fd52db3cf97b60fd4ec87cc038c98d432f0c90a 100644 --- a/src/Features/Core/Portable/AddImport/AbstractAddImportFeatureService.cs +++ b/src/Features/Core/Portable/AddImport/AbstractAddImportFeatureService.cs @@ -546,7 +546,7 @@ private ITypeSymbol GetAwaitInfo(SemanticModel semanticModel, ISyntaxFactsServic { var awaitExpression = FirstAwaitExpressionAncestor(syntaxFactsService, node); - var innerExpression = syntaxFactsService.GetExpressionOfAwaitExpression(node); + var innerExpression = syntaxFactsService.GetExpressionOfAwaitExpression(awaitExpression); return semanticModel.GetTypeInfo(innerExpression).Type; }