diff --git a/src/EditorFeatures/CSharpTest/FullyQualify/FullyQualifyTests.cs b/src/EditorFeatures/CSharpTest/FullyQualify/FullyQualifyTests.cs index 77ad2db0f3e96cb86c8fe5d8e6aac21737059c60..84244687515403f15d9e4f76246cd65f9ac735b0 100644 --- a/src/EditorFeatures/CSharpTest/FullyQualify/FullyQualifyTests.cs +++ b/src/EditorFeatures/CSharpTest/FullyQualify/FullyQualifyTests.cs @@ -805,6 +805,35 @@ class Test }"); } + [WorkItem(26887, "https://github.com/dotnet/roslyn/issues/26887")] + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsFullyQualify)] + public async Task TestFullyQualifyUnboundIdentifier3() + { + await TestInRegularAndScriptAsync( +@"public class Program +{ + public class Inner + { + } +} + +class Test +{ + public [|Inner|] Name +}", +@"public class Program +{ + public class Inner + { + } +} + +class Test +{ + public Program.Inner Name +}"); + } + [WorkItem(538740, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538740")] [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsFullyQualify)] public async Task TestFullyQualifyTypeName_NotForGenericType() diff --git a/src/EditorFeatures/CSharpTest/FullyQualify/FullyQualifyUnboundIdentifierTests.cs b/src/EditorFeatures/CSharpTest/FullyQualify/FullyQualifyUnboundIdentifierTests.cs new file mode 100644 index 0000000000000000000000000000000000000000..5870dab2ee6fe3e5f826e6273de67b52885750ec --- /dev/null +++ b/src/EditorFeatures/CSharpTest/FullyQualify/FullyQualifyUnboundIdentifierTests.cs @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Immutable; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp.CodeFixes.FullyQualify; +using Microsoft.CodeAnalysis.CSharp.Diagnostics; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics; +using Microsoft.CodeAnalysis.Test.Utilities; +using Roslyn.Test.Utilities; +using Xunit; + +namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.FullyQualify +{ + public class FullyQualifyUnboundIdentifierTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest + { + internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace) + => (new CSharpUnboundIdentifiersDiagnosticAnalyzer(), new CSharpFullyQualifyCodeFixProvider()); + + protected override ImmutableArray MassageActions(ImmutableArray actions) + => FlattenActions(actions); + + [WorkItem(26887, "https://github.com/dotnet/roslyn/issues/26887")] + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsFullyQualify)] + public async Task TestFullyQualifyUnboundIdentifier1() + { + await TestInRegularAndScriptAsync( +@"public class Program +{ + public class Inner + { + } +} + +class Test +{ + [|Inner|] +}", +@"public class Program +{ + public class Inner + { + } +} + +class Test +{ + Program.Inner +}"); + } + + [WorkItem(26887, "https://github.com/dotnet/roslyn/issues/26887")] + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsFullyQualify)] + public async Task TestFullyQualifyUnboundIdentifier2() + { + await TestInRegularAndScriptAsync( +@"public class Program +{ + public class Inner + { + } +} + +class Test +{ + public [|Inner|] +}", +@"public class Program +{ + public class Inner + { + } +} + +class Test +{ + public Program.Inner +}"); + } + } +} diff --git a/src/Features/CSharp/Portable/FullyQualify/CSharpFullyQualifyCodeFixProvider.cs b/src/Features/CSharp/Portable/FullyQualify/CSharpFullyQualifyCodeFixProvider.cs index 26eda0a2c0a7e107f51fee05bba9b268a9259695..6982e7a0813a835e06846d955fcf378a2ba1ab1f 100644 --- a/src/Features/CSharp/Portable/FullyQualify/CSharpFullyQualifyCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/FullyQualify/CSharpFullyQualifyCodeFixProvider.cs @@ -8,6 +8,7 @@ using Microsoft.CodeAnalysis.CodeFixes.FullyQualify; using Microsoft.CodeAnalysis.CSharp.Extensions; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.Formatting; namespace Microsoft.CodeAnalysis.CSharp.CodeFixes.FullyQualify @@ -43,7 +44,7 @@ internal class CSharpFullyQualifyCodeFixProvider : AbstractFullyQualifyCodeFixPr public override ImmutableArray FixableDiagnosticIds { - get { return ImmutableArray.Create(CS0103, CS0104, CS0246, CS0305, CS0308); } + get { return ImmutableArray.Create(CS0103, CS0104, CS0246, CS0305, CS0308, IDEDiagnosticIds.UnboundIdentifierId); } } protected override bool IgnoreCase => false;