Skip to content

Commit 85197f4

Browse files
committed
#4 Fix using replacement
1 parent 2c8f9b4 commit 85197f4

3 files changed

Lines changed: 21 additions & 4 deletions

File tree

System.IO.Abstractions.Analyzers.Tests/TestData/CodeFix/FileServiceConstructorInitialCodeFix/AfterFix.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.IO;
12
using System.IO.Abstractions;
23

34
namespace SomeNameSpace

System.IO.Abstractions.Analyzers/CodeActions/FileServiceConstructorInitialCodeAction.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,27 @@ protected override async Task<Document> GetChangedDocumentAsync(CancellationToke
4848

4949
var compilationUnitSyntax = RoslynClassFileSystem.GetCompilationUnit(_class);
5050

51-
if (compilationUnitSyntax.Usings.Any())
51+
if (!compilationUnitSyntax.Usings.Any())
5252
{
53-
editor.ReplaceNode(RoslynClassFileSystem.GetSystemIoUsing(compilationUnitSyntax),
53+
return editor.GetChangedDocument();
54+
}
55+
56+
var fileSystem = RoslynClassFileSystem.GetUsing(compilationUnitSyntax, Constants.FileSystemNameSpace);
57+
58+
if (fileSystem != default(UsingDirectiveSyntax))
59+
{
60+
return editor.GetChangedDocument();
61+
}
62+
63+
var systemIo = RoslynClassFileSystem.GetSystemIoUsing(compilationUnitSyntax);
64+
65+
if (systemIo == default(UsingDirectiveSyntax))
66+
{
67+
editor.InsertBefore(compilationUnitSyntax.Usings.FirstOrDefault(),
5468
RoslynClassFileSystem.GetFileSystemUsing());
69+
} else
70+
{
71+
editor.InsertAfter(systemIo, RoslynClassFileSystem.GetFileSystemUsing());
5572
}
5673

5774
return editor.GetChangedDocument();

System.IO.Abstractions.Analyzers/CodeActions/FileServiceInterfaceInjectionCodeAction.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ protected override async Task<Document> GetChangedDocumentAsync(CancellationToke
6868
RoslynClassFileSystem.GetFileSystemUsing());
6969
} else
7070
{
71-
editor.InsertAfter(compilationUnitSyntax.Usings.FirstOrDefault(),
72-
RoslynClassFileSystem.GetFileSystemUsing());
71+
editor.InsertAfter(systemIo, RoslynClassFileSystem.GetFileSystemUsing());
7372
}
7473

7574
return editor.GetChangedDocument();

0 commit comments

Comments
 (0)