From 67160f62567c006a6abf2f6c42771060a2b1d025 Mon Sep 17 00:00:00 2001 From: Gen Lu Date: Wed, 21 Aug 2019 17:14:13 -0700 Subject: [PATCH] Exclude unchangeable document from change namespace results --- .../CSharpSyncNamespaceTestsBase.cs | 14 ++++- .../SyncNamespaceTests_ChangeNamespace.cs | 56 +++++++++++++++++++ .../AbstractChangeNamespaceService.cs | 4 +- 3 files changed, 71 insertions(+), 3 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/CodeActions/SyncNamespace/CSharpSyncNamespaceTestsBase.cs b/src/EditorFeatures/CSharpTest/CodeActions/SyncNamespace/CSharpSyncNamespaceTestsBase.cs index ce4ead19a80..8742bbc8d61 100644 --- a/src/EditorFeatures/CSharpTest/CodeActions/SyncNamespace/CSharpSyncNamespaceTestsBase.cs +++ b/src/EditorFeatures/CSharpTest/CodeActions/SyncNamespace/CSharpSyncNamespaceTestsBase.cs @@ -169,7 +169,6 @@ protected async Task TestMoveFileToMatchNamespace(string initialMarkup, List(), "File2.cs"); + var code = +$@" + + + +namespace [||]{declaredNamespace} +{{ + class Class1 + {{ + }} + + class Class2 + {{ + }} +}} + +using Foo.Bar.Baz; + +namespace Foo +{{ + class RefClass + {{ + private Class1 c1; + + void M1() + {{ + Bar.Baz.Class2 c2 = null; + }} + }} +}} + +"; + + var expectedSourceOriginal = +@"namespace A.B.C +{ + class Class1 + { + } + + class Class2 + { + } +}"; + await TestChangeNamespaceAsync(code, expectedSourceOriginal); + } + [WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsSyncNamespace)] public async Task ChangeNamespace_WithQualifiedReferencesInOtherDocument() { diff --git a/src/Features/Core/Portable/CodeRefactorings/SyncNamespace/AbstractChangeNamespaceService.cs b/src/Features/Core/Portable/CodeRefactorings/SyncNamespace/AbstractChangeNamespaceService.cs index 599ed808c46..445ab2d3845 100644 --- a/src/Features/Core/Portable/CodeRefactorings/SyncNamespace/AbstractChangeNamespaceService.cs +++ b/src/Features/Core/Portable/CodeRefactorings/SyncNamespace/AbstractChangeNamespaceService.cs @@ -188,7 +188,9 @@ await ChangeNamespaceInSingleDocumentAsync(solutionAfterNamespaceChange, documen ImmutableArray.Create(declaredNamespace, targetNamespace), cancellationToken).ConfigureAwait(false); - return await MergeDiffAsync(solutionAfterFirstMerge, solutionAfterImportsRemoved, cancellationToken).ConfigureAwait(false); + var mergedSolution = await MergeDiffAsync(solutionAfterFirstMerge, solutionAfterImportsRemoved, cancellationToken).ConfigureAwait(false); + + return await mergedSolution.ExcludeDisallowedDocumentTextChangesAsync(solution, cancellationToken).ConfigureAwait(false); } finally { -- GitLab