Skip to content

Commit 83703f6

Browse files
committed
Finished fixing rebase stuff
1 parent 5bab548 commit 83703f6

File tree

5 files changed

+18
-82
lines changed

5 files changed

+18
-82
lines changed
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77

88
namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions.Models;
99

10-
internal sealed class ExtractToNewComponentCodeActionParams
10+
// NOTE: As mentioned before, these have changed in future PRs, where much of the Provider logic was moved to the resolver.
11+
// The last three properties are not used in the current implementation.
12+
internal sealed class ExtractToComponentCodeActionParams
1113
{
1214
[JsonPropertyName("uri")]
1315
public required Uri Uri { get; set; }

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/CodeActions/Razor/ExtractToComponentCodeActionProvider.cs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
using Microsoft.CodeAnalysis.Razor.Workspaces;
2323
using Microsoft.CodeAnalysis.Text;
2424
using Microsoft.VisualStudio.LanguageServer.Protocol;
25-
using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range;
2625

2726
namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions.Razor;
2827

@@ -72,10 +71,7 @@ public Task<ImmutableArray<RazorVSInternalCodeAction>> ProvideAsync(RazorCodeAct
7271

7372
var actionParams = CreateInitialActionParams(context, startElementNode, @namespace);
7473

75-
if (IsMultiPointSelection(context.Request.Range))
76-
{
77-
ProcessMultiPointSelection(startElementNode, endElementNode, actionParams);
78-
}
74+
ProcessSelection(startElementNode, endElementNode, actionParams);
7975

8076
var utilityScanRoot = FindNearestCommonAncestor(startElementNode, endElementNode) ?? startElementNode;
8177
AddComponentDependenciesInRange(utilityScanRoot,
@@ -110,7 +106,7 @@ private static (MarkupElementSyntax? Start, MarkupElementSyntax? End) GetStartAn
110106
return (null, null);
111107
}
112108

113-
var endElementNode = GetEndElementNode(context, syntaxTree, logger);
109+
var endElementNode = GetEndElementNode(context, syntaxTree);
114110

115111
return (startElementNode, endElementNode);
116112
}
@@ -152,9 +148,9 @@ private static bool IsInsideProperHtmlContent(RazorCodeActionContext context, Ma
152148
return endOwner.FirstAncestorOrSelf<MarkupElementSyntax>();
153149
}
154150

155-
private static ExtractToNewComponentCodeActionParams CreateInitialActionParams(RazorCodeActionContext context, MarkupElementSyntax startElementNode, string @namespace)
151+
private static ExtractToComponentCodeActionParams CreateInitialActionParams(RazorCodeActionContext context, MarkupElementSyntax startElementNode, string @namespace)
156152
{
157-
return new ExtractToNewComponentCodeActionParams
153+
return new ExtractToComponentCodeActionParams
158154
{
159155
Uri = context.Request.TextDocument.Uri,
160156
ExtractStart = startElementNode.Span.Start,
@@ -172,7 +168,7 @@ private static ExtractToNewComponentCodeActionParams CreateInitialActionParams(R
172168
/// <param name="startElementNode">The starting element of the selection.</param>
173169
/// <param name="endElementNode">The ending element of the selection, if it exists.</param>
174170
/// <param name="actionParams">The parameters for the extraction action, which will be updated.</param>
175-
private static void ProcessSelection(MarkupElementSyntax startElementNode, MarkupElementSyntax? endElementNode, ExtractToNewComponentCodeActionParams actionParams)
171+
private static void ProcessSelection(MarkupElementSyntax startElementNode, MarkupElementSyntax? endElementNode, ExtractToComponentCodeActionParams actionParams)
176172
{
177173
// If there's no end element, we can't process a multi-point selection
178174
if (endElementNode is null)
@@ -278,7 +274,7 @@ private static (SyntaxNode? Start, SyntaxNode? End) FindContainingSiblingPair(Sy
278274
return null;
279275
}
280276

281-
private static void AddComponentDependenciesInRange(SyntaxNode root, int extractStart, int extractEnd, ExtractToNewComponentCodeActionParams actionParams)
277+
private static void AddComponentDependenciesInRange(SyntaxNode root, int extractStart, int extractEnd, ExtractToComponentCodeActionParams actionParams)
282278
{
283279
var components = new HashSet<string>();
284280
var extractSpan = new TextSpan(extractStart, extractEnd - extractStart);
@@ -312,7 +308,7 @@ private static bool IsMarkupTagHelperElement(SyntaxNode node, TextSpan extractSp
312308
return null;
313309
}
314310

315-
private static void AddDependenciesFromTagHelperInfo(TagHelperInfo tagHelperInfo, HashSet<string> components, ExtractToNewComponentCodeActionParams actionParams)
311+
private static void AddDependenciesFromTagHelperInfo(TagHelperInfo tagHelperInfo, HashSet<string> components, ExtractToComponentCodeActionParams actionParams)
316312
{
317313
foreach (var descriptor in tagHelperInfo.BindingResult.Descriptors)
318314
{
@@ -332,7 +328,7 @@ metadata.Value is not null &&
332328
}
333329
}
334330

335-
private static void GetUsedIdentifiers(SyntaxNode divNode, SyntaxNode documentRoot, ExtractToNewComponentCodeActionParams actionParams)
331+
private static void GetUsedIdentifiers(SyntaxNode divNode, SyntaxNode documentRoot, ExtractToComponentCodeActionParams actionParams)
336332
{
337333
HashSet<string> identifiersInScope = [];
338334
HashSet<string> identifiersInBlock = [];

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/CodeActions/Razor/ExtractToComponentCodeActionResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ internal sealed class ExtractToComponentCodeActionResolver
4545
return null;
4646
}
4747

48-
var actionParams = JsonSerializer.Deserialize<ExtractToNewComponentCodeActionParams>(data.GetRawText());
48+
var actionParams = JsonSerializer.Deserialize<ExtractToComponentCodeActionParams>(data.GetRawText());
4949
if (actionParams is null)
5050
{
5151
return null;

src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTest.NetFx.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,7 +1206,7 @@ private async Task ValidateExtractComponentCodeActionAsync(
12061206
var razorFilePath = "C:/path/test.razor";
12071207
var componentFilePath = "C:/path/Component.razor";
12081208
var codeDocument = CreateCodeDocument(input, filePath: razorFilePath);
1209-
var sourceText = codeDocument.GetSourceText();
1209+
var sourceText = codeDocument.Source.Text;
12101210
var uri = new Uri(razorFilePath);
12111211
var languageServer = await CreateLanguageServerAsync(codeDocument, razorFilePath);
12121212
var documentContext = CreateDocumentContext(uri, codeDocument);
@@ -1244,7 +1244,7 @@ private async Task ValidateExtractComponentCodeActionAsync(
12441244
// Only get changes made in the new component file
12451245
foreach (var change in changes.Where(e => e.TextDocument.Uri.AbsolutePath == componentFilePath))
12461246
{
1247-
edits.AddRange(change.Edits.Select(e => e.ToTextChange(sourceText)));
1247+
edits.AddRange(change.Edits.Select(sourceText.GetTextChange));
12481248
}
12491249

12501250
var actual = sourceText.WithChanges(edits).ToString();
@@ -1441,7 +1441,7 @@ public override bool TryCreate(
14411441
}
14421442

14431443
var projectWorkspaceState = ProjectWorkspaceState.Create(_tagHelperDescriptors.ToImmutableArray());
1444-
var testDocumentSnapshot = TestDocumentSnapshot.Create(FilePath, CodeDocument.GetSourceText().ToString(), CodeAnalysis.VersionStamp.Default, projectWorkspaceState);
1444+
var testDocumentSnapshot = TestDocumentSnapshot.Create(FilePath, CodeDocument.Source.Text.ToString(), CodeAnalysis.VersionStamp.Default, projectWorkspaceState);
14451445
testDocumentSnapshot.With(CodeDocument);
14461446

14471447
context = CreateDocumentContext(new Uri(FilePath), testDocumentSnapshot);

src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionProviderTest.cs

Lines changed: 3 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -118,67 +118,6 @@ public async Task Handle_SinglePointSelection_ReturnsNotEmpty()
118118
Assert.NotEmpty(commandOrCodeActionContainer);
119119
}
120120

121-
[Fact]
122-
public async Task Handle_CodeInsideDiv_ScansCorrect()
123-
{
124-
// Arrange
125-
var documentPath = "c:/Test.cs";
126-
var contents = """
127-
@page "/"
128-
129-
<PageTitle>Home</PageTitle>
130-
131-
<$$div id="codeInside">
132-
@for(int idx = 0; idx < 10; idx++) {
133-
string s = someFunc(idx * myField);
134-
}
135-
</div>
136-
137-
<div id="parent">
138-
<div>
139-
<h1>Div a title</h1>
140-
<p>Div a par</p>
141-
</div>
142-
<div>
143-
<h1>Div b title</h1>
144-
<p>Div b par</p>
145-
</div>
146-
</div>
147-
148-
@code {
149-
public int myField = 7;
150-
151-
public string someFunc(int num) {
152-
return "Hello for number" + num;
153-
}
154-
}
155-
""";
156-
TestFileMarkupParser.GetPosition(contents, out contents, out var cursorPosition);
157-
158-
var request = new VSCodeActionParams()
159-
{
160-
TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) },
161-
Range = new Range(),
162-
Context = new VSInternalCodeActionContext()
163-
};
164-
165-
var location = new SourceLocation(cursorPosition, -1, -1);
166-
var context = CreateRazorCodeActionContext(request, location, documentPath, contents);
167-
168-
var provider = new ExtractToComponentCodeActionProvider(LoggerFactory);
169-
170-
// Act
171-
var commandOrCodeActionContainer = await provider.ProvideAsync(context, default);
172-
173-
// Assert
174-
Assert.NotEmpty(commandOrCodeActionContainer);
175-
var codeAction = Assert.Single(commandOrCodeActionContainer);
176-
var razorCodeActionResolutionParams = ((JsonElement)codeAction.Data!).Deserialize<RazorCodeActionResolutionParams>();
177-
Assert.NotNull(razorCodeActionResolutionParams);
178-
var actionParams = ((JsonElement)razorCodeActionResolutionParams.Data).Deserialize<ExtractToNewComponentCodeActionParams>();
179-
Assert.NotNull(actionParams);
180-
}
181-
182121
[Fact]
183122
public async Task Handle_MultiPointSelection_ReturnsNotEmpty()
184123
{
@@ -215,12 +154,11 @@ public async Task Handle_MultiPointSelection_ReturnsNotEmpty()
215154

216155
var location = new SourceLocation(cursorPosition, -1, -1);
217156
var context = CreateRazorCodeActionContext(request, location, documentPath, contents);
218-
AddMultiPointSelectionToContext(ref context, selectionSpan);
219157

220158
var lineSpan = context.SourceText.GetLinePositionSpan(selectionSpan);
221159
request.Range = VsLspFactory.CreateRange(lineSpan);
222160

223-
var provider = new ExtractToNewComponentCodeActionProvider(LoggerFactory);
161+
var provider = new ExtractToComponentCodeActionProvider(LoggerFactory);
224162

225163
// Act
226164
var commandOrCodeActionContainer = await provider.ProvideAsync(context, default);
@@ -230,7 +168,7 @@ public async Task Handle_MultiPointSelection_ReturnsNotEmpty()
230168
var codeAction = Assert.Single(commandOrCodeActionContainer);
231169
var razorCodeActionResolutionParams = ((JsonElement)codeAction.Data!).Deserialize<RazorCodeActionResolutionParams>();
232170
Assert.NotNull(razorCodeActionResolutionParams);
233-
var actionParams = ((JsonElement)razorCodeActionResolutionParams.Data).Deserialize<ExtractToNewComponentCodeActionParams>();
171+
var actionParams = ((JsonElement)razorCodeActionResolutionParams.Data).Deserialize<ExtractToComponentCodeActionParams>();
234172
Assert.NotNull(actionParams);
235173
}
236174

@@ -287,7 +225,7 @@ namespace MarketApp.Pages.Product.Home
287225
var codeAction = Assert.Single(commandOrCodeActionContainer);
288226
var razorCodeActionResolutionParams = ((JsonElement)codeAction.Data!).Deserialize<RazorCodeActionResolutionParams>();
289227
Assert.NotNull(razorCodeActionResolutionParams);
290-
var actionParams = ((JsonElement)razorCodeActionResolutionParams.Data).Deserialize<ExtractToNewComponentCodeActionParams>();
228+
var actionParams = ((JsonElement)razorCodeActionResolutionParams.Data).Deserialize<ExtractToComponentCodeActionParams>();
291229
Assert.NotNull(actionParams);
292230
Assert.Equal(selectionSpan.Start, actionParams.ExtractStart);
293231
Assert.Equal(selectionSpan.End, actionParams.ExtractEnd);

0 commit comments

Comments
 (0)