Skip to content

Commit f20d86f

Browse files
Clean up MethodParameter
- Enable nullability - Add constructors - Make properties read-only
1 parent 477ec6f commit f20d86f

File tree

4 files changed

+16
-30
lines changed

4 files changed

+16
-30
lines changed

src/Compiler/Microsoft.AspNetCore.Razor.Language/test/CodeGeneration/DefaultDocumentWriterTest.cs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -309,21 +309,8 @@ public void WriteDocument_WritesMethod()
309309
Modifiers = ["internal", "virtual", "async"],
310310
MethodName = "TestMethod",
311311
Parameters = [
312-
new MethodParameter()
313-
{
314-
Modifiers =
315-
{
316-
"readonly",
317-
"ref",
318-
},
319-
ParameterName = "a",
320-
TypeName = "int",
321-
},
322-
new MethodParameter()
323-
{
324-
ParameterName = "b",
325-
TypeName = "string",
326-
}
312+
new MethodParameter(modifiers: ["readonly", "ref"], typeName: "int", parameterName: "a"),
313+
new MethodParameter(typeName: "string", parameterName: "b")
327314
],
328315
ReturnType = "string",
329316
});

src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/CodeGeneration/DefaultDocumentWriter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,9 @@ public override void VisitMethodDeclaration(MethodDeclarationIntermediateNode no
174174
codeWriter.Write(", ");
175175
}
176176

177-
for (var j = 0; j < parameter.Modifiers.Count; j++)
177+
foreach (var modifier in parameter.Modifiers)
178178
{
179-
codeWriter.Write($"{parameter.Modifiers[j]} ");
179+
codeWriter.Write($"{modifier} ");
180180
}
181181

182182
codeWriter.Write($"{parameter.TypeName} {parameter.ParameterName}");

src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Components/ComponentDocumentClassifierPass.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,9 @@ protected override void OnDocumentStructureCreated(
141141
method.MethodName = ComponentsApi.ComponentBase.BuildRenderTree;
142142
method.UpdateModifiers("protected", "override");
143143

144-
method.UpdateParameters(new MethodParameter()
145-
{
146-
ParameterName = ComponentsApi.RenderTreeBuilder.BuilderParameter,
147-
TypeName = $"global::{ComponentsApi.RenderTreeBuilder.FullTypeName}",
148-
});
144+
method.UpdateParameters(new MethodParameter(
145+
typeName: $"global::{ComponentsApi.RenderTreeBuilder.FullTypeName}",
146+
parameterName: ComponentsApi.RenderTreeBuilder.BuilderParameter));
149147
}
150148
}
151149

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4-
#nullable disable
5-
6-
using System.Collections.Generic;
4+
using System.Collections.Immutable;
75

86
namespace Microsoft.AspNetCore.Razor.Language.Intermediate;
97

10-
public sealed class MethodParameter
8+
public sealed class MethodParameter(ImmutableArray<string> modifiers, string typeName, string parameterName)
119
{
12-
public IList<string> Modifiers { get; } = new List<string>();
13-
14-
public string TypeName { get; set; }
10+
public ImmutableArray<string> Modifiers { get; } = modifiers.NullToEmpty();
11+
public string TypeName { get; } = typeName;
12+
public string ParameterName { get; } = parameterName;
1513

16-
public string ParameterName { get; set; }
14+
public MethodParameter(string typeName, string parameterName)
15+
: this(modifiers: [], typeName, parameterName)
16+
{
17+
}
1718
}

0 commit comments

Comments
 (0)