From 35889cba81e112b268b38b741820b8c668a76481 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Mon, 3 Jul 2017 11:09:53 -0700 Subject: [PATCH] Add properties to the body node that it needs Removes a usage of TagRenderingContext --- .../CodeGeneration/DefaultDocumentWriter.cs | 6 +----- .../CodeGeneration/TagHelperRenderingContext.cs | 4 ---- .../Extensions/DefaultTagHelperBodyIntermediateNode.cs | 8 ++++++-- .../Extensions/DefaultTagHelperOptimizationPass.cs | 6 +++++- .../Extensions/DefaultTagHelperTargetExtension.cs | 4 ++-- .../Intermediate/TagHelperIntermediateNode.cs | 4 ++-- .../Extensions/DefaultTagHelperTargetExtensionTest.cs | 9 +++++---- 7 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/DefaultDocumentWriter.cs b/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/DefaultDocumentWriter.cs index 45439ccfa6..26daf8ad80 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/DefaultDocumentWriter.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/DefaultDocumentWriter.cs @@ -205,11 +205,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration public override void VisitTagHelper(TagHelperIntermediateNode node) { - var tagHelperRenderingContext = new TagHelperRenderingContext() - { - TagName = node.TagName, - TagMode = node.TagMode - }; + var tagHelperRenderingContext = new TagHelperRenderingContext(); using (Context.Push(tagHelperRenderingContext)) { diff --git a/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/TagHelperRenderingContext.cs b/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/TagHelperRenderingContext.cs index 97e38631ea..a8cbe5c96c 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/TagHelperRenderingContext.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/CodeGeneration/TagHelperRenderingContext.cs @@ -11,10 +11,6 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration private Dictionary _renderedBoundAttributes; private HashSet _verifiedPropertyDictionaries; - public string TagName { get; set; } - - public TagMode TagMode { get; set; } - public Dictionary RenderedBoundAttributes { get diff --git a/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperBodyIntermediateNode.cs b/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperBodyIntermediateNode.cs index a6853823d5..ab035c5aad 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperBodyIntermediateNode.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperBodyIntermediateNode.cs @@ -9,8 +9,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions { public sealed class DefaultTagHelperBodyIntermediateNode : ExtensionIntermediateNode { - public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection(); - public DefaultTagHelperBodyIntermediateNode() { } @@ -35,6 +33,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions } } + public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection(); + + public TagMode TagMode { get; set; } + + public string TagName { get; set; } + public override void Accept(IntermediateNodeVisitor visitor) { if (visitor == null) diff --git a/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperOptimizationPass.cs b/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperOptimizationPass.cs index cf860e18a8..e9be0a4901 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperOptimizationPass.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperOptimizationPass.cs @@ -88,7 +88,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions if (node.Children[i] is TagHelperBodyIntermediateNode bodyNode) { // We only expect one body node. - node.Children[i] = new DefaultTagHelperBodyIntermediateNode(bodyNode); + node.Children[i] = new DefaultTagHelperBodyIntermediateNode(bodyNode) + { + TagMode = node.TagMode, + TagName = node.TagName, + }; break; } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperTargetExtension.cs b/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperTargetExtension.cs index c27d1b8a2c..3af803e4c1 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperTargetExtension.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Extensions/DefaultTagHelperTargetExtension.cs @@ -97,11 +97,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions uniqueId = Guid.NewGuid().ToString("N"); } - context.CodeWriter.WriteStringLiteral(context.TagHelperRenderingContext.TagName) + context.CodeWriter.WriteStringLiteral(node.TagName) .WriteParameterSeparator() .Write(TagModeTypeName) .Write(".") - .Write(context.TagHelperRenderingContext.TagMode.ToString()) + .Write(node.TagMode.ToString()) .WriteParameterSeparator() .WriteStringLiteral(uniqueId) .WriteParameterSeparator(); diff --git a/src/Microsoft.AspNetCore.Razor.Language/Intermediate/TagHelperIntermediateNode.cs b/src/Microsoft.AspNetCore.Razor.Language/Intermediate/TagHelperIntermediateNode.cs index 971cffff12..e547e921b4 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Intermediate/TagHelperIntermediateNode.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Intermediate/TagHelperIntermediateNode.cs @@ -11,10 +11,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate { public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection(); + public TagMode TagMode { get; set; } + public string TagName { get; set; } - public TagMode TagMode { get; set; } - public ICollection TagHelpers { get; } = new List(); public TagHelperBodyIntermediateNode Body => Children.OfType().SingleOrDefault(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/DefaultTagHelperTargetExtensionTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/DefaultTagHelperTargetExtensionTest.cs index 510cdc21f9..7a3647feb2 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/DefaultTagHelperTargetExtensionTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Extensions/DefaultTagHelperTargetExtensionTest.cs @@ -92,10 +92,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions var extension = new DefaultTagHelperTargetExtension(); var context = GetRuntimeCodeRenderingContext(); - context.TagHelperRenderingContext.TagMode = TagMode.SelfClosing; - context.TagHelperRenderingContext.TagName = "p"; - - var node = new DefaultTagHelperBodyIntermediateNode(); + var node = new DefaultTagHelperBodyIntermediateNode() + { + TagMode = TagMode.SelfClosing, + TagName = "p", + }; // Act extension.WriteTagHelperBody(context, node);