parent
d2469e078a
commit
21e26ad4aa
|
|
@ -7,21 +7,21 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public class AssemblyAttributeInjectionPass : RazorIRPassBase, IRazorIROptimizationPass
|
||||
public class AssemblyAttributeInjectionPass : IntermediateNodePassBase, IRazorOptimizationPass
|
||||
{
|
||||
private const string RazorViewAttribute = "global::Microsoft.AspNetCore.Mvc.Razor.Compilation.RazorViewAttribute";
|
||||
private const string RazorPageAttribute = "global::Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.RazorPageAttribute";
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var @namespace = irDocument.FindPrimaryNamespace();
|
||||
var @namespace = documentNode.FindPrimaryNamespace();
|
||||
if (@namespace == null || string.IsNullOrEmpty(@namespace.Content))
|
||||
{
|
||||
// No namespace node or it's incomplete. Skip.
|
||||
return;
|
||||
}
|
||||
|
||||
var @class = irDocument.FindPrimaryClass();
|
||||
var @class = documentNode.FindPrimaryClass();
|
||||
if (@class == null || string.IsNullOrEmpty(@class.Name))
|
||||
{
|
||||
// No class node or it's incomplete. Skip.
|
||||
|
|
@ -33,12 +33,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
var escapedPath = EscapeAsVerbatimLiteral(path);
|
||||
|
||||
string attribute;
|
||||
if (irDocument.DocumentKind == MvcViewDocumentClassifierPass.MvcViewDocumentKind)
|
||||
if (documentNode.DocumentKind == MvcViewDocumentClassifierPass.MvcViewDocumentKind)
|
||||
{
|
||||
attribute = $"[assembly:{RazorViewAttribute}({escapedPath}, typeof({generatedTypeName}))]";
|
||||
}
|
||||
else if (irDocument.DocumentKind == RazorPageDocumentClassifierPass.RazorPageDocumentKind &&
|
||||
PageDirective.TryGetPageDirective(irDocument, out var pageDirective))
|
||||
else if (documentNode.DocumentKind == RazorPageDocumentClassifierPass.RazorPageDocumentKind &&
|
||||
PageDirective.TryGetPageDirective(documentNode, out var pageDirective))
|
||||
{
|
||||
var escapedRoutePrefix = EscapeAsVerbatimLiteral(pageDirective.RouteTemplate);
|
||||
attribute = $"[assembly:{RazorPageAttribute}({escapedPath}, typeof({generatedTypeName}), {escapedRoutePrefix})]";
|
||||
|
|
@ -48,18 +48,18 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
return;
|
||||
}
|
||||
|
||||
var index = irDocument.Children.IndexOf(@namespace);
|
||||
var index = documentNode.Children.IndexOf(@namespace);
|
||||
Debug.Assert(index >= 0);
|
||||
|
||||
var pageAttribute = new CSharpCodeIRNode();
|
||||
RazorIRBuilder.Create(pageAttribute)
|
||||
.Add(new RazorIRToken()
|
||||
var pageAttribute = new CSharpCodeIntermediateNode();
|
||||
IntermediateNodeBuilder.Create(pageAttribute)
|
||||
.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = attribute,
|
||||
});
|
||||
|
||||
irDocument.Children.Insert(index, pageAttribute);
|
||||
documentNode.Children.Insert(index, pageAttribute);
|
||||
}
|
||||
|
||||
private static string EscapeAsVerbatimLiteral(string value)
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public interface IInjectDirectiveTargetExtension : ICodeTargetExtension
|
||||
public interface IInjectTargetExtension : ICodeTargetExtension
|
||||
{
|
||||
void WriteInjectProperty(CSharpRenderingContext context, InjectDirectiveIRNode node);
|
||||
void WriteInjectProperty(CSharpRenderingContext context, InjectIntermediateNode node);
|
||||
}
|
||||
}
|
||||
|
|
@ -20,19 +20,20 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
{
|
||||
builder.AddDirective(Directive);
|
||||
builder.Features.Add(new Pass());
|
||||
builder.AddTargetExtension(new InjectTargetExtension());
|
||||
return builder;
|
||||
}
|
||||
|
||||
internal class Pass : RazorIRPassBase, IRazorDirectiveClassifierPass
|
||||
internal class Pass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
|
||||
{
|
||||
// Runs after the @model and @namespace directives
|
||||
public override int Order => 10;
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var visitor = new Visitor();
|
||||
visitor.Visit(irDocument);
|
||||
var modelType = ModelDirective.GetModelType(irDocument);
|
||||
visitor.Visit(documentNode);
|
||||
var modelType = ModelDirective.GetModelType(documentNode);
|
||||
|
||||
var properties = new HashSet<string>(StringComparer.Ordinal);
|
||||
|
||||
|
|
@ -55,7 +56,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
|
||||
typeName = typeName.Replace("<TModel>", "<" + modelType + ">");
|
||||
|
||||
var injectNode = new InjectDirectiveIRNode()
|
||||
var injectNode = new InjectIntermediateNode()
|
||||
{
|
||||
TypeName = typeName,
|
||||
MemberName = memberName,
|
||||
|
|
@ -66,13 +67,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
}
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public ClassDeclarationIRNode Class { get; private set; }
|
||||
public ClassDeclarationIntermediateNode Class { get; private set; }
|
||||
|
||||
public IList<DirectiveIRNode> Directives { get; } = new List<DirectiveIRNode>();
|
||||
public IList<DirectiveIntermediateNode> Directives { get; } = new List<DirectiveIntermediateNode>();
|
||||
|
||||
public override void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public override void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
if (Class == null)
|
||||
{
|
||||
|
|
@ -82,7 +83,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
base.VisitClassDeclaration(node);
|
||||
}
|
||||
|
||||
public override void VisitDirective(DirectiveIRNode node)
|
||||
public override void VisitDirective(DirectiveIntermediateNode node)
|
||||
{
|
||||
if (node.Descriptor == Directive)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8,22 +8,22 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public class InjectDirectiveIRNode : ExtensionIRNode
|
||||
public class InjectIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public string TypeName { get; set; }
|
||||
|
||||
public string MemberName { get; set; }
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<InjectDirectiveIRNode>(this, visitor);
|
||||
AcceptExtensionNode<InjectIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
|
|
@ -38,10 +38,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
throw new ArgumentNullException(nameof(context));
|
||||
}
|
||||
|
||||
var extension = target.GetExtension<IInjectDirectiveTargetExtension>();
|
||||
var extension = target.GetExtension<IInjectTargetExtension>();
|
||||
if (extension == null)
|
||||
{
|
||||
context.ReportMissingExtension<IInjectDirectiveTargetExtension>();
|
||||
context.ReportMissingExtension<IInjectTargetExtension>();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -6,11 +6,11 @@ using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public class InjectDirectiveTargetExtension : IInjectDirectiveTargetExtension
|
||||
public class InjectTargetExtension : IInjectTargetExtension
|
||||
{
|
||||
private const string RazorInjectAttribute = "[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]";
|
||||
|
||||
public void WriteInjectProperty(CSharpRenderingContext context, InjectDirectiveIRNode node)
|
||||
public void WriteInjectProperty(CSharpRenderingContext context, InjectIntermediateNode node)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
|
|
@ -8,14 +8,14 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public class InstrumentationPass : RazorIRPassBase, IRazorIROptimizationPass
|
||||
public class InstrumentationPass : IntermediateNodePassBase, IRazorOptimizationPass
|
||||
{
|
||||
public override int Order => DefaultFeatureOrder;
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var walker = new Visitor();
|
||||
walker.VisitDocument(irDocument);
|
||||
walker.VisitDocument(documentNode);
|
||||
|
||||
for (var i = 0; i < walker.Items.Count; i++)
|
||||
{
|
||||
|
|
@ -30,11 +30,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
var beginContextMethodName = "BeginContext"; /* ORIGINAL: BeginContextMethodName */
|
||||
var endContextMethodName = "EndContext"; /* ORIGINAL: EndContextMethodName */
|
||||
|
||||
var beginNode = new CSharpCodeIRNode();
|
||||
RazorIRBuilder.Create(beginNode)
|
||||
.Add(new RazorIRToken()
|
||||
var beginNode = new CSharpCodeIntermediateNode();
|
||||
IntermediateNodeBuilder.Create(beginNode)
|
||||
.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = string.Format("{0}({1}, {2}, {3});",
|
||||
beginContextMethodName,
|
||||
item.Source.AbsoluteIndex.ToString(CultureInfo.InvariantCulture),
|
||||
|
|
@ -42,11 +42,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
item.IsLiteral ? "true" : "false")
|
||||
});
|
||||
|
||||
var endNode = new CSharpCodeIRNode();
|
||||
RazorIRBuilder.Create(endNode)
|
||||
.Add(new RazorIRToken()
|
||||
var endNode = new CSharpCodeIntermediateNode();
|
||||
IntermediateNodeBuilder.Create(endNode)
|
||||
.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = string.Format("{0}();", endContextMethodName)
|
||||
});
|
||||
|
||||
|
|
@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
|
||||
private struct InstrumentationItem
|
||||
{
|
||||
public InstrumentationItem(RazorIRNode node, RazorIRNode parent, bool isLiteral, SourceSpan source)
|
||||
public InstrumentationItem(IntermediateNode node, IntermediateNode parent, bool isLiteral, SourceSpan source)
|
||||
{
|
||||
Node = node;
|
||||
Parent = parent;
|
||||
|
|
@ -65,20 +65,20 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
Source = source;
|
||||
}
|
||||
|
||||
public RazorIRNode Node { get; }
|
||||
public IntermediateNode Node { get; }
|
||||
|
||||
public RazorIRNode Parent { get; }
|
||||
public IntermediateNode Parent { get; }
|
||||
|
||||
public bool IsLiteral { get; }
|
||||
|
||||
public SourceSpan Source { get; }
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public List<InstrumentationItem> Items { get; } = new List<InstrumentationItem>();
|
||||
|
||||
public override void VisitHtml(HtmlContentIRNode node)
|
||||
public override void VisitHtml(HtmlContentIntermediateNode node)
|
||||
{
|
||||
if (node.Source != null)
|
||||
{
|
||||
|
|
@ -88,7 +88,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public override void VisitCSharpExpression(CSharpExpressionIRNode node)
|
||||
public override void VisitCSharpExpression(CSharpExpressionIntermediateNode node)
|
||||
{
|
||||
if (node.Source != null)
|
||||
{
|
||||
|
|
@ -98,7 +98,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public override void VisitTagHelper(TagHelperIRNode node)
|
||||
public override void VisitTagHelper(TagHelperIntermediateNode node)
|
||||
{
|
||||
if (node.Source != null)
|
||||
{
|
||||
|
|
@ -108,12 +108,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public override void VisitAddTagHelperHtmlAttribute(AddTagHelperHtmlAttributeIRNode node)
|
||||
public override void VisitAddTagHelperHtmlAttribute(AddTagHelperHtmlAttributeIntermediateNode node)
|
||||
{
|
||||
// We don't want to instrument TagHelper attributes. Do nothing.
|
||||
}
|
||||
|
||||
public override void VisitSetTagHelperProperty(SetTagHelperPropertyIRNode node)
|
||||
public override void VisitSetTagHelperProperty(SetTagHelperPropertyIntermediateNode node)
|
||||
{
|
||||
// We don't want to instrument TagHelper attributes. Do nothing.
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
return builder;
|
||||
}
|
||||
|
||||
public static string GetModelType(DocumentIRNode document)
|
||||
public static string GetModelType(DocumentIntermediateNode document)
|
||||
{
|
||||
if (document == null)
|
||||
{
|
||||
|
|
@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
return GetModelType(document, visitor);
|
||||
}
|
||||
|
||||
private static string GetModelType(DocumentIRNode document, Visitor visitor)
|
||||
private static string GetModelType(DocumentIntermediateNode document, Visitor visitor)
|
||||
{
|
||||
visitor.Visit(document);
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
}
|
||||
}
|
||||
|
||||
internal class Pass : RazorIRPassBase, IRazorDirectiveClassifierPass
|
||||
internal class Pass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
|
||||
{
|
||||
private readonly bool _designTime;
|
||||
|
||||
|
|
@ -71,17 +71,17 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
// Runs after the @inherits directive
|
||||
public override int Order => 5;
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var visitor = new Visitor();
|
||||
var modelType = GetModelType(irDocument, visitor);
|
||||
var modelType = GetModelType(documentNode, visitor);
|
||||
|
||||
if (_designTime)
|
||||
{
|
||||
// Alias the TModel token to a known type.
|
||||
// This allows design time compilation to succeed for Razor files where the token isn't replaced.
|
||||
var typeName = $"global::{typeof(object).FullName}";
|
||||
var usingNode = new UsingStatementIRNode()
|
||||
var usingNode = new UsingStatementIntermediateNode()
|
||||
{
|
||||
Content = $"TModel = {typeName}"
|
||||
};
|
||||
|
|
@ -106,17 +106,17 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
}
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public NamespaceDeclarationIRNode Namespace { get; private set; }
|
||||
public NamespaceDeclarationIntermediateNode Namespace { get; private set; }
|
||||
|
||||
public ClassDeclarationIRNode Class { get; private set; }
|
||||
public ClassDeclarationIntermediateNode Class { get; private set; }
|
||||
|
||||
public IList<DirectiveIRNode> InheritsDirectives { get; } = new List<DirectiveIRNode>();
|
||||
public IList<DirectiveIntermediateNode> InheritsDirectives { get; } = new List<DirectiveIntermediateNode>();
|
||||
|
||||
public IList<DirectiveIRNode> ModelDirectives { get; } = new List<DirectiveIRNode>();
|
||||
public IList<DirectiveIntermediateNode> ModelDirectives { get; } = new List<DirectiveIntermediateNode>();
|
||||
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIRNode node)
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIntermediateNode node)
|
||||
{
|
||||
if (Namespace == null)
|
||||
{
|
||||
|
|
@ -126,7 +126,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
base.VisitNamespaceDeclaration(node);
|
||||
}
|
||||
|
||||
public override void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public override void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
if (Class == null)
|
||||
{
|
||||
|
|
@ -136,7 +136,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
base.VisitClassDeclaration(node);
|
||||
}
|
||||
|
||||
public override void VisitDirective(DirectiveIRNode node)
|
||||
public override void VisitDirective(DirectiveIntermediateNode node)
|
||||
{
|
||||
if (node.Descriptor == Directive)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -9,42 +9,42 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public class ModelExpressionPass : RazorIRPassBase, IRazorIROptimizationPass
|
||||
public class ModelExpressionPass : IntermediateNodePassBase, IRazorOptimizationPass
|
||||
{
|
||||
private const string ModelExpressionTypeName = "Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression";
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var visitor = new Visitor();
|
||||
visitor.Visit(irDocument);
|
||||
visitor.Visit(documentNode);
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public List<TagHelperIRNode> TagHelpers { get; } = new List<TagHelperIRNode>();
|
||||
public List<TagHelperIntermediateNode> TagHelpers { get; } = new List<TagHelperIntermediateNode>();
|
||||
|
||||
public override void VisitSetTagHelperProperty(SetTagHelperPropertyIRNode node)
|
||||
public override void VisitSetTagHelperProperty(SetTagHelperPropertyIntermediateNode node)
|
||||
{
|
||||
if (string.Equals(node.Descriptor.TypeName, ModelExpressionTypeName, StringComparison.Ordinal) ||
|
||||
(node.IsIndexerNameMatch &&
|
||||
string.Equals(node.Descriptor.IndexerTypeName, ModelExpressionTypeName, StringComparison.Ordinal)))
|
||||
{
|
||||
var expression = new CSharpExpressionIRNode();
|
||||
var builder = RazorIRBuilder.Create(expression);
|
||||
var expression = new CSharpExpressionIntermediateNode();
|
||||
var builder = IntermediateNodeBuilder.Create(expression);
|
||||
|
||||
builder.Add(new RazorIRToken()
|
||||
builder.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = "ModelExpressionProvider.CreateModelExpression(ViewData, __model => ",
|
||||
});
|
||||
|
||||
if (node.Children.Count == 1 && node.Children[0] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children.Count == 1 && node.Children[0] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
// A 'simple' expression will look like __model => __model.Foo
|
||||
|
||||
builder.Add(new RazorIRToken()
|
||||
builder.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = "__model."
|
||||
});
|
||||
|
||||
|
|
@ -54,11 +54,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
{
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is CSharpExpressionIRNode nestedExpression)
|
||||
if (node.Children[i] is CSharpExpressionIntermediateNode nestedExpression)
|
||||
{
|
||||
for (var j = 0; j < nestedExpression.Children.Count; j++)
|
||||
{
|
||||
if (nestedExpression.Children[j] is RazorIRToken cSharpToken &&
|
||||
if (nestedExpression.Children[j] is IntermediateToken cSharpToken &&
|
||||
cSharpToken.IsCSharp)
|
||||
{
|
||||
builder.Add(cSharpToken);
|
||||
|
|
@ -70,9 +70,9 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
}
|
||||
}
|
||||
|
||||
builder.Add(new RazorIRToken()
|
||||
builder.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = ")",
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
|
||||
protected override string DocumentKind => MvcViewDocumentKind;
|
||||
|
||||
protected override bool IsMatch(RazorCodeDocument codeDocument, DocumentIRNode irDocument) => true;
|
||||
protected override bool IsMatch(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode) => true;
|
||||
|
||||
protected override void OnDocumentStructureCreated(
|
||||
RazorCodeDocument codeDocument,
|
||||
NamespaceDeclarationIRNode @namespace,
|
||||
ClassDeclarationIRNode @class,
|
||||
MethodDeclarationIRNode method)
|
||||
NamespaceDeclarationIntermediateNode @namespace,
|
||||
ClassDeclarationIntermediateNode @class,
|
||||
MethodDeclarationIntermediateNode method)
|
||||
{
|
||||
var filePath = codeDocument.GetRelativePath() ?? codeDocument.Source.FilePath;
|
||||
|
||||
|
|
|
|||
|
|
@ -31,19 +31,19 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
}
|
||||
|
||||
// internal for testing
|
||||
internal class Pass : RazorIRPassBase, IRazorDirectiveClassifierPass
|
||||
internal class Pass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
|
||||
{
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
if (irDocument.DocumentKind != RazorPageDocumentClassifierPass.RazorPageDocumentKind &&
|
||||
irDocument.DocumentKind != MvcViewDocumentClassifierPass.MvcViewDocumentKind)
|
||||
if (documentNode.DocumentKind != RazorPageDocumentClassifierPass.RazorPageDocumentKind &&
|
||||
documentNode.DocumentKind != MvcViewDocumentClassifierPass.MvcViewDocumentKind)
|
||||
{
|
||||
// Not a page. Skip.
|
||||
return;
|
||||
}
|
||||
|
||||
var visitor = new Visitor();
|
||||
visitor.Visit(irDocument);
|
||||
visitor.Visit(documentNode);
|
||||
|
||||
var directive = visitor.LastNamespaceDirective;
|
||||
if (directive == null)
|
||||
|
|
@ -64,11 +64,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
// Beautify the class name since we're using a hierarchy for namespaces.
|
||||
var @class = visitor.FirstClass;
|
||||
var prefix = CSharpIdentifier.SanitizeClassName(Path.GetFileNameWithoutExtension(codeDocument.Source.FilePath));
|
||||
if (@class != null && irDocument.DocumentKind == RazorPageDocumentClassifierPass.RazorPageDocumentKind)
|
||||
if (@class != null && documentNode.DocumentKind == RazorPageDocumentClassifierPass.RazorPageDocumentKind)
|
||||
{
|
||||
@class.Name = prefix + "_Page";
|
||||
}
|
||||
else if (@class != null && irDocument.DocumentKind == MvcViewDocumentClassifierPass.MvcViewDocumentKind)
|
||||
else if (@class != null && documentNode.DocumentKind == MvcViewDocumentClassifierPass.MvcViewDocumentKind)
|
||||
{
|
||||
@class.Name = prefix + "_View";
|
||||
}
|
||||
|
|
@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
//
|
||||
// In the event that these two source either don't have FileNames set or don't follow a coherent hierarchy,
|
||||
// we will just use the namespace verbatim.
|
||||
internal static bool TryComputeNamespace(string source, DirectiveIRNode directive, out string @namespace)
|
||||
internal static bool TryComputeNamespace(string source, DirectiveIntermediateNode directive, out string @namespace)
|
||||
{
|
||||
var directiveSource = NormalizeDirectory(directive.Source?.FilePath);
|
||||
|
||||
|
|
@ -159,16 +159,16 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
return path.Substring(0, lastSeparator + 1);
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public ClassDeclarationIRNode FirstClass { get; private set; }
|
||||
public ClassDeclarationIntermediateNode FirstClass { get; private set; }
|
||||
|
||||
public NamespaceDeclarationIRNode FirstNamespace { get; private set; }
|
||||
public NamespaceDeclarationIntermediateNode FirstNamespace { get; private set; }
|
||||
|
||||
// We want the last one, so get them all and then .
|
||||
public DirectiveIRNode LastNamespaceDirective { get; private set; }
|
||||
public DirectiveIntermediateNode LastNamespaceDirective { get; private set; }
|
||||
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIRNode node)
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIntermediateNode node)
|
||||
{
|
||||
if (FirstNamespace == null)
|
||||
{
|
||||
|
|
@ -178,7 +178,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
base.VisitNamespaceDeclaration(node);
|
||||
}
|
||||
|
||||
public override void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public override void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
if (FirstClass == null)
|
||||
{
|
||||
|
|
@ -188,7 +188,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
base.VisitClassDeclaration(node);
|
||||
}
|
||||
|
||||
public override void VisitDirective(DirectiveIRNode node)
|
||||
public override void VisitDirective(DirectiveIntermediateNode node)
|
||||
{
|
||||
if (node.Descriptor == Directive)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,12 +29,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
return builder;
|
||||
}
|
||||
|
||||
public static bool TryGetPageDirective(DocumentIRNode irDocument, out PageDirective pageDirective)
|
||||
public static bool TryGetPageDirective(DocumentIntermediateNode documentNode, out PageDirective pageDirective)
|
||||
{
|
||||
var visitor = new Visitor();
|
||||
for (var i = 0; i < irDocument.Children.Count; i++)
|
||||
for (var i = 0; i < documentNode.Children.Count; i++)
|
||||
{
|
||||
visitor.Visit(irDocument.Children[i]);
|
||||
visitor.Visit(documentNode.Children[i]);
|
||||
}
|
||||
|
||||
if (visitor.DirectiveNode == null)
|
||||
|
|
@ -63,11 +63,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
return content.Substring(1, content.Length - 2);
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public DirectiveIRNode DirectiveNode { get; private set; }
|
||||
public DirectiveIntermediateNode DirectiveNode { get; private set; }
|
||||
|
||||
public override void VisitDirective(DirectiveIRNode node)
|
||||
public override void VisitDirective(DirectiveIntermediateNode node)
|
||||
{
|
||||
if (node.Descriptor == Directive)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,46 +6,46 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public class PagesPropertyInjectionPass : RazorIRPassBase, IRazorIROptimizationPass
|
||||
public class PagesPropertyInjectionPass : IntermediateNodePassBase, IRazorOptimizationPass
|
||||
{
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
if (irDocument.DocumentKind != RazorPageDocumentClassifierPass.RazorPageDocumentKind)
|
||||
if (documentNode.DocumentKind != RazorPageDocumentClassifierPass.RazorPageDocumentKind)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var modelType = ModelDirective.GetModelType(irDocument);
|
||||
var modelType = ModelDirective.GetModelType(documentNode);
|
||||
var visitor = new Visitor();
|
||||
visitor.Visit(irDocument);
|
||||
visitor.Visit(documentNode);
|
||||
|
||||
var @class = visitor.Class;
|
||||
|
||||
var viewDataType = $"global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<{modelType}>";
|
||||
var vddProperty = new CSharpCodeIRNode();
|
||||
RazorIRBuilder.Create(vddProperty)
|
||||
.Add(new RazorIRToken()
|
||||
var vddProperty = new CSharpCodeIntermediateNode();
|
||||
IntermediateNodeBuilder.Create(vddProperty)
|
||||
.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = $"public {viewDataType} ViewData => ({viewDataType})PageContext?.ViewData;",
|
||||
});
|
||||
@class.Children.Add(vddProperty);
|
||||
|
||||
var modelProperty = new CSharpCodeIRNode();
|
||||
RazorIRBuilder.Create(modelProperty)
|
||||
.Add(new RazorIRToken()
|
||||
var modelProperty = new CSharpCodeIntermediateNode();
|
||||
IntermediateNodeBuilder.Create(modelProperty)
|
||||
.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = $"public {modelType} Model => ViewData.Model;",
|
||||
});
|
||||
@class.Children.Add(modelProperty);
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public ClassDeclarationIRNode Class { get; private set; }
|
||||
public ClassDeclarationIntermediateNode Class { get; private set; }
|
||||
|
||||
public override void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public override void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
if (Class == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
InheritsDirective.Register(builder);
|
||||
SectionDirective.Register(builder);
|
||||
|
||||
builder.AddTargetExtension(new InjectDirectiveTargetExtension());
|
||||
builder.AddTargetExtension(new TemplateTargetExtension()
|
||||
{
|
||||
TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult",
|
||||
|
|
|
|||
|
|
@ -12,16 +12,16 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
|
||||
protected override string DocumentKind => RazorPageDocumentKind;
|
||||
|
||||
protected override bool IsMatch(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override bool IsMatch(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
return PageDirective.TryGetPageDirective(irDocument, out var directive);
|
||||
return PageDirective.TryGetPageDirective(documentNode, out var directive);
|
||||
}
|
||||
|
||||
protected override void OnDocumentStructureCreated(
|
||||
RazorCodeDocument codeDocument,
|
||||
NamespaceDeclarationIRNode @namespace,
|
||||
ClassDeclarationIRNode @class,
|
||||
MethodDeclarationIRNode method)
|
||||
NamespaceDeclarationIntermediateNode @namespace,
|
||||
ClassDeclarationIntermediateNode @class,
|
||||
MethodDeclarationIntermediateNode method)
|
||||
{
|
||||
var filePath = codeDocument.GetRelativePath() ?? codeDocument.Source.FilePath;
|
||||
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ using Microsoft.AspNetCore.Razor.Language.Legacy;
|
|||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||
{
|
||||
public class ViewComponentTagHelperPass : RazorIRPassBase, IRazorIROptimizationPass
|
||||
public class ViewComponentTagHelperPass : IntermediateNodePassBase, IRazorOptimizationPass
|
||||
{
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var visitor = new Visitor();
|
||||
visitor.Visit(irDocument);
|
||||
visitor.Visit(documentNode);
|
||||
|
||||
if (visitor.Class == null || visitor.TagHelpers.Count == 0)
|
||||
{
|
||||
|
|
@ -37,20 +37,20 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
|
||||
foreach (var (parent, node) in visitor.CreateTagHelpers)
|
||||
{
|
||||
RewriteCreateNode(visitor.Namespace, visitor.Class, (CreateTagHelperIRNode)node, parent);
|
||||
RewriteCreateNode(visitor.Namespace, visitor.Class, (CreateTagHelperIntermediateNode)node, parent);
|
||||
}
|
||||
}
|
||||
|
||||
private void GenerateVCTHClass(ClassDeclarationIRNode @class, TagHelperDescriptor tagHelper)
|
||||
private void GenerateVCTHClass(ClassDeclarationIntermediateNode @class, TagHelperDescriptor tagHelper)
|
||||
{
|
||||
var writer = new CSharpCodeWriter();
|
||||
WriteClass(writer, tagHelper);
|
||||
|
||||
var statement = new CSharpCodeIRNode();
|
||||
RazorIRBuilder.Create(statement)
|
||||
.Add(new RazorIRToken()
|
||||
var statement = new CSharpCodeIntermediateNode();
|
||||
IntermediateNodeBuilder.Create(statement)
|
||||
.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = writer.Builder.ToString()
|
||||
});
|
||||
|
||||
|
|
@ -58,15 +58,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
}
|
||||
|
||||
private void RewriteCreateNode(
|
||||
NamespaceDeclarationIRNode @namespace,
|
||||
ClassDeclarationIRNode @class,
|
||||
CreateTagHelperIRNode node,
|
||||
RazorIRNode parent)
|
||||
NamespaceDeclarationIntermediateNode @namespace,
|
||||
ClassDeclarationIntermediateNode @class,
|
||||
CreateTagHelperIntermediateNode node,
|
||||
IntermediateNode parent)
|
||||
{
|
||||
var newTypeName = GetVCTHFullName(@namespace, @class, node.Descriptor);
|
||||
for (var i = 0; i < parent.Children.Count; i++)
|
||||
{
|
||||
if (parent.Children[i] is SetTagHelperPropertyIRNode setProperty &&
|
||||
if (parent.Children[i] is SetTagHelperPropertyIntermediateNode setProperty &&
|
||||
node.Descriptor.BoundAttributes.Contains(setProperty.Descriptor))
|
||||
{
|
||||
setProperty.TagHelperTypeName = newTypeName;
|
||||
|
|
@ -77,8 +77,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
}
|
||||
|
||||
private static string GetVCTHFullName(
|
||||
NamespaceDeclarationIRNode @namespace,
|
||||
ClassDeclarationIRNode @class,
|
||||
NamespaceDeclarationIntermediateNode @namespace,
|
||||
ClassDeclarationIntermediateNode @class,
|
||||
TagHelperDescriptor tagHelper)
|
||||
{
|
||||
var vcName = tagHelper.Metadata[ViewComponentTagHelperDescriptorConventions.ViewComponentNameKey];
|
||||
|
|
@ -220,19 +220,19 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
.WriteLine(")]");
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public ClassDeclarationIRNode Class { get; private set; }
|
||||
public ClassDeclarationIntermediateNode Class { get; private set; }
|
||||
|
||||
public DeclareTagHelperFieldsIRNode Fields { get; private set; }
|
||||
public DeclareTagHelperFieldsIntermediateNode Fields { get; private set; }
|
||||
|
||||
public NamespaceDeclarationIRNode Namespace { get; private set; }
|
||||
public NamespaceDeclarationIntermediateNode Namespace { get; private set; }
|
||||
|
||||
public List<RazorIRNodeReference> CreateTagHelpers { get; } = new List<RazorIRNodeReference>();
|
||||
public List<IntermediateNodeReference> CreateTagHelpers { get; } = new List<IntermediateNodeReference>();
|
||||
|
||||
public Dictionary<string, TagHelperDescriptor> TagHelpers { get; } = new Dictionary<string, TagHelperDescriptor>();
|
||||
|
||||
public override void VisitCreateTagHelper(CreateTagHelperIRNode node)
|
||||
public override void VisitCreateTagHelper(CreateTagHelperIntermediateNode node)
|
||||
{
|
||||
var tagHelper = node.Descriptor;
|
||||
if (ViewComponentTagHelperDescriptorConventions.IsViewComponentDescriptor(tagHelper))
|
||||
|
|
@ -241,11 +241,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
var vcName = tagHelper.Metadata[ViewComponentTagHelperDescriptorConventions.ViewComponentNameKey];
|
||||
TagHelpers[vcName] = tagHelper;
|
||||
|
||||
CreateTagHelpers.Add(new RazorIRNodeReference(Parent, node));
|
||||
CreateTagHelpers.Add(new IntermediateNodeReference(Parent, node));
|
||||
}
|
||||
}
|
||||
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIRNode node)
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIntermediateNode node)
|
||||
{
|
||||
if (Namespace == null)
|
||||
{
|
||||
|
|
@ -255,7 +255,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
base.VisitNamespaceDeclaration(node);
|
||||
}
|
||||
|
||||
public override void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public override void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
if (Class == null)
|
||||
{
|
||||
|
|
@ -265,7 +265,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
|||
base.VisitClassDeclaration(node);
|
||||
}
|
||||
|
||||
public override void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIRNode node)
|
||||
public override void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIntermediateNode node)
|
||||
{
|
||||
if (Fields == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,21 +7,21 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
public abstract class BasicWriter
|
||||
{
|
||||
public abstract void WriteUsingStatement(CSharpRenderingContext context, UsingStatementIRNode node);
|
||||
public abstract void WriteUsingStatement(CSharpRenderingContext context, UsingStatementIntermediateNode node);
|
||||
|
||||
public abstract void WriteCSharpExpression(CSharpRenderingContext context, CSharpExpressionIRNode node);
|
||||
public abstract void WriteCSharpExpression(CSharpRenderingContext context, CSharpExpressionIntermediateNode node);
|
||||
|
||||
public abstract void WriteCSharpCode(CSharpRenderingContext context, CSharpCodeIRNode node);
|
||||
public abstract void WriteCSharpCode(CSharpRenderingContext context, CSharpCodeIntermediateNode node);
|
||||
|
||||
public abstract void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIRNode node);
|
||||
public abstract void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIntermediateNode node);
|
||||
|
||||
public abstract void WriteHtmlAttribute(CSharpRenderingContext context, HtmlAttributeIRNode node);
|
||||
public abstract void WriteHtmlAttribute(CSharpRenderingContext context, HtmlAttributeIntermediateNode node);
|
||||
|
||||
public abstract void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIRNode node);
|
||||
public abstract void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIntermediateNode node);
|
||||
|
||||
public abstract void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIRNode node);
|
||||
public abstract void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIntermediateNode node);
|
||||
|
||||
public abstract void WriteCSharpCodeAttributeValue(CSharpRenderingContext context, CSharpCodeAttributeValueIRNode node);
|
||||
public abstract void WriteCSharpCodeAttributeValue(CSharpRenderingContext context, CSharpCodeAttributeValueIntermediateNode node);
|
||||
|
||||
public abstract void BeginWriterScope(CSharpRenderingContext context, string writer);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,15 +28,15 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
internal TagHelperRenderingContext TagHelperRenderingContext { get; set; }
|
||||
|
||||
internal Action<RazorIRNode> RenderChildren { get; set; }
|
||||
internal Action<IntermediateNode> RenderChildren { get; set; }
|
||||
|
||||
internal Action<RazorIRNode> RenderNode { get; set; }
|
||||
internal Action<IntermediateNode> RenderNode { get; set; }
|
||||
|
||||
public BasicWriter BasicWriter { get; set; }
|
||||
|
||||
public TagHelperWriter TagHelperWriter { get; set; }
|
||||
|
||||
public void AddLineMappingFor(RazorIRNode node)
|
||||
public void AddLineMappingFor(IntermediateNode node)
|
||||
{
|
||||
if (node.Source == null)
|
||||
{
|
||||
|
|
@ -84,7 +84,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
public void ReportMissingExtension<TExtension>() where TExtension : ICodeTargetExtension
|
||||
{
|
||||
var documentKind = CodeDocument.GetIRDocument()?.DocumentKind ?? string.Empty;
|
||||
var documentKind = CodeDocument.GetDocumentIntermediateNode()?.DocumentKind ?? string.Empty;
|
||||
Diagnostics.Add(RazorDiagnosticFactory.CreateCodeTarget_UnsupportedExtension(documentKind, typeof(TExtension)));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
_context = context;
|
||||
}
|
||||
|
||||
public override void WriteDocument(DocumentIRNode node)
|
||||
public override void WriteDocument(DocumentIntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
_context.RenderChildren = null;
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeVisitor
|
||||
private class Visitor : IntermediateNodeVisitor
|
||||
{
|
||||
private readonly CSharpRenderingContext _context;
|
||||
private readonly CodeTarget _target;
|
||||
|
|
@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
private CSharpRenderingContext Context => _context;
|
||||
|
||||
public void RenderChildren(RazorIRNode node)
|
||||
public void RenderChildren(IntermediateNode node)
|
||||
{
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
|
|
@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void VisitDocument(DocumentIRNode node)
|
||||
public override void VisitDocument(DocumentIntermediateNode node)
|
||||
{
|
||||
if (!Context.Options.SuppressChecksum)
|
||||
{
|
||||
|
|
@ -102,12 +102,12 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
RenderChildren(node);
|
||||
}
|
||||
|
||||
public override void VisitUsingStatement(UsingStatementIRNode node)
|
||||
public override void VisitUsingStatement(UsingStatementIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteUsingStatement(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIRNode node)
|
||||
public override void VisitNamespaceDeclaration(NamespaceDeclarationIntermediateNode node)
|
||||
{
|
||||
Context.Writer
|
||||
.Write("namespace ")
|
||||
|
|
@ -120,7 +120,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public override void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
Context.Writer
|
||||
.Write(node.AccessModifier)
|
||||
|
|
@ -163,7 +163,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void VisitMethodDeclaration(MethodDeclarationIRNode node)
|
||||
public override void VisitMethodDeclaration(MethodDeclarationIntermediateNode node)
|
||||
{
|
||||
Context.Writer.WriteLine("#pragma warning disable 1998");
|
||||
|
||||
|
|
@ -199,62 +199,62 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
Context.Writer.WriteLine("#pragma warning restore 1998");
|
||||
}
|
||||
|
||||
public override void VisitFieldDeclaration(FieldDeclarationIRNode node)
|
||||
public override void VisitFieldDeclaration(FieldDeclarationIntermediateNode node)
|
||||
{
|
||||
Context.Writer.WriteField(node.AccessModifier, node.Modifiers, node.Type, node.Name);
|
||||
}
|
||||
|
||||
public override void VisitPropertyDeclaration(PropertyDeclarationIRNode node)
|
||||
public override void VisitPropertyDeclaration(PropertyDeclarationIntermediateNode node)
|
||||
{
|
||||
Context.Writer.WriteAutoPropertyDeclaration(node.AccessModifier, node.Modifiers, node.Type, node.Name);
|
||||
}
|
||||
|
||||
public override void VisitExtension(ExtensionIRNode node)
|
||||
public override void VisitExtension(ExtensionIntermediateNode node)
|
||||
{
|
||||
node.WriteNode(_target, Context);
|
||||
}
|
||||
|
||||
public override void VisitCSharpExpression(CSharpExpressionIRNode node)
|
||||
public override void VisitCSharpExpression(CSharpExpressionIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteCSharpExpression(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitCSharpCode(CSharpCodeIRNode node)
|
||||
public override void VisitCSharpCode(CSharpCodeIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteCSharpCode(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitHtmlAttribute(HtmlAttributeIRNode node)
|
||||
public override void VisitHtmlAttribute(HtmlAttributeIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteHtmlAttribute(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitHtmlAttributeValue(HtmlAttributeValueIRNode node)
|
||||
public override void VisitHtmlAttributeValue(HtmlAttributeValueIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteHtmlAttributeValue(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitCSharpExpressionAttributeValue(CSharpExpressionAttributeValueIRNode node)
|
||||
public override void VisitCSharpExpressionAttributeValue(CSharpExpressionAttributeValueIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteCSharpExpressionAttributeValue(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitCSharpCodeAttributeValue(CSharpCodeAttributeValueIRNode node)
|
||||
public override void VisitCSharpCodeAttributeValue(CSharpCodeAttributeValueIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteCSharpCodeAttributeValue(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitHtml(HtmlContentIRNode node)
|
||||
public override void VisitHtml(HtmlContentIntermediateNode node)
|
||||
{
|
||||
Context.BasicWriter.WriteHtmlContent(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIRNode node)
|
||||
public override void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIntermediateNode node)
|
||||
{
|
||||
Context.TagHelperWriter.WriteDeclareTagHelperFields(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitTagHelper(TagHelperIRNode node)
|
||||
public override void VisitTagHelper(TagHelperIntermediateNode node)
|
||||
{
|
||||
var tagHelperRenderingContext = new TagHelperRenderingContext()
|
||||
{
|
||||
|
|
@ -268,27 +268,27 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void VisitTagHelperBody(TagHelperBodyIRNode node)
|
||||
public override void VisitTagHelperBody(TagHelperBodyIntermediateNode node)
|
||||
{
|
||||
Context.TagHelperWriter.WriteTagHelperBody(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitCreateTagHelper(CreateTagHelperIRNode node)
|
||||
public override void VisitCreateTagHelper(CreateTagHelperIntermediateNode node)
|
||||
{
|
||||
Context.TagHelperWriter.WriteCreateTagHelper(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitAddTagHelperHtmlAttribute(AddTagHelperHtmlAttributeIRNode node)
|
||||
public override void VisitAddTagHelperHtmlAttribute(AddTagHelperHtmlAttributeIntermediateNode node)
|
||||
{
|
||||
Context.TagHelperWriter.WriteAddTagHelperHtmlAttribute(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitSetTagHelperProperty(SetTagHelperPropertyIRNode node)
|
||||
public override void VisitSetTagHelperProperty(SetTagHelperPropertyIntermediateNode node)
|
||||
{
|
||||
Context.TagHelperWriter.WriteSetTagHelperProperty(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitDefault(RazorIRNode node)
|
||||
public override void VisitDefault(IntermediateNode node)
|
||||
{
|
||||
Context.RenderChildren(node);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
public class DesignTimeBasicWriter : BasicWriter
|
||||
{
|
||||
public override void WriteUsingStatement(CSharpRenderingContext context, UsingStatementIRNode node)
|
||||
public override void WriteUsingStatement(CSharpRenderingContext context, UsingStatementIntermediateNode node)
|
||||
{
|
||||
if (node.Source.HasValue)
|
||||
{
|
||||
|
|
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteCSharpExpression(CSharpRenderingContext context, CSharpExpressionIRNode node)
|
||||
public override void WriteCSharpExpression(CSharpRenderingContext context, CSharpExpressionIntermediateNode node)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
|
|
@ -46,13 +46,13 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
using (context.Writer.BuildLinePragma(node.Source.Value))
|
||||
{
|
||||
var offset = RazorDesignTimeIRPass.DesignTimeVariable.Length + " = ".Length;
|
||||
var offset = DesignTimeDirectivePass.DesignTimeVariable.Length + " = ".Length;
|
||||
context.Writer.WritePadding(offset, node.Source, context);
|
||||
context.Writer.WriteStartAssignment(RazorDesignTimeIRPass.DesignTimeVariable);
|
||||
context.Writer.WriteStartAssignment(DesignTimeDirectivePass.DesignTimeVariable);
|
||||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
context.AddLineMappingFor(token);
|
||||
context.Writer.Write(token.Content);
|
||||
|
|
@ -69,10 +69,10 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
else
|
||||
{
|
||||
context.Writer.WriteStartAssignment(RazorDesignTimeIRPass.DesignTimeVariable);
|
||||
context.Writer.WriteStartAssignment(DesignTimeDirectivePass.DesignTimeVariable);
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
context.Writer.Write(token.Content);
|
||||
}
|
||||
|
|
@ -86,12 +86,12 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteCSharpCode(CSharpRenderingContext context, CSharpCodeIRNode node)
|
||||
public override void WriteCSharpCode(CSharpRenderingContext context, CSharpCodeIntermediateNode node)
|
||||
{
|
||||
var isWhitespaceStatement = true;
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
var token = node.Children[i] as RazorIRToken;
|
||||
var token = node.Children[i] as IntermediateToken;
|
||||
if (token == null || !string.IsNullOrWhiteSpace(token.Content))
|
||||
{
|
||||
isWhitespaceStatement = false;
|
||||
|
|
@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
context.AddLineMappingFor(token);
|
||||
context.Writer.Write(token.Content);
|
||||
|
|
@ -139,17 +139,17 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteHtmlAttribute(CSharpRenderingContext context, HtmlAttributeIRNode node)
|
||||
public override void WriteHtmlAttribute(CSharpRenderingContext context, HtmlAttributeIntermediateNode node)
|
||||
{
|
||||
context.RenderChildren(node);
|
||||
}
|
||||
|
||||
public override void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIRNode node)
|
||||
public override void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIntermediateNode node)
|
||||
{
|
||||
context.RenderChildren(node);
|
||||
}
|
||||
|
||||
public override void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIRNode node)
|
||||
public override void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIntermediateNode node)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
|
|
@ -171,13 +171,13 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
using (context.Writer.BuildLinePragma(firstChild.Source.Value))
|
||||
{
|
||||
var offset = RazorDesignTimeIRPass.DesignTimeVariable.Length + " = ".Length;
|
||||
var offset = DesignTimeDirectivePass.DesignTimeVariable.Length + " = ".Length;
|
||||
context.Writer.WritePadding(offset, firstChild.Source, context);
|
||||
context.Writer.WriteStartAssignment(RazorDesignTimeIRPass.DesignTimeVariable);
|
||||
context.Writer.WriteStartAssignment(DesignTimeDirectivePass.DesignTimeVariable);
|
||||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
context.AddLineMappingFor(token);
|
||||
context.Writer.Write(token.Content);
|
||||
|
|
@ -194,10 +194,10 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
else
|
||||
{
|
||||
context.Writer.WriteStartAssignment(RazorDesignTimeIRPass.DesignTimeVariable);
|
||||
context.Writer.WriteStartAssignment(DesignTimeDirectivePass.DesignTimeVariable);
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
if (token.Source != null)
|
||||
{
|
||||
|
|
@ -216,11 +216,11 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteCSharpCodeAttributeValue(CSharpRenderingContext context, CSharpCodeAttributeValueIRNode node)
|
||||
public override void WriteCSharpCodeAttributeValue(CSharpRenderingContext context, CSharpCodeAttributeValueIntermediateNode node)
|
||||
{
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
IDisposable linePragmaScope = null;
|
||||
var isWhitespaceStatement = string.IsNullOrWhiteSpace(token.Content);
|
||||
|
|
@ -260,7 +260,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIRNode node)
|
||||
public override void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIntermediateNode node)
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
private const string DirectiveTokenHelperMethodName = "__RazorDirectiveTokenHelpers__";
|
||||
private const string TypeHelper = "__typeHelper";
|
||||
|
||||
public void WriteDesignTimeDirective(CSharpRenderingContext context, DesignTimeDirectiveIRNode node)
|
||||
public void WriteDesignTimeDirective(CSharpRenderingContext context, DesignTimeDirectiveIntermediateNode node)
|
||||
{
|
||||
context.Writer
|
||||
.WritePragma("warning disable 219")
|
||||
|
|
@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is DirectiveTokenIRNode n)
|
||||
if (node.Children[i] is DirectiveTokenIntermediateNode n)
|
||||
{
|
||||
WriteDesignTimeDirectiveToken(context, n);
|
||||
}
|
||||
|
|
@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
.WritePragma("warning restore 219");
|
||||
}
|
||||
|
||||
private void WriteDesignTimeDirectiveToken(CSharpRenderingContext context, DirectiveTokenIRNode node)
|
||||
private void WriteDesignTimeDirectiveToken(CSharpRenderingContext context, DirectiveTokenIntermediateNode node)
|
||||
{
|
||||
var tokenKind = node.Descriptor.Kind;
|
||||
if (!node.Source.HasValue ||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
public string CreateTagHelperMethodName { get; set; } = "CreateTagHelper";
|
||||
|
||||
public override void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIRNode node)
|
||||
public override void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIntermediateNode node)
|
||||
{
|
||||
foreach (var tagHelperTypeName in node.UsedTagHelperTypeNames)
|
||||
{
|
||||
|
|
@ -28,17 +28,17 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteTagHelper(CSharpRenderingContext context, TagHelperIRNode node)
|
||||
public override void WriteTagHelper(CSharpRenderingContext context, TagHelperIntermediateNode node)
|
||||
{
|
||||
context.RenderChildren(node);
|
||||
}
|
||||
|
||||
public override void WriteTagHelperBody(CSharpRenderingContext context, TagHelperBodyIRNode node)
|
||||
public override void WriteTagHelperBody(CSharpRenderingContext context, TagHelperBodyIntermediateNode node)
|
||||
{
|
||||
context.RenderChildren(node);
|
||||
}
|
||||
|
||||
public override void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIRNode node)
|
||||
public override void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIntermediateNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
|
||||
|
|
@ -50,12 +50,12 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public override void WriteAddTagHelperHtmlAttribute(CSharpRenderingContext context, AddTagHelperHtmlAttributeIRNode node)
|
||||
public override void WriteAddTagHelperHtmlAttribute(CSharpRenderingContext context, AddTagHelperHtmlAttributeIntermediateNode node)
|
||||
{
|
||||
context.RenderChildren(node);
|
||||
}
|
||||
|
||||
public override void WriteSetTagHelperProperty(CSharpRenderingContext context, SetTagHelperPropertyIRNode node)
|
||||
public override void WriteSetTagHelperProperty(CSharpRenderingContext context, SetTagHelperPropertyIntermediateNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
var tagHelperRenderingContext = context.TagHelperRenderingContext;
|
||||
|
|
@ -80,7 +80,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
context.RenderChildren(node);
|
||||
|
||||
context.Writer.WriteStartAssignment(propertyValueAccessor);
|
||||
if (node.Children.Count == 1 && node.Children.First() is HtmlContentIRNode htmlNode)
|
||||
if (node.Children.Count == 1 && node.Children.First() is HtmlContentIntermediateNode htmlNode)
|
||||
{
|
||||
var content = GetContent(htmlNode);
|
||||
context.Writer.WriteStringLiteral(content);
|
||||
|
|
@ -93,7 +93,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
else
|
||||
{
|
||||
var firstMappedChild = node.Children.FirstOrDefault(child => child.Source != null) as RazorIRNode;
|
||||
var firstMappedChild = node.Children.FirstOrDefault(child => child.Source != null) as IntermediateNode;
|
||||
var valueStart = firstMappedChild?.Source;
|
||||
|
||||
using (context.Writer.BuildLinePragma(node.Source.Value))
|
||||
|
|
@ -101,7 +101,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
var assignmentPrefixLength = propertyValueAccessor.Length + " = ".Length;
|
||||
if (node.Descriptor.IsEnum &&
|
||||
node.Children.Count == 1 &&
|
||||
node.Children.First() is RazorIRToken token &&
|
||||
node.Children.First() is IntermediateToken token &&
|
||||
token.IsCSharp)
|
||||
{
|
||||
assignmentPrefixLength += $"global::{node.Descriptor.TypeName}.".Length;
|
||||
|
|
@ -136,7 +136,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
private void RenderTagHelperAttributeInline(
|
||||
CSharpRenderingContext context,
|
||||
SetTagHelperPropertyIRNode property,
|
||||
SetTagHelperPropertyIntermediateNode property,
|
||||
SourceSpan documentLocation)
|
||||
{
|
||||
for (var i = 0; i < property.Children.Count; i++)
|
||||
|
|
@ -147,18 +147,18 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
private void RenderTagHelperAttributeInline(
|
||||
CSharpRenderingContext context,
|
||||
SetTagHelperPropertyIRNode property,
|
||||
RazorIRNode node,
|
||||
SetTagHelperPropertyIntermediateNode property,
|
||||
IntermediateNode node,
|
||||
SourceSpan documentLocation)
|
||||
{
|
||||
if (node is CSharpExpressionIRNode || node is HtmlContentIRNode)
|
||||
if (node is CSharpExpressionIntermediateNode || node is HtmlContentIntermediateNode)
|
||||
{
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
RenderTagHelperAttributeInline(context, property, node.Children[i], documentLocation);
|
||||
}
|
||||
}
|
||||
else if (node is RazorIRToken token)
|
||||
else if (node is IntermediateToken token)
|
||||
{
|
||||
if (node.Source != null)
|
||||
{
|
||||
|
|
@ -167,7 +167,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
context.Writer.Write(token.Content);
|
||||
}
|
||||
else if (node is CSharpCodeIRNode)
|
||||
else if (node is CSharpCodeIntermediateNode)
|
||||
{
|
||||
var error = new RazorError(
|
||||
LegacyResources.TagHelpers_CodeBlocks_NotSupported_InAttributes,
|
||||
|
|
@ -175,7 +175,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
documentLocation.Length);
|
||||
context.Diagnostics.Add(RazorDiagnostic.Create(error));
|
||||
}
|
||||
else if (node is TemplateIRNode)
|
||||
else if (node is TemplateIntermediateNode)
|
||||
{
|
||||
var expectedTypeName = property.IsIndexerNameMatch ? property.Descriptor.IndexerTypeName : property.Descriptor.TypeName;
|
||||
var error = new RazorError(
|
||||
|
|
@ -186,12 +186,12 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
private string GetContent(HtmlContentIRNode node)
|
||||
private string GetContent(HtmlContentIntermediateNode node)
|
||||
{
|
||||
var builder = new StringBuilder();
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsHtml)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsHtml)
|
||||
{
|
||||
builder.Append(token.Content);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
public abstract class DocumentWriter
|
||||
{
|
||||
public abstract void WriteDocument(DocumentIRNode node);
|
||||
public abstract void WriteDocument(DocumentIntermediateNode node);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
internal interface IDesignTimeDirectiveTargetExtension : ICodeTargetExtension
|
||||
{
|
||||
void WriteDesignTimeDirective(CSharpRenderingContext context, DesignTimeDirectiveIRNode node);
|
||||
void WriteDesignTimeDirective(CSharpRenderingContext context, DesignTimeDirectiveIntermediateNode node);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
internal interface IPreallocatedAttributeTargetExtension : ICodeTargetExtension
|
||||
{
|
||||
void WriteDeclarePreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperHtmlAttributeIRNode node);
|
||||
void WriteDeclarePreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperHtmlAttributeIntermediateNode node);
|
||||
|
||||
void WriteAddPreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, AddPreallocatedTagHelperHtmlAttributeIRNode node);
|
||||
void WriteAddPreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, AddPreallocatedTagHelperHtmlAttributeIntermediateNode node);
|
||||
|
||||
void WriteDeclarePreallocatedTagHelperAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperAttributeIRNode node);
|
||||
void WriteDeclarePreallocatedTagHelperAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperAttributeIntermediateNode node);
|
||||
|
||||
void WriteSetPreallocatedTagHelperProperty(CSharpRenderingContext context, SetPreallocatedTagHelperPropertyIRNode node);
|
||||
void WriteSetPreallocatedTagHelperProperty(CSharpRenderingContext context, SetPreallocatedTagHelperPropertyIntermediateNode node);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
public string FormatInvalidIndexerAssignmentMethodName { get; set; } = "InvalidTagHelperIndexerAssignment";
|
||||
|
||||
public void WriteDeclarePreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperHtmlAttributeIRNode node)
|
||||
public void WriteDeclarePreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperHtmlAttributeIntermediateNode node)
|
||||
{
|
||||
context.Writer
|
||||
.Write("private static readonly global::")
|
||||
|
|
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public void WriteAddPreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, AddPreallocatedTagHelperHtmlAttributeIRNode node)
|
||||
public void WriteAddPreallocatedTagHelperHtmlAttribute(CSharpRenderingContext context, AddPreallocatedTagHelperHtmlAttributeIntermediateNode node)
|
||||
{
|
||||
context.Writer
|
||||
.WriteStartInstanceMethodInvocation(ExecutionContextVariableName, ExecutionContextAddHtmlAttributeMethodName)
|
||||
|
|
@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public void WriteDeclarePreallocatedTagHelperAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperAttributeIRNode node)
|
||||
public void WriteDeclarePreallocatedTagHelperAttribute(CSharpRenderingContext context, DeclarePreallocatedTagHelperAttributeIntermediateNode node)
|
||||
{
|
||||
context.Writer
|
||||
.Write("private static readonly global::")
|
||||
|
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public void WriteSetPreallocatedTagHelperProperty(CSharpRenderingContext context, SetPreallocatedTagHelperPropertyIRNode node)
|
||||
public void WriteSetPreallocatedTagHelperProperty(CSharpRenderingContext context, SetPreallocatedTagHelperPropertyIntermediateNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
var propertyName = node.Descriptor.GetPropertyName();
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
public string TemplateTypeName { get; set; } = "Microsoft.AspNetCore.Mvc.Razor.HelperResult";
|
||||
|
||||
public override void WriteUsingStatement(CSharpRenderingContext context, UsingStatementIRNode node)
|
||||
public override void WriteUsingStatement(CSharpRenderingContext context, UsingStatementIntermediateNode node)
|
||||
{
|
||||
if (node.Source.HasValue)
|
||||
{
|
||||
|
|
@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteCSharpExpression(CSharpRenderingContext context, CSharpExpressionIRNode node)
|
||||
public override void WriteCSharpExpression(CSharpRenderingContext context, CSharpExpressionIntermediateNode node)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
|
|
@ -66,7 +66,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
context.Writer.Write(token.Content);
|
||||
}
|
||||
|
|
@ -82,12 +82,12 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
linePragmaScope?.Dispose();
|
||||
}
|
||||
|
||||
public override void WriteCSharpCode(CSharpRenderingContext context, CSharpCodeIRNode node)
|
||||
public override void WriteCSharpCode(CSharpRenderingContext context, CSharpCodeIntermediateNode node)
|
||||
{
|
||||
var isWhitespaceStatement = true;
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
var token = node.Children[i] as RazorIRToken;
|
||||
var token = node.Children[i] as IntermediateToken;
|
||||
if (token == null || !string.IsNullOrWhiteSpace(token.Content))
|
||||
{
|
||||
isWhitespaceStatement = false;
|
||||
|
|
@ -109,7 +109,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
context.Writer.Write(token.Content);
|
||||
}
|
||||
|
|
@ -128,15 +128,15 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
linePragmaScope?.Dispose();
|
||||
}
|
||||
|
||||
public override void WriteHtmlAttribute(CSharpRenderingContext context, HtmlAttributeIRNode node)
|
||||
public override void WriteHtmlAttribute(CSharpRenderingContext context, HtmlAttributeIntermediateNode node)
|
||||
{
|
||||
var valuePieceCount = node
|
||||
.Children
|
||||
.Count(child =>
|
||||
child is HtmlAttributeValueIRNode ||
|
||||
child is CSharpExpressionAttributeValueIRNode ||
|
||||
child is CSharpCodeAttributeValueIRNode ||
|
||||
child is ExtensionIRNode);
|
||||
child is HtmlAttributeValueIntermediateNode ||
|
||||
child is CSharpExpressionAttributeValueIntermediateNode ||
|
||||
child is CSharpCodeAttributeValueIntermediateNode ||
|
||||
child is ExtensionIntermediateNode);
|
||||
|
||||
var prefixLocation = node.Source.Value.AbsoluteIndex;
|
||||
var suffixLocation = node.Source.Value.AbsoluteIndex + node.Source.Value.Length - node.Suffix.Length;
|
||||
|
|
@ -162,7 +162,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public override void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIRNode node)
|
||||
public override void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIntermediateNode node)
|
||||
{
|
||||
var prefixLocation = node.Source.Value.AbsoluteIndex;
|
||||
var valueLocation = node.Source.Value.AbsoluteIndex + node.Prefix.Length;
|
||||
|
|
@ -177,7 +177,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
// Write content
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsHtml)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsHtml)
|
||||
{
|
||||
context.Writer.WriteStringLiteral(token.Content);
|
||||
}
|
||||
|
|
@ -198,7 +198,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public override void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIRNode node)
|
||||
public override void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIntermediateNode node)
|
||||
{
|
||||
using (context.Writer.BuildLinePragma(node.Source.Value))
|
||||
{
|
||||
|
|
@ -212,7 +212,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
context.Writer.Write(token.Content);
|
||||
}
|
||||
|
|
@ -236,7 +236,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteCSharpCodeAttributeValue(CSharpRenderingContext context, CSharpCodeAttributeValueIRNode node)
|
||||
public override void WriteCSharpCodeAttributeValue(CSharpRenderingContext context, CSharpCodeAttributeValueIntermediateNode node)
|
||||
{
|
||||
const string ValueWriterName = "__razor_attribute_value_writer";
|
||||
|
||||
|
|
@ -258,7 +258,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsCSharp)
|
||||
{
|
||||
var isWhitespaceStatement = string.IsNullOrWhiteSpace(token.Content);
|
||||
IDisposable linePragmaScope = null;
|
||||
|
|
@ -310,14 +310,14 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public override void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIRNode node)
|
||||
public override void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIntermediateNode node)
|
||||
{
|
||||
const int MaxStringLiteralLength = 1024;
|
||||
|
||||
var builder = new StringBuilder();
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
if (node.Children[i] is RazorIRToken token && token.IsHtml)
|
||||
if (node.Children[i] is IntermediateToken token && token.IsHtml)
|
||||
{
|
||||
builder.Append(token.Content);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
public string FormatInvalidIndexerAssignmentMethodName { get; set; } = "InvalidTagHelperIndexerAssignment";
|
||||
|
||||
public override void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIRNode node)
|
||||
public override void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIntermediateNode node)
|
||||
{
|
||||
context.Writer.WriteLineHiddenDirective();
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteTagHelper(CSharpRenderingContext context, TagHelperIRNode node)
|
||||
public override void WriteTagHelper(CSharpRenderingContext context, TagHelperIntermediateNode node)
|
||||
{
|
||||
context.RenderChildren(node);
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
ScopeManagerEndMethodName);
|
||||
}
|
||||
|
||||
public override void WriteTagHelperBody(CSharpRenderingContext context, TagHelperBodyIRNode node)
|
||||
public override void WriteTagHelperBody(CSharpRenderingContext context, TagHelperBodyIntermediateNode node)
|
||||
{
|
||||
// Call into the tag helper scope manager to start a new tag helper scope.
|
||||
// Also capture the value as the current execution context.
|
||||
|
|
@ -222,7 +222,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
context.Writer.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public override void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIRNode node)
|
||||
public override void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIntermediateNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
|
||||
|
|
@ -239,11 +239,11 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
tagHelperVariableName);
|
||||
}
|
||||
|
||||
public override void WriteAddTagHelperHtmlAttribute(CSharpRenderingContext context, AddTagHelperHtmlAttributeIRNode node)
|
||||
public override void WriteAddTagHelperHtmlAttribute(CSharpRenderingContext context, AddTagHelperHtmlAttributeIntermediateNode node)
|
||||
{
|
||||
var attributeValueStyleParameter = $"{HtmlAttributeValueStyleTypeName}.{node.ValueStyle}";
|
||||
var isConditionalAttributeValue = node.Children.Any(
|
||||
child => child is CSharpExpressionAttributeValueIRNode || child is CSharpCodeAttributeValueIRNode);
|
||||
child => child is CSharpExpressionAttributeValueIntermediateNode || child is CSharpCodeAttributeValueIntermediateNode);
|
||||
|
||||
// All simple text and minimized attributes will be pre-allocated.
|
||||
if (isConditionalAttributeValue)
|
||||
|
|
@ -255,10 +255,10 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
// writer.
|
||||
var valuePieceCount = node.Children.Count(
|
||||
child =>
|
||||
child is HtmlAttributeValueIRNode ||
|
||||
child is CSharpExpressionAttributeValueIRNode ||
|
||||
child is CSharpCodeAttributeValueIRNode ||
|
||||
child is ExtensionIRNode);
|
||||
child is HtmlAttributeValueIntermediateNode ||
|
||||
child is CSharpExpressionAttributeValueIntermediateNode ||
|
||||
child is CSharpCodeAttributeValueIntermediateNode ||
|
||||
child is ExtensionIntermediateNode);
|
||||
|
||||
context.Writer
|
||||
.WriteStartMethodInvocation(BeginAddHtmlAttributeValuesMethodName)
|
||||
|
|
@ -316,7 +316,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
}
|
||||
}
|
||||
|
||||
public override void WriteSetTagHelperProperty(CSharpRenderingContext context, SetTagHelperPropertyIRNode node)
|
||||
public override void WriteSetTagHelperProperty(CSharpRenderingContext context, SetTagHelperPropertyIntermediateNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
var tagHelperRenderingContext = context.TagHelperRenderingContext;
|
||||
|
|
@ -391,7 +391,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
if (node.Descriptor.IsEnum &&
|
||||
node.Children.Count == 1 &&
|
||||
node.Children.First() is RazorIRToken token &&
|
||||
node.Children.First() is IntermediateToken token &&
|
||||
token.IsCSharp)
|
||||
{
|
||||
context.Writer
|
||||
|
|
@ -421,7 +421,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
private void RenderTagHelperAttributeInline(
|
||||
CSharpRenderingContext context,
|
||||
SetTagHelperPropertyIRNode property,
|
||||
SetTagHelperPropertyIntermediateNode property,
|
||||
SourceSpan documentLocation)
|
||||
{
|
||||
for (var i = 0; i < property.Children.Count; i++)
|
||||
|
|
@ -432,22 +432,22 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
|
||||
private void RenderTagHelperAttributeInline(
|
||||
CSharpRenderingContext context,
|
||||
SetTagHelperPropertyIRNode property,
|
||||
RazorIRNode node,
|
||||
SetTagHelperPropertyIntermediateNode property,
|
||||
IntermediateNode node,
|
||||
SourceSpan documentLocation)
|
||||
{
|
||||
if (node is CSharpExpressionIRNode || node is HtmlContentIRNode)
|
||||
if (node is CSharpExpressionIntermediateNode || node is HtmlContentIntermediateNode)
|
||||
{
|
||||
for (var i = 0; i < node.Children.Count; i++)
|
||||
{
|
||||
RenderTagHelperAttributeInline(context, property, node.Children[i], documentLocation);
|
||||
}
|
||||
}
|
||||
else if (node is RazorIRToken token)
|
||||
else if (node is IntermediateToken token)
|
||||
{
|
||||
context.Writer.Write(token.Content);
|
||||
}
|
||||
else if (node is CSharpCodeIRNode)
|
||||
else if (node is CSharpCodeIntermediateNode)
|
||||
{
|
||||
var error = new RazorError(
|
||||
LegacyResources.TagHelpers_CodeBlocks_NotSupported_InAttributes,
|
||||
|
|
@ -455,7 +455,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
documentLocation.Length);
|
||||
context.Diagnostics.Add(RazorDiagnostic.Create(error));
|
||||
}
|
||||
else if (node is TemplateIRNode)
|
||||
else if (node is TemplateIntermediateNode)
|
||||
{
|
||||
var expectedTypeName = property.IsIndexerNameMatch ? property.Descriptor.IndexerTypeName : property.Descriptor.TypeName;
|
||||
var error = new RazorError(
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|||
{
|
||||
public abstract class TagHelperWriter
|
||||
{
|
||||
public abstract void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIRNode node);
|
||||
public abstract void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIntermediateNode node);
|
||||
|
||||
public abstract void WriteTagHelper(CSharpRenderingContext context, TagHelperIRNode node);
|
||||
public abstract void WriteTagHelper(CSharpRenderingContext context, TagHelperIntermediateNode node);
|
||||
|
||||
public abstract void WriteTagHelperBody(CSharpRenderingContext context, TagHelperBodyIRNode node);
|
||||
public abstract void WriteTagHelperBody(CSharpRenderingContext context, TagHelperBodyIntermediateNode node);
|
||||
|
||||
public abstract void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIRNode node);
|
||||
public abstract void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIntermediateNode node);
|
||||
|
||||
public abstract void WriteAddTagHelperHtmlAttribute(CSharpRenderingContext context, AddTagHelperHtmlAttributeIRNode node);
|
||||
public abstract void WriteAddTagHelperHtmlAttribute(CSharpRenderingContext context, AddTagHelperHtmlAttributeIntermediateNode node);
|
||||
|
||||
public abstract void WriteSetTagHelperProperty(CSharpRenderingContext context, SetTagHelperPropertyIRNode node);
|
||||
public abstract void WriteSetTagHelperProperty(CSharpRenderingContext context, SetTagHelperPropertyIntermediateNode node);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,16 +12,16 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
protected override string DocumentKind => "default";
|
||||
|
||||
protected override bool IsMatch(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override bool IsMatch(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override void OnDocumentStructureCreated(
|
||||
RazorCodeDocument codeDocument,
|
||||
NamespaceDeclarationIRNode @namespace,
|
||||
ClassDeclarationIRNode @class,
|
||||
MethodDeclarationIRNode method)
|
||||
NamespaceDeclarationIntermediateNode @namespace,
|
||||
ClassDeclarationIntermediateNode @class,
|
||||
MethodDeclarationIntermediateNode method)
|
||||
{
|
||||
var configuration = Engine.Features.OfType<DefaultDocumentClassifierPassFeature>().FirstOrDefault();
|
||||
if (configuration != null)
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
internal class DefaultDocumentClassifierPassFeature : RazorEngineFeatureBase
|
||||
{
|
||||
public IList<Action<RazorCodeDocument, ClassDeclarationIRNode>> ConfigureClass { get; } =
|
||||
new List<Action<RazorCodeDocument, ClassDeclarationIRNode>>();
|
||||
public IList<Action<RazorCodeDocument, ClassDeclarationIntermediateNode>> ConfigureClass { get; } =
|
||||
new List<Action<RazorCodeDocument, ClassDeclarationIntermediateNode>>();
|
||||
|
||||
public IList<Action<RazorCodeDocument, NamespaceDeclarationIRNode>> ConfigureNamespace { get; } =
|
||||
new List<Action<RazorCodeDocument, NamespaceDeclarationIRNode>>();
|
||||
public IList<Action<RazorCodeDocument, NamespaceDeclarationIntermediateNode>> ConfigureNamespace { get; } =
|
||||
new List<Action<RazorCodeDocument, NamespaceDeclarationIntermediateNode>>();
|
||||
|
||||
public IList<Action<RazorCodeDocument, MethodDeclarationIRNode>> ConfigureMethod { get; } =
|
||||
new List<Action<RazorCodeDocument, MethodDeclarationIRNode>>();
|
||||
public IList<Action<RazorCodeDocument, MethodDeclarationIntermediateNode>> ConfigureMethod { get; } =
|
||||
new List<Action<RazorCodeDocument, MethodDeclarationIntermediateNode>>();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument)
|
||||
{
|
||||
var irDocument = codeDocument.GetIRDocument();
|
||||
var irDocument = codeDocument.GetDocumentIntermediateNode();
|
||||
ThrowForMissingDocumentDependency(irDocument);
|
||||
|
||||
var target = irDocument.Target;
|
||||
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
var message = Resources.FormatDocumentMissingTarget(
|
||||
irDocument.DocumentKind,
|
||||
nameof(CodeTarget),
|
||||
nameof(DocumentIRNode.Target));
|
||||
nameof(DocumentIntermediateNode.Target));
|
||||
throw new InvalidOperationException(message);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public sealed class DefaultDiagnosticCollection : RazorDiagnosticCollection
|
||||
public sealed class DefaultRazorDiagnosticCollection : RazorDiagnosticCollection
|
||||
{
|
||||
private readonly List<RazorDiagnostic> _inner = new List<RazorDiagnostic>();
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument)
|
||||
{
|
||||
var irDocument = codeDocument.GetIRDocument();
|
||||
var irDocument = codeDocument.GetDocumentIntermediateNode();
|
||||
ThrowForMissingDocumentDependency(irDocument);
|
||||
|
||||
foreach (var pass in Passes)
|
||||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
pass.Execute(codeDocument, irDocument);
|
||||
}
|
||||
|
||||
codeDocument.SetIRDocument(irDocument);
|
||||
codeDocument.SetDocumentIntermediateNode(irDocument);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument)
|
||||
{
|
||||
var irDocument = codeDocument.GetIRDocument();
|
||||
var irDocument = codeDocument.GetDocumentIntermediateNode();
|
||||
ThrowForMissingDocumentDependency(irDocument);
|
||||
|
||||
foreach (var pass in Passes)
|
||||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
pass.Execute(codeDocument, irDocument);
|
||||
}
|
||||
|
||||
codeDocument.SetIRDocument(irDocument);
|
||||
codeDocument.SetDocumentIntermediateNode(irDocument);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Linq;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DefaultRazorIROptimizationPhase : RazorEnginePhaseBase, IRazorIROptimizationPhase
|
||||
{
|
||||
public IRazorIROptimizationPass[] Passes { get; private set; }
|
||||
|
||||
protected override void OnIntialized()
|
||||
{
|
||||
Passes = Engine.Features.OfType<IRazorIROptimizationPass>().OrderBy(p => p.Order).ToArray();
|
||||
}
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument)
|
||||
{
|
||||
var irDocument = codeDocument.GetIRDocument();
|
||||
ThrowForMissingDocumentDependency(irDocument);
|
||||
|
||||
foreach (var pass in Passes)
|
||||
{
|
||||
pass.Execute(codeDocument, irDocument);
|
||||
}
|
||||
|
||||
codeDocument.SetIRDocument(irDocument);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ using Microsoft.AspNetCore.Razor.Language.Legacy;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DefaultRazorIRLoweringPhase : RazorEnginePhaseBase, IRazorIRLoweringPhase
|
||||
internal class DefaultRazorIntermediateNodeLoweringPhase : RazorEnginePhaseBase, IRazorIntermediateNodeLoweringPhase
|
||||
{
|
||||
private IRazorCodeGenerationOptionsFeature[] _optionsCallbacks;
|
||||
|
||||
|
|
@ -28,8 +28,8 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
// This might not have been set if there are no tag helpers.
|
||||
var tagHelperContext = codeDocument.GetTagHelperContext();
|
||||
|
||||
var document = new DocumentIRNode();
|
||||
var builder = RazorIRBuilder.Create(document);
|
||||
var document = new DocumentIntermediateNode();
|
||||
var builder = IntermediateNodeBuilder.Create(document);
|
||||
|
||||
document.Options = CreateCodeGenerationOptions();
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
var i = 0;
|
||||
foreach (var @namespace in namespaces)
|
||||
{
|
||||
var @using = new UsingStatementIRNode()
|
||||
var @using = new UsingStatementIntermediateNode()
|
||||
{
|
||||
Content = @namespace.Key,
|
||||
Source = @namespace.Value,
|
||||
|
|
@ -93,7 +93,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
}
|
||||
|
||||
codeDocument.SetIRDocument(document);
|
||||
codeDocument.SetDocumentIntermediateNode(document);
|
||||
}
|
||||
|
||||
private RazorCodeGenerationOptions CreateCodeGenerationOptions()
|
||||
|
|
@ -109,11 +109,11 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
private class LoweringVisitor : ParserVisitor
|
||||
{
|
||||
protected readonly RazorIRBuilder _builder;
|
||||
protected readonly DocumentIRNode _document;
|
||||
protected readonly IntermediateNodeBuilder _builder;
|
||||
protected readonly DocumentIntermediateNode _document;
|
||||
protected readonly Dictionary<string, SourceSpan?> _namespaces;
|
||||
|
||||
public LoweringVisitor(DocumentIRNode document, RazorIRBuilder builder, Dictionary<string, SourceSpan?> namespaces)
|
||||
public LoweringVisitor(DocumentIntermediateNode document, IntermediateNodeBuilder builder, Dictionary<string, SourceSpan?> namespaces)
|
||||
{
|
||||
_document = document;
|
||||
_builder = builder;
|
||||
|
|
@ -131,10 +131,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitAddTagHelperSpan(AddTagHelperChunkGenerator chunkGenerator, Span span)
|
||||
{
|
||||
RazorIRNode directiveNode;
|
||||
IntermediateNode directiveNode;
|
||||
if (IsMalformed(chunkGenerator.Diagnostics))
|
||||
{
|
||||
directiveNode = new MalformedDirectiveIRNode()
|
||||
directiveNode = new MalformedDirectiveIntermediateNode()
|
||||
{
|
||||
Name = CSharpCodeParser.AddTagHelperDirectiveDescriptor.Directive,
|
||||
Descriptor = CSharpCodeParser.AddTagHelperDirectiveDescriptor,
|
||||
|
|
@ -143,7 +143,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
else
|
||||
{
|
||||
directiveNode = new DirectiveIRNode()
|
||||
directiveNode = new DirectiveIntermediateNode()
|
||||
{
|
||||
Name = CSharpCodeParser.AddTagHelperDirectiveDescriptor.Directive,
|
||||
Descriptor = CSharpCodeParser.AddTagHelperDirectiveDescriptor,
|
||||
|
|
@ -158,7 +158,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
_builder.Push(directiveNode);
|
||||
|
||||
_builder.Add(new DirectiveTokenIRNode()
|
||||
_builder.Add(new DirectiveTokenIntermediateNode()
|
||||
{
|
||||
Content = chunkGenerator.LookupText,
|
||||
Descriptor = CSharpCodeParser.AddTagHelperDirectiveDescriptor.Tokens.First(),
|
||||
|
|
@ -170,10 +170,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitRemoveTagHelperSpan(RemoveTagHelperChunkGenerator chunkGenerator, Span span)
|
||||
{
|
||||
RazorIRNode directiveNode;
|
||||
IntermediateNode directiveNode;
|
||||
if (IsMalformed(chunkGenerator.Diagnostics))
|
||||
{
|
||||
directiveNode = new MalformedDirectiveIRNode()
|
||||
directiveNode = new MalformedDirectiveIntermediateNode()
|
||||
{
|
||||
Name = CSharpCodeParser.RemoveTagHelperDirectiveDescriptor.Directive,
|
||||
Descriptor = CSharpCodeParser.RemoveTagHelperDirectiveDescriptor,
|
||||
|
|
@ -182,7 +182,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
else
|
||||
{
|
||||
directiveNode = new DirectiveIRNode()
|
||||
directiveNode = new DirectiveIntermediateNode()
|
||||
{
|
||||
Name = CSharpCodeParser.RemoveTagHelperDirectiveDescriptor.Directive,
|
||||
Descriptor = CSharpCodeParser.RemoveTagHelperDirectiveDescriptor,
|
||||
|
|
@ -197,7 +197,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
_builder.Push(directiveNode);
|
||||
|
||||
_builder.Add(new DirectiveTokenIRNode()
|
||||
_builder.Add(new DirectiveTokenIntermediateNode()
|
||||
{
|
||||
Content = chunkGenerator.LookupText,
|
||||
Descriptor = CSharpCodeParser.RemoveTagHelperDirectiveDescriptor.Tokens.First(),
|
||||
|
|
@ -209,10 +209,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitTagHelperPrefixDirectiveSpan(TagHelperPrefixDirectiveChunkGenerator chunkGenerator, Span span)
|
||||
{
|
||||
RazorIRNode directiveNode;
|
||||
IntermediateNode directiveNode;
|
||||
if (IsMalformed(chunkGenerator.Diagnostics))
|
||||
{
|
||||
directiveNode = new MalformedDirectiveIRNode()
|
||||
directiveNode = new MalformedDirectiveIntermediateNode()
|
||||
{
|
||||
Name = CSharpCodeParser.TagHelperPrefixDirectiveDescriptor.Directive,
|
||||
Descriptor = CSharpCodeParser.TagHelperPrefixDirectiveDescriptor,
|
||||
|
|
@ -221,7 +221,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
else
|
||||
{
|
||||
directiveNode = new DirectiveIRNode()
|
||||
directiveNode = new DirectiveIntermediateNode()
|
||||
{
|
||||
Name = CSharpCodeParser.TagHelperPrefixDirectiveDescriptor.Directive,
|
||||
Descriptor = CSharpCodeParser.TagHelperPrefixDirectiveDescriptor,
|
||||
|
|
@ -236,7 +236,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
_builder.Push(directiveNode);
|
||||
|
||||
_builder.Add(new DirectiveTokenIRNode()
|
||||
_builder.Add(new DirectiveTokenIntermediateNode()
|
||||
{
|
||||
Content = chunkGenerator.Prefix,
|
||||
Descriptor = CSharpCodeParser.TagHelperPrefixDirectiveDescriptor.Tokens.First(),
|
||||
|
|
@ -271,7 +271,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
// this simple.
|
||||
private bool _insideLineDirective;
|
||||
|
||||
public ImportsVisitor(DocumentIRNode document, RazorIRBuilder builder, Dictionary<string, SourceSpan?> namespaces)
|
||||
public ImportsVisitor(DocumentIntermediateNode document, IntermediateNodeBuilder builder, Dictionary<string, SourceSpan?> namespaces)
|
||||
: base(document, builder, namespaces)
|
||||
{
|
||||
}
|
||||
|
|
@ -280,7 +280,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
if (_insideLineDirective)
|
||||
{
|
||||
_builder.Add(new DirectiveTokenIRNode()
|
||||
_builder.Add(new DirectiveTokenIntermediateNode()
|
||||
{
|
||||
Content = span.Content,
|
||||
Descriptor = chunkGenerator.Descriptor,
|
||||
|
|
@ -295,10 +295,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
_insideLineDirective = true;
|
||||
|
||||
RazorIRNode directiveNode;
|
||||
IntermediateNode directiveNode;
|
||||
if (IsMalformed(chunkGenerator.Diagnostics))
|
||||
{
|
||||
directiveNode = new MalformedDirectiveIRNode()
|
||||
directiveNode = new MalformedDirectiveIntermediateNode()
|
||||
{
|
||||
Name = chunkGenerator.Descriptor.Directive,
|
||||
Descriptor = chunkGenerator.Descriptor,
|
||||
|
|
@ -307,7 +307,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
else
|
||||
{
|
||||
directiveNode = new DirectiveIRNode()
|
||||
directiveNode = new DirectiveIntermediateNode()
|
||||
{
|
||||
Name = chunkGenerator.Descriptor.Directive,
|
||||
Descriptor = chunkGenerator.Descriptor,
|
||||
|
|
@ -333,10 +333,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
private class MainSourceVisitor : LoweringVisitor
|
||||
{
|
||||
private DeclareTagHelperFieldsIRNode _tagHelperFields;
|
||||
private DeclareTagHelperFieldsIntermediateNode _tagHelperFields;
|
||||
private readonly string _tagHelperPrefix;
|
||||
|
||||
public MainSourceVisitor(DocumentIRNode document, RazorIRBuilder builder, Dictionary<string, SourceSpan?> namespaces, string tagHelperPrefix)
|
||||
public MainSourceVisitor(DocumentIntermediateNode document, IntermediateNodeBuilder builder, Dictionary<string, SourceSpan?> namespaces, string tagHelperPrefix)
|
||||
: base(document, builder, namespaces)
|
||||
{
|
||||
_tagHelperPrefix = tagHelperPrefix;
|
||||
|
|
@ -344,7 +344,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitDirectiveToken(DirectiveTokenChunkGenerator chunkGenerator, Span span)
|
||||
{
|
||||
_builder.Add(new DirectiveTokenIRNode()
|
||||
_builder.Add(new DirectiveTokenIntermediateNode()
|
||||
{
|
||||
Content = span.Content,
|
||||
Descriptor = chunkGenerator.Descriptor,
|
||||
|
|
@ -354,10 +354,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitDirectiveBlock(DirectiveChunkGenerator chunkGenerator, Block block)
|
||||
{
|
||||
RazorIRNode directiveNode;
|
||||
IntermediateNode directiveNode;
|
||||
if (IsMalformed(chunkGenerator.Diagnostics))
|
||||
{
|
||||
directiveNode = new MalformedDirectiveIRNode()
|
||||
directiveNode = new MalformedDirectiveIntermediateNode()
|
||||
{
|
||||
Name = chunkGenerator.Descriptor.Directive,
|
||||
Descriptor = chunkGenerator.Descriptor,
|
||||
|
|
@ -366,7 +366,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
else
|
||||
{
|
||||
directiveNode = new DirectiveIRNode()
|
||||
directiveNode = new DirectiveIntermediateNode()
|
||||
{
|
||||
Name = chunkGenerator.Descriptor.Directive,
|
||||
Descriptor = chunkGenerator.Descriptor,
|
||||
|
|
@ -393,7 +393,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
// Suffix="
|
||||
public override void VisitAttributeBlock(AttributeBlockChunkGenerator chunkGenerator, Block block)
|
||||
{
|
||||
_builder.Push(new HtmlAttributeIRNode()
|
||||
_builder.Push(new HtmlAttributeIntermediateNode()
|
||||
{
|
||||
Name = chunkGenerator.Name,
|
||||
Prefix = chunkGenerator.Prefix,
|
||||
|
|
@ -415,7 +415,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
var firstChild = block.Children.FirstOrDefault(c => c.IsBlock) as Block;
|
||||
if (firstChild == null || firstChild.Type == BlockKindInternal.Expression)
|
||||
{
|
||||
_builder.Push(new CSharpExpressionAttributeValueIRNode()
|
||||
_builder.Push(new CSharpExpressionAttributeValueIntermediateNode()
|
||||
{
|
||||
Prefix = chunkGenerator.Prefix,
|
||||
Source = BuildSourceSpanFromNode(block),
|
||||
|
|
@ -423,7 +423,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
else
|
||||
{
|
||||
_builder.Push(new CSharpCodeAttributeValueIRNode()
|
||||
_builder.Push(new CSharpCodeAttributeValueIntermediateNode()
|
||||
{
|
||||
Prefix = chunkGenerator.Prefix,
|
||||
Source = BuildSourceSpanFromNode(block),
|
||||
|
|
@ -437,7 +437,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitLiteralAttributeSpan(LiteralAttributeChunkGenerator chunkGenerator, Span span)
|
||||
{
|
||||
_builder.Push(new HtmlAttributeValueIRNode()
|
||||
_builder.Push(new HtmlAttributeValueIntermediateNode()
|
||||
{
|
||||
Prefix = chunkGenerator.Prefix,
|
||||
Source = BuildSourceSpanFromNode(span),
|
||||
|
|
@ -455,10 +455,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
chunkGenerator.Value.Value.Length);
|
||||
}
|
||||
|
||||
_builder.Add(new RazorIRToken()
|
||||
_builder.Add(new IntermediateToken()
|
||||
{
|
||||
Content = chunkGenerator.Value,
|
||||
Kind = RazorIRToken.TokenKind.Html,
|
||||
Kind = IntermediateToken.TokenKind.Html,
|
||||
Source = valueSpan
|
||||
});
|
||||
|
||||
|
|
@ -467,7 +467,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitTemplateBlock(TemplateBlockChunkGenerator chunkGenerator, Block block)
|
||||
{
|
||||
var templateNode = new TemplateIRNode();
|
||||
var templateNode = new TemplateIntermediateNode();
|
||||
_builder.Push(templateNode);
|
||||
|
||||
VisitDefault(block);
|
||||
|
|
@ -503,13 +503,13 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
// We need to capture this in the IR so that we can give each piece the correct source mappings
|
||||
public override void VisitExpressionBlock(ExpressionChunkGenerator chunkGenerator, Block block)
|
||||
{
|
||||
if (_builder.Current is CSharpExpressionAttributeValueIRNode)
|
||||
if (_builder.Current is CSharpExpressionAttributeValueIntermediateNode)
|
||||
{
|
||||
VisitDefault(block);
|
||||
return;
|
||||
}
|
||||
|
||||
var expressionNode = new CSharpExpressionIRNode();
|
||||
var expressionNode = new CSharpExpressionIntermediateNode();
|
||||
|
||||
_builder.Push(expressionNode);
|
||||
|
||||
|
|
@ -540,31 +540,31 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public override void VisitExpressionSpan(ExpressionChunkGenerator chunkGenerator, Span span)
|
||||
{
|
||||
_builder.Add(new RazorIRToken()
|
||||
_builder.Add(new IntermediateToken()
|
||||
{
|
||||
Content = span.Content,
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Source = BuildSourceSpanFromNode(span),
|
||||
});
|
||||
}
|
||||
|
||||
public override void VisitStatementSpan(StatementChunkGenerator chunkGenerator, Span span)
|
||||
{
|
||||
var isAttributeValue = _builder.Current is CSharpCodeAttributeValueIRNode;
|
||||
var isAttributeValue = _builder.Current is CSharpCodeAttributeValueIntermediateNode;
|
||||
|
||||
if (!isAttributeValue)
|
||||
{
|
||||
var statementNode = new CSharpCodeIRNode()
|
||||
var statementNode = new CSharpCodeIntermediateNode()
|
||||
{
|
||||
Source = BuildSourceSpanFromNode(span)
|
||||
};
|
||||
_builder.Push(statementNode);
|
||||
}
|
||||
|
||||
_builder.Add(new RazorIRToken()
|
||||
_builder.Add(new IntermediateToken()
|
||||
{
|
||||
Content = span.Content,
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Source = BuildSourceSpanFromNode(span),
|
||||
});
|
||||
|
||||
|
|
@ -590,9 +590,9 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
var source = BuildSourceSpanFromNode(span);
|
||||
var currentChildren = _builder.Current.Children;
|
||||
if (currentChildren.Count > 0 && currentChildren[currentChildren.Count - 1] is HtmlContentIRNode)
|
||||
if (currentChildren.Count > 0 && currentChildren[currentChildren.Count - 1] is HtmlContentIntermediateNode)
|
||||
{
|
||||
var existingHtmlContent = (HtmlContentIRNode)currentChildren[currentChildren.Count - 1];
|
||||
var existingHtmlContent = (HtmlContentIntermediateNode)currentChildren[currentChildren.Count - 1];
|
||||
|
||||
if (existingHtmlContent.Source == null && source == null)
|
||||
{
|
||||
|
|
@ -610,16 +610,16 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
}
|
||||
|
||||
var contentNode = new HtmlContentIRNode()
|
||||
var contentNode = new HtmlContentIntermediateNode()
|
||||
{
|
||||
Source = source
|
||||
};
|
||||
_builder.Push(contentNode);
|
||||
|
||||
_builder.Add(new RazorIRToken()
|
||||
_builder.Add(new IntermediateToken()
|
||||
{
|
||||
Content = span.Content,
|
||||
Kind = RazorIRToken.TokenKind.Html,
|
||||
Kind = IntermediateToken.TokenKind.Html,
|
||||
Source = source,
|
||||
});
|
||||
|
||||
|
|
@ -642,7 +642,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
tagName = tagName.Substring(_tagHelperPrefix.Length);
|
||||
}
|
||||
|
||||
var tagHelperNode = new TagHelperIRNode()
|
||||
var tagHelperNode = new TagHelperIntermediateNode()
|
||||
{
|
||||
TagName = tagName,
|
||||
TagMode = tagHelperBlock.TagMode,
|
||||
|
|
@ -656,24 +656,24 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
_builder.Push(tagHelperNode);
|
||||
|
||||
_builder.Push(new TagHelperBodyIRNode());
|
||||
_builder.Push(new TagHelperBodyIntermediateNode());
|
||||
|
||||
VisitDefault(block);
|
||||
|
||||
_builder.Pop(); // Pop InitializeTagHelperStructureIRNode
|
||||
_builder.Pop(); // Pop InitializeTagHelperStructureIntermediateNode
|
||||
|
||||
AddTagHelperCreation(tagHelperBlock.Binding);
|
||||
AddTagHelperAttributes(tagHelperBlock.Attributes, tagHelperBlock.Binding);
|
||||
|
||||
_builder.Pop(); // Pop TagHelperIRNode
|
||||
_builder.Pop(); // Pop TagHelperIntermediateNode
|
||||
}
|
||||
|
||||
private void Combine(HtmlContentIRNode node, Span span)
|
||||
private void Combine(HtmlContentIntermediateNode node, Span span)
|
||||
{
|
||||
node.Children.Add(new RazorIRToken()
|
||||
node.Children.Add(new IntermediateToken()
|
||||
{
|
||||
Content = span.Content,
|
||||
Kind = RazorIRToken.TokenKind.Html,
|
||||
Kind = IntermediateToken.TokenKind.Html,
|
||||
Source = BuildSourceSpanFromNode(span),
|
||||
});
|
||||
|
||||
|
|
@ -694,7 +694,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
if (_tagHelperFields == null)
|
||||
{
|
||||
_tagHelperFields = new DeclareTagHelperFieldsIRNode();
|
||||
_tagHelperFields = new DeclareTagHelperFieldsIntermediateNode();
|
||||
_document.Children.Add(_tagHelperFields);
|
||||
}
|
||||
|
||||
|
|
@ -711,7 +711,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
foreach (var descriptor in descriptors)
|
||||
{
|
||||
var typeName = descriptor.GetTypeName();
|
||||
var createTagHelper = new CreateTagHelperIRNode()
|
||||
var createTagHelper = new CreateTagHelperIntermediateNode()
|
||||
{
|
||||
TagHelperTypeName = typeName,
|
||||
Descriptor = descriptor
|
||||
|
|
@ -747,7 +747,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
var tagHelperTypeName = associatedDescriptor.GetTypeName();
|
||||
var attributePropertyName = associatedAttributeDescriptor.GetPropertyName();
|
||||
|
||||
var setTagHelperProperty = new SetTagHelperPropertyIRNode()
|
||||
var setTagHelperProperty = new SetTagHelperPropertyIntermediateNode()
|
||||
{
|
||||
PropertyName = attributePropertyName,
|
||||
AttributeName = attribute.Name,
|
||||
|
|
@ -766,7 +766,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
else
|
||||
{
|
||||
var addHtmlAttribute = new AddTagHelperHtmlAttributeIRNode()
|
||||
var addHtmlAttribute = new AddTagHelperHtmlAttributeIntermediateNode()
|
||||
{
|
||||
Name = attribute.Name,
|
||||
ValueStyle = attribute.ValueStyle
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Linq;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DefaultRazorOptimizationPhase : RazorEnginePhaseBase, IRazorOptimizationPhase
|
||||
{
|
||||
public IRazorOptimizationPass[] Passes { get; private set; }
|
||||
|
||||
protected override void OnIntialized()
|
||||
{
|
||||
Passes = Engine.Features.OfType<IRazorOptimizationPass>().OrderBy(p => p.Order).ToArray();
|
||||
}
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument)
|
||||
{
|
||||
var documentNode = codeDocument.GetDocumentIntermediateNode();
|
||||
ThrowForMissingDocumentDependency(documentNode);
|
||||
|
||||
foreach (var pass in Passes)
|
||||
{
|
||||
pass.Execute(codeDocument, documentNode);
|
||||
}
|
||||
|
||||
codeDocument.SetDocumentIntermediateNode(documentNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,45 +5,45 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class RazorDesignTimeIRPass : RazorIRPassBase, IRazorDirectiveClassifierPass
|
||||
internal class DesignTimeDirectivePass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
|
||||
{
|
||||
internal const string DesignTimeVariable = "__o";
|
||||
|
||||
// This needs to run before other directive classifiers.
|
||||
public override int Order => -10;
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var walker = new DesignTimeHelperWalker();
|
||||
walker.VisitDocument(irDocument);
|
||||
walker.VisitDocument(documentNode);
|
||||
}
|
||||
|
||||
internal class DesignTimeHelperWalker : RazorIRNodeWalker
|
||||
internal class DesignTimeHelperWalker : IntermediateNodeWalker
|
||||
{
|
||||
private DesignTimeDirectiveIRNode _designTimeDirectiveIRNode;
|
||||
private DesignTimeDirectiveIntermediateNode _directiveNode;
|
||||
|
||||
public override void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public override void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
var designTimeHelperDeclaration = new CSharpCodeIRNode();
|
||||
RazorIRBuilder.Create(designTimeHelperDeclaration)
|
||||
.Add(new RazorIRToken()
|
||||
var designTimeHelperDeclaration = new CSharpCodeIntermediateNode();
|
||||
IntermediateNodeBuilder.Create(designTimeHelperDeclaration)
|
||||
.Add(new IntermediateToken()
|
||||
{
|
||||
Kind = RazorIRToken.TokenKind.CSharp,
|
||||
Kind = IntermediateToken.TokenKind.CSharp,
|
||||
Content = $"private static {typeof(object).FullName} {DesignTimeVariable} = null;"
|
||||
});
|
||||
|
||||
node.Children.Insert(0, designTimeHelperDeclaration);
|
||||
|
||||
_designTimeDirectiveIRNode = new DesignTimeDirectiveIRNode();
|
||||
_directiveNode = new DesignTimeDirectiveIntermediateNode();
|
||||
|
||||
VisitDefault(node);
|
||||
|
||||
node.Children.Insert(0, _designTimeDirectiveIRNode);
|
||||
node.Children.Insert(0, _directiveNode);
|
||||
}
|
||||
|
||||
public override void VisitDirectiveToken(DirectiveTokenIRNode node)
|
||||
public override void VisitDirectiveToken(DirectiveTokenIntermediateNode node)
|
||||
{
|
||||
_designTimeDirectiveIRNode.Children.Add(node);
|
||||
_directiveNode.Children.Add(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6,14 +6,14 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DirectiveRemovalIROptimizationPass : RazorIRPassBase, IRazorIROptimizationPass
|
||||
internal class DirectiveRemovalOptimizationPass : IntermediateNodePassBase, IRazorOptimizationPass
|
||||
{
|
||||
public override int Order => DefaultFeatureOrder + 50;
|
||||
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var visitor = new Visitor();
|
||||
visitor.VisitDocument(irDocument);
|
||||
visitor.VisitDocument(documentNode);
|
||||
|
||||
foreach (var nodeReference in visitor.DirectiveNodes)
|
||||
{
|
||||
|
|
@ -21,13 +21,13 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeWalker
|
||||
private class Visitor : IntermediateNodeWalker
|
||||
{
|
||||
public IList<RazorIRNodeReference> DirectiveNodes { get; } = new List<RazorIRNodeReference>();
|
||||
public IList<IntermediateNodeReference> DirectiveNodes { get; } = new List<IntermediateNodeReference>();
|
||||
|
||||
public override void VisitDirective(DirectiveIRNode node)
|
||||
public override void VisitDirective(DirectiveIntermediateNode node)
|
||||
{
|
||||
DirectiveNodes.Add(new RazorIRNodeReference(Parent, node));
|
||||
DirectiveNodes.Add(new IntermediateNodeReference(Parent, node));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public abstract class DocumentClassifierPassBase : RazorIRPassBase, IRazorDocumentClassifierPass
|
||||
public abstract class DocumentClassifierPassBase : IntermediateNodePassBase, IRazorDocumentClassifierPass
|
||||
{
|
||||
private static readonly ICodeTargetExtension[] EmptyExtensionArray = new ICodeTargetExtension[0];
|
||||
|
||||
|
|
@ -22,49 +22,49 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
TargetExtensions = feature.FirstOrDefault()?.TargetExtensions.ToArray() ?? EmptyExtensionArray;
|
||||
}
|
||||
|
||||
protected sealed override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected sealed override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
if (irDocument.DocumentKind != null)
|
||||
if (documentNode.DocumentKind != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsMatch(codeDocument, irDocument))
|
||||
if (!IsMatch(codeDocument, documentNode))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
irDocument.DocumentKind = DocumentKind;
|
||||
irDocument.Target = CreateTarget(codeDocument, irDocument.Options);
|
||||
documentNode.DocumentKind = DocumentKind;
|
||||
documentNode.Target = CreateTarget(codeDocument, documentNode.Options);
|
||||
|
||||
Rewrite(codeDocument, irDocument);
|
||||
Rewrite(codeDocument, documentNode);
|
||||
}
|
||||
|
||||
private void Rewrite(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
private void Rewrite(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
// Rewrite the document from a flat structure to use a sensible default structure,
|
||||
// a namespace and class declaration with a single 'razor' method.
|
||||
var children = new List<RazorIRNode>(irDocument.Children);
|
||||
irDocument.Children.Clear();
|
||||
var children = new List<IntermediateNode>(documentNode.Children);
|
||||
documentNode.Children.Clear();
|
||||
|
||||
var @namespace = new NamespaceDeclarationIRNode();
|
||||
var @namespace = new NamespaceDeclarationIntermediateNode();
|
||||
@namespace.Annotations[CommonAnnotations.PrimaryNamespace] = CommonAnnotations.PrimaryNamespace;
|
||||
|
||||
var @class = new ClassDeclarationIRNode();
|
||||
var @class = new ClassDeclarationIntermediateNode();
|
||||
@class.Annotations[CommonAnnotations.PrimaryClass] = CommonAnnotations.PrimaryClass;
|
||||
|
||||
var method = new MethodDeclarationIRNode();
|
||||
var method = new MethodDeclarationIntermediateNode();
|
||||
method.Annotations[CommonAnnotations.PrimaryMethod] = CommonAnnotations.PrimaryMethod;
|
||||
|
||||
var documentBuilder = RazorIRBuilder.Create(irDocument);
|
||||
var documentBuilder = IntermediateNodeBuilder.Create(documentNode);
|
||||
|
||||
var namespaceBuilder = RazorIRBuilder.Create(documentBuilder.Current);
|
||||
var namespaceBuilder = IntermediateNodeBuilder.Create(documentBuilder.Current);
|
||||
namespaceBuilder.Push(@namespace);
|
||||
|
||||
var classBuilder = RazorIRBuilder.Create(namespaceBuilder.Current);
|
||||
var classBuilder = IntermediateNodeBuilder.Create(namespaceBuilder.Current);
|
||||
classBuilder.Push(@class);
|
||||
|
||||
var methodBuilder = RazorIRBuilder.Create(classBuilder.Current);
|
||||
var methodBuilder = IntermediateNodeBuilder.Create(classBuilder.Current);
|
||||
methodBuilder.Push(method);
|
||||
|
||||
var visitor = new Visitor(documentBuilder, namespaceBuilder, classBuilder, methodBuilder);
|
||||
|
|
@ -79,7 +79,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
OnDocumentStructureCreated(codeDocument, @namespace, @class, method);
|
||||
}
|
||||
|
||||
protected abstract bool IsMatch(RazorCodeDocument codeDocument, DocumentIRNode irDocument);
|
||||
protected abstract bool IsMatch(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode);
|
||||
|
||||
private CodeTarget CreateTarget(RazorCodeDocument codeDocument, RazorCodeGenerationOptions options)
|
||||
{
|
||||
|
|
@ -101,21 +101,21 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
protected virtual void OnDocumentStructureCreated(
|
||||
RazorCodeDocument codeDocument,
|
||||
NamespaceDeclarationIRNode @namespace,
|
||||
ClassDeclarationIRNode @class,
|
||||
MethodDeclarationIRNode @method)
|
||||
NamespaceDeclarationIntermediateNode @namespace,
|
||||
ClassDeclarationIntermediateNode @class,
|
||||
MethodDeclarationIntermediateNode @method)
|
||||
{
|
||||
// Intentionally empty.
|
||||
}
|
||||
|
||||
private class Visitor : RazorIRNodeVisitor
|
||||
private class Visitor : IntermediateNodeVisitor
|
||||
{
|
||||
private readonly RazorIRBuilder _document;
|
||||
private readonly RazorIRBuilder _namespace;
|
||||
private readonly RazorIRBuilder _class;
|
||||
private readonly RazorIRBuilder _method;
|
||||
private readonly IntermediateNodeBuilder _document;
|
||||
private readonly IntermediateNodeBuilder _namespace;
|
||||
private readonly IntermediateNodeBuilder _class;
|
||||
private readonly IntermediateNodeBuilder _method;
|
||||
|
||||
public Visitor(RazorIRBuilder document, RazorIRBuilder @namespace, RazorIRBuilder @class, RazorIRBuilder method)
|
||||
public Visitor(IntermediateNodeBuilder document, IntermediateNodeBuilder @namespace, IntermediateNodeBuilder @class, IntermediateNodeBuilder method)
|
||||
{
|
||||
_document = document;
|
||||
_namespace = @namespace;
|
||||
|
|
@ -123,14 +123,14 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
_method = method;
|
||||
}
|
||||
|
||||
public override void VisitUsingStatement(UsingStatementIRNode node)
|
||||
public override void VisitUsingStatement(UsingStatementIntermediateNode node)
|
||||
{
|
||||
var children = _namespace.Current.Children;
|
||||
var i = children.Count - 1;
|
||||
for (; i >= 0; i--)
|
||||
{
|
||||
var child = children[i];
|
||||
if (child is UsingStatementIRNode)
|
||||
if (child is UsingStatementIntermediateNode)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
|
@ -139,14 +139,14 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
_namespace.Insert(i + 1, node);
|
||||
}
|
||||
|
||||
public override void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIRNode node)
|
||||
public override void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIntermediateNode node)
|
||||
{
|
||||
_class.Insert(0, node);
|
||||
}
|
||||
|
||||
public override void VisitDefault(RazorIRNode node)
|
||||
public override void VisitDefault(IntermediateNode node)
|
||||
{
|
||||
if (node is MemberDeclarationIRNode)
|
||||
if (node is MemberDeclarationIntermediateNode)
|
||||
{
|
||||
_class.Add(node);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -5,17 +5,17 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
||||
{
|
||||
public sealed class FunctionsDirectivePass : RazorIRPassBase, IRazorDirectiveClassifierPass
|
||||
public sealed class FunctionsDirectivePass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
|
||||
{
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var @class = irDocument.FindPrimaryClass();
|
||||
var @class = documentNode.FindPrimaryClass();
|
||||
if (@class == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var functions in irDocument.FindDirectiveReferences(FunctionsDirective.Directive))
|
||||
foreach (var functions in documentNode.FindDirectiveReferences(FunctionsDirective.Directive))
|
||||
{
|
||||
functions.Remove();
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
|||
{
|
||||
public interface ISectionTargetExtension : ICodeTargetExtension
|
||||
{
|
||||
void WriteSection(CSharpRenderingContext context, SectionIRNode node);
|
||||
void WriteSection(CSharpRenderingContext context, SectionIntermediateNode node);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
|||
{
|
||||
public interface ITemplateTargetExtension : ICodeTargetExtension
|
||||
{
|
||||
void WriteTemplate(CSharpRenderingContext context, TemplateIRNode node);
|
||||
void WriteTemplate(CSharpRenderingContext context, TemplateIntermediateNode node);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,21 +7,21 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
||||
{
|
||||
public sealed class InheritsDirectivePass : RazorIRPassBase, IRazorDirectiveClassifierPass
|
||||
public sealed class InheritsDirectivePass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
|
||||
{
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var @class = irDocument.FindPrimaryClass();
|
||||
var @class = documentNode.FindPrimaryClass();
|
||||
if (@class == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var inherits in irDocument.FindDirectiveReferences(InheritsDirective.Directive))
|
||||
foreach (var inherits in documentNode.FindDirectiveReferences(InheritsDirective.Directive))
|
||||
{
|
||||
inherits.Remove();
|
||||
|
||||
var token = ((DirectiveIRNode)inherits.Node).Tokens.FirstOrDefault();
|
||||
var token = ((DirectiveIntermediateNode)inherits.Node).Tokens.FirstOrDefault();
|
||||
if (token != null)
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -7,21 +7,21 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
||||
{
|
||||
public sealed class SectionDirectivePass : RazorIRPassBase, IRazorDirectiveClassifierPass
|
||||
public sealed class SectionDirectivePass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
|
||||
{
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIRNode irDocument)
|
||||
protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode)
|
||||
{
|
||||
var @class = irDocument.FindPrimaryClass();
|
||||
var @class = documentNode.FindPrimaryClass();
|
||||
if (@class == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var directive in irDocument.FindDirectiveReferences(SectionDirective.Directive))
|
||||
foreach (var directive in documentNode.FindDirectiveReferences(SectionDirective.Directive))
|
||||
{
|
||||
var sectionName = ((DirectiveIRNode)directive.Node).Tokens.FirstOrDefault()?.Content;
|
||||
var sectionName = ((DirectiveIntermediateNode)directive.Node).Tokens.FirstOrDefault()?.Content;
|
||||
|
||||
var section = new SectionIRNode()
|
||||
var section = new SectionIntermediateNode()
|
||||
{
|
||||
Name = sectionName,
|
||||
};
|
||||
|
|
@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
|||
var i = 0;
|
||||
for (; i < directive.Node.Children.Count; i++)
|
||||
{
|
||||
if (!(directive.Node.Children[i] is DirectiveTokenIRNode))
|
||||
if (!(directive.Node.Children[i] is DirectiveTokenIntermediateNode))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,20 +7,20 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
||||
{
|
||||
public sealed class SectionIRNode : ExtensionIRNode
|
||||
public sealed class SectionIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<SectionIRNode>(this, visitor);
|
||||
AcceptExtensionNode<SectionIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
|
|
@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
|||
|
||||
public string SectionMethodName { get; set; } = DefaultSectionMethodName;
|
||||
|
||||
public void WriteSection(CSharpRenderingContext context, SectionIRNode node)
|
||||
public void WriteSection(CSharpRenderingContext context, SectionIntermediateNode node)
|
||||
{
|
||||
// Quirk Alert!
|
||||
//
|
||||
|
|
|
|||
|
|
@ -7,18 +7,18 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
||||
{
|
||||
public sealed class TemplateIRNode : ExtensionIRNode
|
||||
public sealed class TemplateIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<TemplateIRNode>(this, visitor);
|
||||
AcceptExtensionNode<TemplateIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
|||
|
||||
public string TemplateTypeName { get; set; } = DefaultTemplateTypeName;
|
||||
|
||||
public void WriteTemplate(CSharpRenderingContext context, TemplateIRNode node)
|
||||
public void WriteTemplate(CSharpRenderingContext context, TemplateIntermediateNode node)
|
||||
{
|
||||
const string ItemParameterName = "item";
|
||||
const string TemplateWriterName = "__razor_template_writer";
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@
|
|||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Generates C# code using the IR document.
|
||||
/// Generates C# code using the intermediate node document.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// After IR processing, the <see cref="IRazorCSharpLoweringPhase"/> transforms the IR document into generated C# code.
|
||||
/// At this time any directives or IR constructs that cannot be understood by code generation will result
|
||||
/// in an error.
|
||||
/// After IR processing, the <see cref="IRazorCSharpLoweringPhase"/> transforms the intermediate node document into
|
||||
/// generated C# code. At this time any directives or other constructs that cannot be understood by code generation
|
||||
/// will result in an error.
|
||||
/// </remarks>
|
||||
public interface IRazorCSharpLoweringPhase : IRazorEnginePhase
|
||||
{
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
int Order { get; }
|
||||
|
||||
void Execute(RazorCodeDocument codeDocument, DocumentIRNode irDocument);
|
||||
void Execute(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,20 +4,19 @@
|
|||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Understands directive IR nodes and performs the necessary modifications to the IR document.
|
||||
/// Understands directive nodes and performs the necessary modifications to the document.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// The second phase of IR processing is directive classification. IR passes in this phase should interpret
|
||||
/// directives and processing them accordingly by transforming IR nodes or adding diagnostics to the IR. At
|
||||
/// this time the document kind has been identified, so any directive that can't be applied should trigger
|
||||
/// The second phase of intermediate node processing is directive classification. Passes in this phase should interpret
|
||||
/// directives and processing them accordingly by transforming nodes or adding diagnostics. At this time the document
|
||||
/// kind has been identified, so any directive that can't be applied should trigger
|
||||
/// errors. If implementing a document kind that diverges from the standard structure of Razor documents
|
||||
/// it may be necessary to reimplement processing of default directives.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <see cref="IRazorDirectiveClassifierPass"/> objects are executed according to an ascending ordering of the
|
||||
/// <see cref="IRazorDirectiveClassifierPass.Order"/> property. The default configuration of <see cref="RazorEngine"/>
|
||||
/// prescribes a logical ordering of specific phases of IR processing.
|
||||
/// <see cref="IRazorDirectiveClassifierPass.Order"/> property.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public interface IRazorDirectiveClassifierPhase : IRazorEnginePhase
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
int Order { get; }
|
||||
|
||||
void Execute(RazorCodeDocument codeDocument, DocumentIRNode irDocument);
|
||||
void Execute(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,21 +6,20 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Modifies the IR document to a desired structure.
|
||||
/// Modifies the intermediate node document to a desired structure.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// The first phase of IR procesing is document classification. IR passes in this phase should classify the
|
||||
/// The first phase of intermediate node procesing is document classification. Passes in this phase should classify the
|
||||
/// document according to any relevant criteria (project configuration, file extension, directive) and modify
|
||||
/// the IR tree to suit the desired document shape. Document classifiers should also set
|
||||
/// <see cref="DocumentIRNode.DocumentKind"/> to prevent other classifiers from running. If no classifier
|
||||
/// the intermediate node document to suit the desired document shape. Document classifiers should also set
|
||||
/// <see cref="DocumentIntermediateNode.DocumentKind"/> to prevent other classifiers from running. If no classifier
|
||||
/// matches the document, then it will be classified as "generic" and processed according to set
|
||||
/// of reasonable defaults.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <see cref="IRazorDocumentClassifierPass"/> objects are executed according to an ascending ordering of the
|
||||
/// <see cref="IRazorDocumentClassifierPass.Order"/> property. The default configuration of <see cref="RazorEngine"/>
|
||||
/// prescribes a logical ordering of specific phases of IR processing.
|
||||
/// <see cref="IRazorDocumentClassifierPass.Order"/> property.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public interface IRazorDocumentClassifierPhase : IRazorEnginePhase
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Generates the IR document from <see cref="RazorSyntaxTree"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The IR document is first produced by <see cref="IRazorIRLoweringPhase"/>. At this point no IR passes have
|
||||
/// been executed. The default <see cref="IRazorIRLoweringPhase"/> will perform a mechanical transformation
|
||||
/// of the syntax tree to IR resulting in a mostly flat structure. It is up to later phases to give the document
|
||||
/// structure and semantics according to a document kind. The default <see cref="IRazorIRLoweringPhase"/> is
|
||||
/// also responsible for synthesizing IR nodes for global cross-current concerns such as checksums or global settings.
|
||||
/// </remarks>
|
||||
public interface IRazorIRLoweringPhase : IRazorEnginePhase
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Performs necessary modifications to the IR document to optimize code generation.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// The last phase of IR processing is lowering. IR passes in this phase perform some kind of transformation
|
||||
/// on the IR that optimizes the generated code. The key distinction here is that information may be discarded
|
||||
/// during this phase.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <see cref="IRazorIROptimizationPass"/> objects are executed according to an ascending ordering of the
|
||||
/// <see cref="IRazorIROptimizationPass.Order"/> property. The default configuration of <see cref="RazorEngine"/>
|
||||
/// prescribes a logical ordering of specific phases of IR processing.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public interface IRazorIROptimizationPhase : IRazorEnginePhase
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Generates the intermediate node document from <see cref="RazorSyntaxTree"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The document is first produced by <see cref="IRazorIntermediateNodeLoweringPhase"/>. At this point no intermediate node
|
||||
/// passes have been executed. The default <see cref="IRazorIntermediateNodeLoweringPhase"/> will perform a mechanical
|
||||
/// transformation of the syntax tree to intermediate nodes, resulting in a mostly flat structure. It is up to later phases
|
||||
/// to give the document structure and semantics according to a document kind. The default
|
||||
/// <see cref="IRazorIntermediateNodeLoweringPhase"/> is also responsible for merging nodes from imported documents.
|
||||
/// </remarks>
|
||||
public interface IRazorIntermediateNodeLoweringPhase : IRazorEnginePhase
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -5,10 +5,10 @@ using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public interface IRazorIROptimizationPass : IRazorEngineFeature
|
||||
public interface IRazorOptimizationPass : IRazorEngineFeature
|
||||
{
|
||||
int Order { get; }
|
||||
|
||||
void Execute(RazorCodeDocument codeDocument, DocumentIRNode irDocument);
|
||||
void Execute(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Performs necessary modifications to the <see cref="Intermediate.DocumentIntermediateNode"/> to complete and
|
||||
/// optimize code generation.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// The last phase of intermediate node document processing is optimization. Passes in this phase perform some
|
||||
/// kind of transformation on the intermediate node document that optimizes the generated code. The key distinction
|
||||
/// here is that information may be discarded during this phase.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <see cref="IRazorOptimizationPass"/> objects are executed according to an ascending ordering of the
|
||||
/// <see cref="IRazorOptimizationPass.Order"/> property.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public interface IRazorOptimizationPhase : IRazorEnginePhase
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -6,24 +6,24 @@ using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
internal sealed class AddPreallocatedTagHelperHtmlAttributeIRNode : ExtensionIRNode
|
||||
internal sealed class AddPreallocatedTagHelperHtmlAttributeIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public override RazorDiagnosticCollection Diagnostics { get; } = ReadOnlyDiagnosticCollection.Instance;
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override bool HasDiagnostics => false;
|
||||
|
||||
public string VariableName { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<AddPreallocatedTagHelperHtmlAttributeIRNode>(this, visitor);
|
||||
AcceptExtensionNode<AddPreallocatedTagHelperHtmlAttributeIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
|
|
@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Razor.Language.Legacy;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class AddTagHelperHtmlAttributeIRNode : RazorIRNode
|
||||
public sealed class AddTagHelperHtmlAttributeIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -18,14 +18,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
internal HtmlAttributeValueStyle ValueStyle { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class CSharpCodeAttributeValueIRNode : RazorIRNode
|
||||
public sealed class CSharpCodeAttributeValueIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -17,14 +17,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Prefix { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class CSharpCodeIRNode : RazorIRNode
|
||||
public sealed class CSharpCodeIntermediateNode : IntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -29,20 +29,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
public override bool HasDiagnostics => _diagnostics != null && _diagnostics.Count > 0;
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class CSharpExpressionAttributeValueIRNode : RazorIRNode
|
||||
public sealed class CSharpExpressionAttributeValueIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -17,14 +17,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Prefix { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class CSharpExpressionIRNode : RazorIRNode
|
||||
public sealed class CSharpExpressionIntermediateNode : IntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -29,20 +29,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
public override bool HasDiagnostics => _diagnostics != null && _diagnostics.Count > 0;
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class ClassDeclarationIRNode : MemberDeclarationIRNode
|
||||
public sealed class ClassDeclarationIntermediateNode : MemberDeclarationIntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public IList<string> Interfaces { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class CreateTagHelperIRNode : RazorIRNode
|
||||
public sealed class CreateTagHelperIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -17,14 +17,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public TagHelperDescriptor Descriptor { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -7,11 +7,11 @@ using Microsoft.AspNetCore.Razor.Language.Legacy;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
internal sealed class DeclarePreallocatedTagHelperAttributeIRNode : ExtensionIRNode
|
||||
internal sealed class DeclarePreallocatedTagHelperAttributeIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public override RazorDiagnosticCollection Diagnostics { get; } = ReadOnlyDiagnosticCollection.Instance;
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override bool HasDiagnostics => false;
|
||||
|
||||
|
|
@ -23,14 +23,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public HtmlAttributeValueStyle ValueStyle { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<DeclarePreallocatedTagHelperAttributeIRNode>(this, visitor);
|
||||
AcceptExtensionNode<DeclarePreallocatedTagHelperAttributeIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
|
|
@ -7,11 +7,11 @@ using Microsoft.AspNetCore.Razor.Language.Legacy;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
internal sealed class DeclarePreallocatedTagHelperHtmlAttributeIRNode : ExtensionIRNode
|
||||
internal sealed class DeclarePreallocatedTagHelperHtmlAttributeIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public override RazorDiagnosticCollection Diagnostics { get; } = ReadOnlyDiagnosticCollection.Instance;
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override bool HasDiagnostics => false;
|
||||
|
||||
|
|
@ -23,14 +23,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public HtmlAttributeValueStyle ValueStyle { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<DeclarePreallocatedTagHelperHtmlAttributeIRNode>(this, visitor);
|
||||
AcceptExtensionNode<DeclarePreallocatedTagHelperHtmlAttributeIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
|
|
@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class DeclareTagHelperFieldsIRNode : RazorIRNode
|
||||
public sealed class DeclareTagHelperFieldsIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -18,14 +18,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public ISet<string> UsedTagHelperTypeNames { get; set; } = new HashSet<string>(StringComparer.Ordinal);
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -6,11 +6,11 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class DefaultIRNodeCollection : RazorIRNodeCollection
|
||||
public sealed class DefaultIntermediateNodeCollection : IntermediateNodeCollection
|
||||
{
|
||||
private readonly List<RazorIRNode> _inner = new List<RazorIRNode>();
|
||||
private readonly List<IntermediateNode> _inner = new List<IntermediateNode>();
|
||||
|
||||
public override RazorIRNode this[int index]
|
||||
public override IntermediateNode this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public override bool IsReadOnly => false;
|
||||
|
||||
public override void Add(RazorIRNode item)
|
||||
public override void Add(IntermediateNode item)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
|
|
@ -51,12 +51,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
_inner.Clear();
|
||||
}
|
||||
|
||||
public override bool Contains(RazorIRNode item)
|
||||
public override bool Contains(IntermediateNode item)
|
||||
{
|
||||
return _inner.Contains(item);
|
||||
}
|
||||
|
||||
public override void CopyTo(RazorIRNode[] array, int arrayIndex)
|
||||
public override void CopyTo(IntermediateNode[] array, int arrayIndex)
|
||||
{
|
||||
if (array == null)
|
||||
{
|
||||
|
|
@ -75,12 +75,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
_inner.CopyTo(array, arrayIndex);
|
||||
}
|
||||
|
||||
public override IEnumerator<RazorIRNode> GetEnumerator()
|
||||
public override IEnumerator<IntermediateNode> GetEnumerator()
|
||||
{
|
||||
return _inner.GetEnumerator();
|
||||
}
|
||||
|
||||
public override int IndexOf(RazorIRNode item)
|
||||
public override int IndexOf(IntermediateNode item)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
|
|
@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
return _inner.IndexOf(item);
|
||||
}
|
||||
|
||||
public override void Insert(int index, RazorIRNode item)
|
||||
public override void Insert(int index, IntermediateNode item)
|
||||
{
|
||||
if (index < 0 || index > Count)
|
||||
{
|
||||
|
|
@ -105,7 +105,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
_inner.Insert(index, item);
|
||||
}
|
||||
|
||||
public override bool Remove(RazorIRNode item)
|
||||
public override bool Remove(IntermediateNode item)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
|
|
@ -6,17 +6,17 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
internal class DefaultRazorIRBuilder : RazorIRBuilder
|
||||
internal class DefaultRazorIntermediateNodeBuilder : IntermediateNodeBuilder
|
||||
{
|
||||
private readonly List<RazorIRNode> _stack;
|
||||
private readonly List<IntermediateNode> _stack;
|
||||
private int _depth;
|
||||
|
||||
public DefaultRazorIRBuilder()
|
||||
public DefaultRazorIntermediateNodeBuilder()
|
||||
{
|
||||
_stack = new List<RazorIRNode>();
|
||||
_stack = new List<IntermediateNode>();
|
||||
}
|
||||
|
||||
public override RazorIRNode Current
|
||||
public override IntermediateNode Current
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
}
|
||||
}
|
||||
|
||||
public override void Add(RazorIRNode node)
|
||||
public override void Add(IntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
Current.Children.Add(node);
|
||||
}
|
||||
|
||||
public override void Insert(int index, RazorIRNode node)
|
||||
public override void Insert(int index, IntermediateNode node)
|
||||
{
|
||||
if (index < 0 || index - Current.Children.Count > 0)
|
||||
{
|
||||
|
|
@ -52,9 +52,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
}
|
||||
}
|
||||
|
||||
public override RazorIRNode Build()
|
||||
public override IntermediateNode Build()
|
||||
{
|
||||
RazorIRNode node = null;
|
||||
IntermediateNode node = null;
|
||||
while (_depth > 0)
|
||||
{
|
||||
node = Pop();
|
||||
|
|
@ -63,18 +63,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
return node;
|
||||
}
|
||||
|
||||
public override RazorIRNode Pop()
|
||||
public override IntermediateNode Pop()
|
||||
{
|
||||
if (_depth == 0)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRBuilder_PopInvalid(nameof(Pop)));
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeBuilder_PopInvalid(nameof(Pop)));
|
||||
}
|
||||
|
||||
var node = _stack[--_depth];
|
||||
return node;
|
||||
}
|
||||
|
||||
public override void Push(RazorIRNode node)
|
||||
public override void Push(IntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -6,18 +6,18 @@ using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
internal sealed class DesignTimeDirectiveIRNode : ExtensionIRNode
|
||||
internal sealed class DesignTimeDirectiveIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<DesignTimeDirectiveIRNode>(this, visitor);
|
||||
AcceptExtensionNode<DesignTimeDirectiveIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
|
|
@ -6,7 +6,7 @@ using System.Linq;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class DirectiveIRNode : RazorIRNode
|
||||
public sealed class DirectiveIntermediateNode : IntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -45,11 +45,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Name { get; set; }
|
||||
|
||||
public IEnumerable<DirectiveTokenIRNode> Tokens => Children.OfType<DirectiveTokenIRNode>();
|
||||
public IEnumerable<DirectiveTokenIntermediateNode> Tokens => Children.OfType<DirectiveTokenIntermediateNode>();
|
||||
|
||||
public DirectiveDescriptor Descriptor { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
visitor.VisitDirective(this);
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class DirectiveTokenIRNode : RazorIRNode
|
||||
public sealed class DirectiveTokenIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -15,14 +15,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public DirectiveTokenDescriptor Descriptor { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
visitor.VisitDirectiveToken(this);
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class DocumentIRNode : RazorIRNode
|
||||
public sealed class DocumentIntermediateNode : IntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public string DocumentKind { get; set; }
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public CodeTarget Target { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -6,39 +6,39 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public static class DocumentIRNodeExtensions
|
||||
public static class DocumentIntermediateNodeExtensions
|
||||
{
|
||||
public static ClassDeclarationIRNode FindPrimaryClass(this DocumentIRNode node)
|
||||
public static ClassDeclarationIntermediateNode FindPrimaryClass(this DocumentIntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(node));
|
||||
}
|
||||
|
||||
return FindWithAnnotation<ClassDeclarationIRNode>(node, CommonAnnotations.PrimaryClass);
|
||||
return FindWithAnnotation<ClassDeclarationIntermediateNode>(node, CommonAnnotations.PrimaryClass);
|
||||
}
|
||||
|
||||
public static MethodDeclarationIRNode FindPrimaryMethod(this DocumentIRNode node)
|
||||
public static MethodDeclarationIntermediateNode FindPrimaryMethod(this DocumentIntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(node));
|
||||
}
|
||||
|
||||
return FindWithAnnotation<MethodDeclarationIRNode>(node, CommonAnnotations.PrimaryMethod);
|
||||
return FindWithAnnotation<MethodDeclarationIntermediateNode>(node, CommonAnnotations.PrimaryMethod);
|
||||
}
|
||||
|
||||
public static NamespaceDeclarationIRNode FindPrimaryNamespace(this DocumentIRNode node)
|
||||
public static NamespaceDeclarationIntermediateNode FindPrimaryNamespace(this DocumentIntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(node));
|
||||
}
|
||||
|
||||
return FindWithAnnotation<NamespaceDeclarationIRNode>(node, CommonAnnotations.PrimaryNamespace);
|
||||
return FindWithAnnotation<NamespaceDeclarationIntermediateNode>(node, CommonAnnotations.PrimaryNamespace);
|
||||
}
|
||||
|
||||
public static IReadOnlyList<RazorIRNodeReference> FindDirectiveReferences(this DocumentIRNode node, DirectiveDescriptor directive)
|
||||
public static IReadOnlyList<IntermediateNodeReference> FindDirectiveReferences(this DocumentIntermediateNode node, DirectiveDescriptor directive)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -55,7 +55,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
return visitor.Directives;
|
||||
}
|
||||
|
||||
private static T FindWithAnnotation<T>(RazorIRNode node, object annotation) where T : RazorIRNode
|
||||
private static T FindWithAnnotation<T>(IntermediateNode node, object annotation) where T : IntermediateNode
|
||||
{
|
||||
if (node is T target && object.ReferenceEquals(target.Annotations[annotation], annotation))
|
||||
{
|
||||
|
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
return null;
|
||||
}
|
||||
|
||||
private class DirectiveVisitor : RazorIRNodeWalker
|
||||
private class DirectiveVisitor : IntermediateNodeWalker
|
||||
{
|
||||
private readonly DirectiveDescriptor _directive;
|
||||
|
||||
|
|
@ -83,13 +83,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
_directive = directive;
|
||||
}
|
||||
|
||||
public List<RazorIRNodeReference> Directives = new List<RazorIRNodeReference>();
|
||||
public List<IntermediateNodeReference> Directives = new List<IntermediateNodeReference>();
|
||||
|
||||
public override void VisitDirective(DirectiveIRNode node)
|
||||
public override void VisitDirective(DirectiveIntermediateNode node)
|
||||
{
|
||||
if (_directive == node.Descriptor)
|
||||
{
|
||||
Directives.Add(new RazorIRNodeReference(Parent, node));
|
||||
Directives.Add(new IntermediateNodeReference(Parent, node));
|
||||
}
|
||||
|
||||
base.VisitDirective(node);
|
||||
|
|
@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class ExtensionIRNode : RazorIRNode
|
||||
public abstract class ExtensionIntermediateNode : IntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
|
|
@ -42,10 +42,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public abstract void WriteNode(CodeTarget target, CSharpRenderingContext context);
|
||||
|
||||
protected static void AcceptExtensionNode<TNode>(TNode node, RazorIRNodeVisitor visitor)
|
||||
where TNode : ExtensionIRNode
|
||||
protected static void AcceptExtensionNode<TNode>(TNode node, IntermediateNodeVisitor visitor)
|
||||
where TNode : ExtensionIntermediateNode
|
||||
{
|
||||
var typedVisitor = visitor as IExtensionIRNodeVisitor<TNode>;
|
||||
var typedVisitor = visitor as IExtensionIntermediateNodeVisitor<TNode>;
|
||||
if (typedVisitor == null)
|
||||
{
|
||||
visitor.VisitExtension(node);
|
||||
|
|
@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class FieldDeclarationIRNode : MemberDeclarationIRNode
|
||||
public sealed class FieldDeclarationIntermediateNode : MemberDeclarationIntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public IList<string> Modifiers { get; set; } = new List<string>();
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Type { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class HtmlAttributeIRNode : RazorIRNode
|
||||
public sealed class HtmlAttributeIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -17,14 +17,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Suffix { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class HtmlAttributeValueIRNode : RazorIRNode
|
||||
public sealed class HtmlAttributeValueIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -18,14 +18,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Prefix { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class HtmlContentIRNode : RazorIRNode
|
||||
public sealed class HtmlContentIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -18,20 +18,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
public override bool HasDiagnostics => _diagnostics != null && _diagnostics.Count > 0;
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public interface IExtensionIRNodeVisitor<TNode> where TNode : ExtensionIRNode
|
||||
public interface IExtensionIntermediateNodeVisitor<TNode> where TNode : ExtensionIntermediateNode
|
||||
{
|
||||
void VisitExtension(TNode node);
|
||||
}
|
||||
|
|
@ -3,18 +3,18 @@
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class RazorIRNode
|
||||
public abstract class IntermediateNode
|
||||
{
|
||||
public abstract ItemCollection Annotations { get; }
|
||||
|
||||
public abstract RazorDiagnosticCollection Diagnostics { get; }
|
||||
|
||||
public abstract RazorIRNodeCollection Children { get; }
|
||||
public abstract IntermediateNodeCollection Children { get; }
|
||||
|
||||
public abstract SourceSpan? Source { get; set; }
|
||||
|
||||
public abstract bool HasDiagnostics { get; }
|
||||
|
||||
public abstract void Accept(RazorIRNodeVisitor visitor);
|
||||
public abstract void Accept(IntermediateNodeVisitor visitor);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class IntermediateNodeBuilder
|
||||
{
|
||||
public static IntermediateNodeBuilder Create(IntermediateNode root)
|
||||
{
|
||||
if (root == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(root));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorIntermediateNodeBuilder();
|
||||
builder.Push(root);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public abstract IntermediateNode Current { get; }
|
||||
|
||||
public abstract void Add(IntermediateNode node);
|
||||
|
||||
public abstract void Insert(int index, IntermediateNode node);
|
||||
|
||||
public abstract IntermediateNode Build();
|
||||
|
||||
public abstract void Push(IntermediateNode node);
|
||||
|
||||
public abstract IntermediateNode Pop();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class IntermediateNodeCollection : IList<IntermediateNode>
|
||||
{
|
||||
public abstract IntermediateNode this[int index] { get; set; }
|
||||
|
||||
public abstract int Count { get; }
|
||||
|
||||
public abstract bool IsReadOnly { get; }
|
||||
|
||||
public abstract void Add(IntermediateNode item);
|
||||
|
||||
public abstract void Clear();
|
||||
|
||||
public abstract bool Contains(IntermediateNode item);
|
||||
|
||||
public abstract void CopyTo(IntermediateNode[] array, int arrayIndex);
|
||||
|
||||
public abstract IEnumerator<IntermediateNode> GetEnumerator();
|
||||
|
||||
public abstract int IndexOf(IntermediateNode item);
|
||||
|
||||
public abstract void Insert(int index, IntermediateNode item);
|
||||
|
||||
public abstract bool Remove(IntermediateNode item);
|
||||
|
||||
public abstract void RemoveAt(int index);
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,11 +7,11 @@ using System.Linq;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public static class RazorIRNodeExtensions
|
||||
public static class IntermediateNodeExtensions
|
||||
{
|
||||
private static readonly IReadOnlyList<RazorDiagnostic> EmptyDiagnostics = Array.Empty<RazorDiagnostic>();
|
||||
|
||||
public static IReadOnlyList<RazorDiagnostic> GetAllDiagnostics(this RazorIRNode node)
|
||||
public static IReadOnlyList<RazorDiagnostic> GetAllDiagnostics(this IntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
return diagnostics?.ToList() ?? EmptyDiagnostics;
|
||||
|
||||
void AddAllDiagnostics(RazorIRNode n)
|
||||
void AddAllDiagnostics(IntermediateNode n)
|
||||
{
|
||||
if (n.HasDiagnostics)
|
||||
{
|
||||
|
|
@ -6,9 +6,9 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public struct RazorIRNodeReference
|
||||
public struct IntermediateNodeReference
|
||||
{
|
||||
public RazorIRNodeReference(RazorIRNode parent, RazorIRNode node)
|
||||
public IntermediateNodeReference(IntermediateNode parent, IntermediateNode node)
|
||||
{
|
||||
if (parent == null)
|
||||
{
|
||||
|
|
@ -24,17 +24,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
Node = node;
|
||||
}
|
||||
|
||||
public void Deconstruct(out RazorIRNode parent, out RazorIRNode node)
|
||||
public void Deconstruct(out IntermediateNode parent, out IntermediateNode node)
|
||||
{
|
||||
parent = Parent;
|
||||
node = Node;
|
||||
}
|
||||
|
||||
public RazorIRNode Node { get; }
|
||||
public IntermediateNode Node { get; }
|
||||
|
||||
public RazorIRNode Parent { get; }
|
||||
public IntermediateNode Parent { get; }
|
||||
|
||||
public RazorIRNodeReference InsertAfter(RazorIRNode node)
|
||||
public IntermediateNodeReference InsertAfter(IntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -43,27 +43,27 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
if (Parent == null)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.IRNodeReference_NotInitialized);
|
||||
throw new InvalidOperationException(Resources.IntermediateNodeReference_NotInitialized);
|
||||
}
|
||||
|
||||
if (Parent.Children.IsReadOnly)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_CollectionIsReadOnly(Parent));
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_CollectionIsReadOnly(Parent));
|
||||
}
|
||||
|
||||
var index = Parent.Children.IndexOf(Node);
|
||||
if (index == -1)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_NodeNotFound(
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_NodeNotFound(
|
||||
Node,
|
||||
Parent));
|
||||
}
|
||||
|
||||
Parent.Children.Insert(index + 1, node);
|
||||
return new RazorIRNodeReference(Parent, node);
|
||||
return new IntermediateNodeReference(Parent, node);
|
||||
}
|
||||
|
||||
public void InsertAfter(IEnumerable<RazorIRNode> nodes)
|
||||
public void InsertAfter(IEnumerable<IntermediateNode> nodes)
|
||||
{
|
||||
if (nodes == null)
|
||||
{
|
||||
|
|
@ -72,18 +72,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
if (Parent == null)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.IRNodeReference_NotInitialized);
|
||||
throw new InvalidOperationException(Resources.IntermediateNodeReference_NotInitialized);
|
||||
}
|
||||
|
||||
if (Parent.Children.IsReadOnly)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_CollectionIsReadOnly(Parent));
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_CollectionIsReadOnly(Parent));
|
||||
}
|
||||
|
||||
var index = Parent.Children.IndexOf(Node);
|
||||
if (index == -1)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_NodeNotFound(
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_NodeNotFound(
|
||||
Node,
|
||||
Parent));
|
||||
}
|
||||
|
|
@ -94,7 +94,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
}
|
||||
}
|
||||
|
||||
public RazorIRNodeReference InsertBefore(RazorIRNode node)
|
||||
public IntermediateNodeReference InsertBefore(IntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -103,27 +103,27 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
if (Parent == null)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.IRNodeReference_NotInitialized);
|
||||
throw new InvalidOperationException(Resources.IntermediateNodeReference_NotInitialized);
|
||||
}
|
||||
|
||||
if (Parent.Children.IsReadOnly)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_CollectionIsReadOnly(Parent));
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_CollectionIsReadOnly(Parent));
|
||||
}
|
||||
|
||||
var index = Parent.Children.IndexOf(Node);
|
||||
if (index == -1)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_NodeNotFound(
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_NodeNotFound(
|
||||
Node,
|
||||
Parent));
|
||||
}
|
||||
|
||||
Parent.Children.Insert(index, node);
|
||||
return new RazorIRNodeReference(Parent, node);
|
||||
return new IntermediateNodeReference(Parent, node);
|
||||
}
|
||||
|
||||
public void InsertBefore(IEnumerable<RazorIRNode> nodes)
|
||||
public void InsertBefore(IEnumerable<IntermediateNode> nodes)
|
||||
{
|
||||
if (nodes == null)
|
||||
{
|
||||
|
|
@ -132,18 +132,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
if (Parent == null)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.IRNodeReference_NotInitialized);
|
||||
throw new InvalidOperationException(Resources.IntermediateNodeReference_NotInitialized);
|
||||
}
|
||||
|
||||
if (Parent.Children.IsReadOnly)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_CollectionIsReadOnly(Parent));
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_CollectionIsReadOnly(Parent));
|
||||
}
|
||||
|
||||
var index = Parent.Children.IndexOf(Node);
|
||||
if (index == -1)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_NodeNotFound(
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_NodeNotFound(
|
||||
Node,
|
||||
Parent));
|
||||
}
|
||||
|
|
@ -158,18 +158,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (Parent == null)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.IRNodeReference_NotInitialized);
|
||||
throw new InvalidOperationException(Resources.IntermediateNodeReference_NotInitialized);
|
||||
}
|
||||
|
||||
if (Parent.Children.IsReadOnly)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_CollectionIsReadOnly(Parent));
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_CollectionIsReadOnly(Parent));
|
||||
}
|
||||
|
||||
var index = Parent.Children.IndexOf(Node);
|
||||
if (index == -1)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_NodeNotFound(
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_NodeNotFound(
|
||||
Node,
|
||||
Parent));
|
||||
}
|
||||
|
|
@ -177,7 +177,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
Parent.Children.RemoveAt(index);
|
||||
}
|
||||
|
||||
public RazorIRNodeReference Replace(RazorIRNode node)
|
||||
public IntermediateNodeReference Replace(IntermediateNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
@ -186,24 +186,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
if (Parent == null)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.IRNodeReference_NotInitialized);
|
||||
throw new InvalidOperationException(Resources.IntermediateNodeReference_NotInitialized);
|
||||
}
|
||||
|
||||
if (Parent.Children.IsReadOnly)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_CollectionIsReadOnly(Parent));
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_CollectionIsReadOnly(Parent));
|
||||
}
|
||||
|
||||
var index = Parent.Children.IndexOf(Node);
|
||||
if (index == -1)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.FormatIRNodeReference_NodeNotFound(
|
||||
throw new InvalidOperationException(Resources.FormatIntermediateNodeReference_NodeNotFound(
|
||||
Node,
|
||||
Parent));
|
||||
}
|
||||
|
||||
Parent.Children[index] = node;
|
||||
return new RazorIRNodeReference(Parent, node);
|
||||
return new IntermediateNodeReference(Parent, node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,138 +3,138 @@
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class RazorIRNodeVisitor
|
||||
public abstract class IntermediateNodeVisitor
|
||||
{
|
||||
public virtual void Visit(RazorIRNode node)
|
||||
public virtual void Visit(IntermediateNode node)
|
||||
{
|
||||
node.Accept(this);
|
||||
}
|
||||
|
||||
public virtual void VisitDefault(RazorIRNode node)
|
||||
public virtual void VisitDefault(IntermediateNode node)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void VisitToken(RazorIRToken node)
|
||||
public virtual void VisitToken(IntermediateToken node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitDirectiveToken(DirectiveTokenIRNode node)
|
||||
public virtual void VisitDirectiveToken(DirectiveTokenIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitDirective(DirectiveIRNode node)
|
||||
public virtual void VisitDirective(DirectiveIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitMalformedDirective(MalformedDirectiveIRNode node)
|
||||
public virtual void VisitMalformedDirective(MalformedDirectiveIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitExtension(ExtensionIRNode node)
|
||||
public virtual void VisitExtension(ExtensionIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitCSharpCode(CSharpCodeIRNode node)
|
||||
public virtual void VisitCSharpCode(CSharpCodeIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitCSharpExpression(CSharpExpressionIRNode node)
|
||||
public virtual void VisitCSharpExpression(CSharpExpressionIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitHtmlAttributeValue(HtmlAttributeValueIRNode node)
|
||||
public virtual void VisitHtmlAttributeValue(HtmlAttributeValueIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitCSharpExpressionAttributeValue(CSharpExpressionAttributeValueIRNode node)
|
||||
public virtual void VisitCSharpExpressionAttributeValue(CSharpExpressionAttributeValueIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitCSharpCodeAttributeValue(CSharpCodeAttributeValueIRNode node)
|
||||
public virtual void VisitCSharpCodeAttributeValue(CSharpCodeAttributeValueIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitHtmlAttribute(HtmlAttributeIRNode node)
|
||||
public virtual void VisitHtmlAttribute(HtmlAttributeIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitClassDeclaration(ClassDeclarationIRNode node)
|
||||
public virtual void VisitClassDeclaration(ClassDeclarationIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitMethodDeclaration(MethodDeclarationIRNode node)
|
||||
public virtual void VisitMethodDeclaration(MethodDeclarationIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitFieldDeclaration(FieldDeclarationIRNode node)
|
||||
public virtual void VisitFieldDeclaration(FieldDeclarationIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitPropertyDeclaration(PropertyDeclarationIRNode node)
|
||||
public virtual void VisitPropertyDeclaration(PropertyDeclarationIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitDocument(DocumentIRNode node)
|
||||
public virtual void VisitDocument(DocumentIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitHtml(HtmlContentIRNode node)
|
||||
public virtual void VisitHtml(HtmlContentIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitNamespaceDeclaration(NamespaceDeclarationIRNode node)
|
||||
public virtual void VisitNamespaceDeclaration(NamespaceDeclarationIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitUsingStatement(UsingStatementIRNode node)
|
||||
public virtual void VisitUsingStatement(UsingStatementIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIRNode node)
|
||||
public virtual void VisitDeclareTagHelperFields(DeclareTagHelperFieldsIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitTagHelper(TagHelperIRNode node)
|
||||
public virtual void VisitTagHelper(TagHelperIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitTagHelperBody(TagHelperBodyIRNode node)
|
||||
public virtual void VisitTagHelperBody(TagHelperBodyIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitCreateTagHelper(CreateTagHelperIRNode node)
|
||||
public virtual void VisitCreateTagHelper(CreateTagHelperIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitSetTagHelperProperty(SetTagHelperPropertyIRNode node)
|
||||
public virtual void VisitSetTagHelperProperty(SetTagHelperPropertyIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
||||
public virtual void VisitAddTagHelperHtmlAttribute(AddTagHelperHtmlAttributeIRNode node)
|
||||
public virtual void VisitAddTagHelperHtmlAttribute(AddTagHelperHtmlAttributeIntermediateNode node)
|
||||
{
|
||||
VisitDefault(node);
|
||||
}
|
||||
|
|
@ -5,15 +5,15 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class RazorIRNodeWalker : RazorIRNodeVisitor
|
||||
public abstract class IntermediateNodeWalker : IntermediateNodeVisitor
|
||||
{
|
||||
private readonly Stack<RazorIRNode> _ancestors = new Stack<RazorIRNode>();
|
||||
private readonly Stack<IntermediateNode> _ancestors = new Stack<IntermediateNode>();
|
||||
|
||||
protected IEnumerable<RazorIRNode> Ancestors => _ancestors;
|
||||
protected IEnumerable<IntermediateNode> Ancestors => _ancestors;
|
||||
|
||||
protected RazorIRNode Parent => _ancestors.Count > 0 ? _ancestors.Peek() : null;
|
||||
protected IntermediateNode Parent => _ancestors.Count > 0 ? _ancestors.Peek() : null;
|
||||
|
||||
public override void VisitDefault(RazorIRNode node)
|
||||
public override void VisitDefault(IntermediateNode node)
|
||||
{
|
||||
var children = node.Children;
|
||||
if (node.Children.Count == 0)
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class RazorIRToken : RazorIRNode
|
||||
public sealed class IntermediateToken : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -17,14 +17,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public string Content { get; set; }
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public override bool HasDiagnostics => _diagnostics != null && _diagnostics.Count > 0;
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -6,7 +6,7 @@ using System.Linq;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class MalformedDirectiveIRNode : RazorIRNode
|
||||
public sealed class MalformedDirectiveIntermediateNode : IntermediateNode
|
||||
{
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
||||
|
|
@ -18,14 +18,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -33,11 +33,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Name { get; set; }
|
||||
|
||||
public IEnumerable<DirectiveTokenIRNode> Tokens => Children.OfType<DirectiveTokenIRNode>();
|
||||
public IEnumerable<DirectiveTokenIntermediateNode> Tokens => Children.OfType<DirectiveTokenIntermediateNode>();
|
||||
|
||||
public DirectiveDescriptor Descriptor { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
visitor.VisitMalformedDirective(this);
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class MemberDeclarationIRNode : RazorIRNode
|
||||
public abstract class MemberDeclarationIntermediateNode : IntermediateNode
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class MethodDeclarationIRNode : MemberDeclarationIRNode
|
||||
public sealed class MethodDeclarationIntermediateNode : MemberDeclarationIntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string ReturnType { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class NamespaceDeclarationIRNode : RazorIRNode
|
||||
public sealed class NamespaceDeclarationIntermediateNode : IntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -29,14 +29,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children { get; } = new DefaultIRNodeCollection();
|
||||
public override IntermediateNodeCollection Children { get; } = new DefaultIntermediateNodeCollection();
|
||||
|
||||
public override SourceSpan? Source { get; set; }
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Content { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class PropertyDeclarationIRNode : MemberDeclarationIRNode
|
||||
public sealed class PropertyDeclarationIntermediateNode : MemberDeclarationIntermediateNode
|
||||
{
|
||||
private ItemCollection _annotations;
|
||||
private RazorDiagnosticCollection _diagnostics;
|
||||
|
|
@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
{
|
||||
if (_diagnostics == null)
|
||||
{
|
||||
_diagnostics = new DefaultDiagnosticCollection();
|
||||
_diagnostics = new DefaultRazorDiagnosticCollection();
|
||||
}
|
||||
|
||||
return _diagnostics;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public IList<string> Modifiers { get; set; } = new List<string>();
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public string Type { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class RazorIRBuilder
|
||||
{
|
||||
public static RazorIRBuilder Create(RazorIRNode root)
|
||||
{
|
||||
if (root == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(root));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorIRBuilder();
|
||||
builder.Push(root);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public abstract RazorIRNode Current { get; }
|
||||
|
||||
public abstract void Add(RazorIRNode node);
|
||||
|
||||
public abstract void Insert(int index, RazorIRNode node);
|
||||
|
||||
public abstract RazorIRNode Build();
|
||||
|
||||
public abstract void Push(RazorIRNode node);
|
||||
|
||||
public abstract RazorIRNode Pop();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public abstract class RazorIRNodeCollection : IList<RazorIRNode>
|
||||
{
|
||||
public abstract RazorIRNode this[int index] { get; set; }
|
||||
|
||||
public abstract int Count { get; }
|
||||
|
||||
public abstract bool IsReadOnly { get; }
|
||||
|
||||
public abstract void Add(RazorIRNode item);
|
||||
|
||||
public abstract void Clear();
|
||||
|
||||
public abstract bool Contains(RazorIRNode item);
|
||||
|
||||
public abstract void CopyTo(RazorIRNode[] array, int arrayIndex);
|
||||
|
||||
public abstract IEnumerator<RazorIRNode> GetEnumerator();
|
||||
|
||||
public abstract int IndexOf(RazorIRNode item);
|
||||
|
||||
public abstract void Insert(int index, RazorIRNode item);
|
||||
|
||||
public abstract bool Remove(RazorIRNode item);
|
||||
|
||||
public abstract void RemoveAt(int index);
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,15 +7,15 @@ using System.Linq;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
public sealed class ReadOnlyIRNodeCollection : RazorIRNodeCollection
|
||||
public sealed class ReadOnlyIntermediateNodeCollection : IntermediateNodeCollection
|
||||
{
|
||||
public static readonly ReadOnlyIRNodeCollection Instance = new ReadOnlyIRNodeCollection();
|
||||
public static readonly ReadOnlyIntermediateNodeCollection Instance = new ReadOnlyIntermediateNodeCollection();
|
||||
|
||||
private ReadOnlyIRNodeCollection()
|
||||
private ReadOnlyIntermediateNodeCollection()
|
||||
{
|
||||
}
|
||||
|
||||
public override RazorIRNode this[int index]
|
||||
public override IntermediateNode this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
@ -41,7 +41,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public override bool IsReadOnly => true;
|
||||
|
||||
public override void Add(RazorIRNode item)
|
||||
public override void Add(IntermediateNode item)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
|
|
@ -56,12 +56,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public override bool Contains(RazorIRNode item)
|
||||
public override bool Contains(IntermediateNode item)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void CopyTo(RazorIRNode[] array, int arrayIndex)
|
||||
public override void CopyTo(IntermediateNode[] array, int arrayIndex)
|
||||
{
|
||||
if (array == null)
|
||||
{
|
||||
|
|
@ -80,12 +80,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public override IEnumerator<RazorIRNode> GetEnumerator()
|
||||
public override IEnumerator<IntermediateNode> GetEnumerator()
|
||||
{
|
||||
return Enumerable.Empty<RazorIRNode>().GetEnumerator();
|
||||
return Enumerable.Empty<IntermediateNode>().GetEnumerator();
|
||||
}
|
||||
|
||||
public override int IndexOf(RazorIRNode item)
|
||||
public override int IndexOf(IntermediateNode item)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
|
|
@ -95,7 +95,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
return -1;
|
||||
}
|
||||
|
||||
public override void Insert(int index, RazorIRNode item)
|
||||
public override void Insert(int index, IntermediateNode item)
|
||||
{
|
||||
if (index < 0 || index > Count)
|
||||
{
|
||||
|
|
@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public override bool Remove(RazorIRNode item)
|
||||
public override bool Remove(IntermediateNode item)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
|
|
@ -6,11 +6,11 @@ using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
{
|
||||
internal sealed class SetPreallocatedTagHelperPropertyIRNode : ExtensionIRNode
|
||||
internal sealed class SetPreallocatedTagHelperPropertyIntermediateNode : ExtensionIntermediateNode
|
||||
{
|
||||
public override RazorDiagnosticCollection Diagnostics => ReadOnlyDiagnosticCollection.Instance;
|
||||
|
||||
public override RazorIRNodeCollection Children => ReadOnlyIRNodeCollection.Instance;
|
||||
public override IntermediateNodeCollection Children => ReadOnlyIntermediateNodeCollection.Instance;
|
||||
|
||||
public override bool HasDiagnostics => false;
|
||||
|
||||
|
|
@ -28,14 +28,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
|||
|
||||
public bool IsIndexerNameMatch { get; set; }
|
||||
|
||||
public override void Accept(RazorIRNodeVisitor visitor)
|
||||
public override void Accept(IntermediateNodeVisitor visitor)
|
||||
{
|
||||
if (visitor == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(visitor));
|
||||
}
|
||||
|
||||
AcceptExtensionNode<SetPreallocatedTagHelperPropertyIRNode>(this, visitor);
|
||||
AcceptExtensionNode<SetPreallocatedTagHelperPropertyIntermediateNode>(this, visitor);
|
||||
}
|
||||
|
||||
public override void WriteNode(CodeTarget target, CSharpRenderingContext context)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue