Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a961766
Add IR node types for unresolved tag helper elements
chsienki Mar 26, 2026
2ddcd5f
Add shared infrastructure to base LoweringVisitor class
chsienki Mar 26, 2026
d9ca32c
Refactor visitor subclasses to produce unresolved tag helper nodes
chsienki Mar 26, 2026
cb887d3
Add resolution phase skeleton: entry point, tree walking, and element…
chsienki Mar 26, 2026
cfc9961
Implement legacy tag helper construction in resolution phase
chsienki Mar 26, 2026
73c7041
Implement component tag helper construction in resolution phase
chsienki Mar 26, 2026
31d1a11
Implement shared value lowering pipeline in resolution phase
chsienki Mar 26, 2026
c0e2886
Wire up resolution phase and fix downstream consumers
chsienki Mar 26, 2026
c97248b
Update tests and IR baselines for new pipeline
chsienki Mar 26, 2026
4e7d84d
Add source generator regression tests
chsienki Mar 26, 2026
a4d38f2
Address code review feedback
chsienki Mar 31, 2026
85e82bb
Address additional code review feedback (batch 2)
chsienki Mar 31, 2026
515e993
Address code review feedback (batch 3)
chsienki Mar 31, 2026
b7f3e89
Address code review feedback (batch 4)
chsienki Mar 31, 2026
cfa7a66
Address code review feedback (batch 5)
chsienki Apr 1, 2026
a15bd9f
Address code review feedback (batch 6)
chsienki Apr 1, 2026
711771a
Address code review feedback (batch 7)
chsienki Apr 2, 2026
182a23d
Address code review feedback (batch 8)
chsienki Apr 2, 2026
4a7f192
Address code review feedback (batch 9)
chsienki Apr 2, 2026
2f4392a
Merge main into deferred-tag-helper-lowering
chsienki Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class DesignTimeNodeWriterTest : RazorProjectEngineTestBase

protected override void ConfigureCodeDocumentProcessor(RazorCodeDocumentProcessor processor)
{
processor.ExecutePhasesThrough<IRazorIntermediateNodeLoweringPhase>();
processor.ExecutePhasesThrough<DefaultTagHelperResolutionPhase>();
}

[Fact]
Expand Down Expand Up @@ -377,7 +377,7 @@ public void WriteCSharpExpressionAttributeValue_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = (CSharpExpressionAttributeValueIntermediateNode)documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[1];
var node = (CSharpExpressionAttributeValueIntermediateNode)FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[1];

using var context = TestCodeRenderingContext.CreateDesignTime(source: source);

Expand Down Expand Up @@ -409,7 +409,7 @@ public void WriteCSharpCodeAttributeValue_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(sourceDocument);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = (CSharpCodeAttributeValueIntermediateNode)documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[1];
var node = (CSharpCodeAttributeValueIntermediateNode)FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[1];

using var context = TestCodeRenderingContext.CreateDesignTime(source: sourceDocument);

Expand Down Expand Up @@ -441,7 +441,7 @@ public void WriteCSharpCodeAttributeValue_WithExpression_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = (CSharpCodeAttributeValueIntermediateNode)documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[1];
var node = (CSharpCodeAttributeValueIntermediateNode)FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[1];

using var context = TestCodeRenderingContext.CreateDesignTime(source: source);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class RuntimeNodeWriterTest : RazorProjectEngineTestBase

protected override void ConfigureCodeDocumentProcessor(RazorCodeDocumentProcessor processor)
{
processor.ExecutePhasesThrough<IRazorIntermediateNodeLoweringPhase>();
processor.ExecutePhasesThrough<DefaultTagHelperResolutionPhase>();
}

[Fact]
Expand Down Expand Up @@ -479,7 +479,7 @@ public void WriteHtmlAttribute_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single();
var node = FindDescendant<HtmlAttributeIntermediateNode>(documentNode);

using var context = TestCodeRenderingContext.CreateRuntime();

Expand Down Expand Up @@ -508,7 +508,7 @@ public void WriteHtmlAttributeValue_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[0] as HtmlAttributeValueIntermediateNode;
var node = FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[0] as HtmlAttributeValueIntermediateNode;

using var context = TestCodeRenderingContext.CreateRuntime();

Expand All @@ -534,7 +534,7 @@ public void WriteCSharpExpressionAttributeValue_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[1] as CSharpExpressionAttributeValueIntermediateNode;
var node = FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[1] as CSharpExpressionAttributeValueIntermediateNode;

using var context = TestCodeRenderingContext.CreateRuntime();

Expand Down Expand Up @@ -569,7 +569,7 @@ public void WriteCSharpCodeAttributeValue_BuffersResult()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[1] as CSharpCodeAttributeValueIntermediateNode;
var node = FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[1] as CSharpCodeAttributeValueIntermediateNode;

using var context = TestCodeRenderingContext.CreateRuntime(source: source);

Expand Down Expand Up @@ -651,3 +651,4 @@ public override void WriteNode(CodeTarget target, CodeRenderingContext context)
}
}
}

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Linq;
using Microsoft.AspNetCore.Razor.Language.Intermediate;
using Xunit;
Expand All @@ -13,7 +14,7 @@ public class TagHelperHtmlAttributeRuntimeNodeWriterTest : RazorProjectEngineTes

protected override void ConfigureCodeDocumentProcessor(RazorCodeDocumentProcessor processor)
{
processor.ExecutePhasesThrough<IRazorIntermediateNodeLoweringPhase>();
processor.ExecutePhasesThrough<DefaultTagHelperResolutionPhase>();
}

[Fact]
Expand All @@ -26,7 +27,7 @@ public void WriteHtmlAttributeValue_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[0] as HtmlAttributeValueIntermediateNode;
var node = FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[0] as HtmlAttributeValueIntermediateNode;

using var context = TestCodeRenderingContext.CreateRuntime();

Expand All @@ -51,7 +52,7 @@ public void WriteCSharpExpressionAttributeValue_RendersCorrectly()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[1] as CSharpExpressionAttributeValueIntermediateNode;
var node = FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[1] as CSharpExpressionAttributeValueIntermediateNode;

using var context = TestCodeRenderingContext.CreateRuntime();

Expand Down Expand Up @@ -85,7 +86,7 @@ public void WriteCSharpCodeAttributeValue_BuffersResult()
var codeDocument = ProjectEngine.CreateCodeDocument(source);
var processor = CreateCodeDocumentProcessor(codeDocument);
var documentNode = processor.GetDocumentNode();
var node = documentNode.Children.OfType<HtmlAttributeIntermediateNode>().Single().Children[1] as CSharpCodeAttributeValueIntermediateNode;
var node = FindDescendant<HtmlAttributeIntermediateNode>(documentNode).Children[1] as CSharpCodeAttributeValueIntermediateNode;

using var context = TestCodeRenderingContext.CreateRuntime(source: source);

Expand All @@ -112,3 +113,4 @@ public void WriteCSharpCodeAttributeValue_BuffersResult()
ignoreLineEndingDifferences: true);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ protected override void ConfigureProjectEngine(RazorProjectEngineBuilder builder

protected override void ConfigureCodeDocumentProcessor(RazorCodeDocumentProcessor processor)
{
processor.ExecutePhasesThrough<IRazorIntermediateNodeLoweringPhase>();
processor.ExecutePhasesThrough<DefaultTagHelperResolutionPhase>();
}

[Fact]
Expand Down
Loading