Skip to content

Commit

Permalink
Fix Add Using Added to Wrong Line (#2414)
Browse files Browse the repository at this point in the history
* Fix Add Using Added to Wrong Line

Fixes: https://github.com/dotnet/aspnetcore/issues/25019

* PR Feedback
  • Loading branch information
TanayParikh authored Aug 19, 2020
1 parent 46b4483 commit e353b08
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,9 @@ private static WorkspaceEditDocumentChange GenerateSingleUsingEditsAtTop(
VersionedTextDocumentIdentifier codeDocumentIdentifier,
string newUsingNamespace)
{
var head = new Position(0, 0);

// If we don't have usings, insert after the last namespace or page directive, which ever comes later
var head = new Position(1, 0);
var syntaxTreeRoot = codeDocument.GetSyntaxTree().Root;
var lastNamespaceOrPageDirective = syntaxTreeRoot
.DescendantNodes()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public static Task<RazorLanguageServer> CreateAsync(Stream input, Stream output,
Serializer.Instance.JsonSerializer.Converters.RegisterRazorConverters();

// Custom ClientCapabilities deserializer to extract experimental capabilities
Serializer.Instance.JsonSerializer.Converters.Add(ExtendableClientCapabilitiesJsonConverter.Instance);
// Serializer.Instance.JsonSerializer.Converters.Add(ExtendableClientCapabilitiesJsonConverter.Instance);

ILanguageServer server = null;
server = OmniSharp.Extensions.LanguageServer.Server.LanguageServer.PreInit(options =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ public async Task Handle_AddOneUsingToEmpty()
Assert.True(addUsingsChange.IsTextDocumentEdit);
Assert.Single(addUsingsChange.TextDocumentEdit.Edits);
var firstEdit = addUsingsChange.TextDocumentEdit.Edits.First();
Assert.Equal(1, firstEdit.Range.Start.Line);
Assert.Equal(0, firstEdit.Range.Start.Line);
Assert.Equal($"@using System{Environment.NewLine}", firstEdit.NewText);
}

Expand Down Expand Up @@ -154,6 +154,40 @@ public async Task Handle_AddOneUsingToPage()
Assert.Equal($"@using System{Environment.NewLine}", firstEdit.NewText);
}

[Fact]
public async Task Handle_AddOneUsingToHTML()
{
// Arrange
var documentPath = "c:/Test.razor";
var documentUri = new Uri(documentPath);
var contents = $"<table>{Environment.NewLine}<tr>{Environment.NewLine}</tr>{Environment.NewLine}</table>";
var codeDocument = CreateCodeDocument(contents);

var resolver = new AddUsingsCodeActionResolver(new DefaultForegroundDispatcher(), CreateDocumentResolver(documentPath, codeDocument));
var actionParams = new AddUsingsCodeActionParams
{
Uri = documentUri,
Namespace = "System"
};
var data = JObject.FromObject(actionParams);

// Act
var workspaceEdit = await resolver.ResolveAsync(data, default);

// Assert
Assert.NotNull(workspaceEdit);
Assert.NotNull(workspaceEdit.DocumentChanges);
Assert.Single(workspaceEdit.DocumentChanges);

var documentChanges = workspaceEdit.DocumentChanges.ToArray();
var addUsingsChange = documentChanges[0];
Assert.True(addUsingsChange.IsTextDocumentEdit);
Assert.Single(addUsingsChange.TextDocumentEdit.Edits);
var firstEdit = addUsingsChange.TextDocumentEdit.Edits.First();
Assert.Equal(0, firstEdit.Range.Start.Line);
Assert.Equal($"@using System{Environment.NewLine}", firstEdit.NewText);
}

[Fact]
public async Task Handle_AddOneUsingToNamespace()
{
Expand Down

0 comments on commit e353b08

Please sign in to comment.