|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
#nullable disable
using System;
using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
namespace Microsoft.AspNetCore.Razor.Language.Intermediate;
public abstract class ExtensionIntermediateNode : IntermediateNode
{
public abstract void WriteNode(CodeTarget target, CodeRenderingContext context);
protected static void AcceptExtensionNode<TNode>(TNode node, IntermediateNodeVisitor visitor)
where TNode : ExtensionIntermediateNode
{
var typedVisitor = visitor as IExtensionIntermediateNodeVisitor<TNode>;
if (typedVisitor == null)
{
visitor.VisitExtension(node);
}
else
{
typedVisitor.VisitExtension(node);
}
}
protected void ReportMissingCodeTargetExtension<TDependency>(CodeRenderingContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
var documentKind = context.DocumentKind ?? string.Empty;
context.AddDiagnostic(
RazorDiagnosticFactory.CreateCodeTarget_UnsupportedExtension(
documentKind,
typeof(TDependency)));
}
}
|