|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Linq;
using System.Threading;
using Microsoft.AspNetCore.Razor.Language.Intermediate;
namespace Microsoft.AspNetCore.Razor.Language.Extensions;
public sealed class InheritsDirectivePass : IntermediateNodePassBase, IRazorDirectiveClassifierPass
{
protected override void ExecuteCore(
RazorCodeDocument codeDocument,
DocumentIntermediateNode documentNode,
CancellationToken cancellationToken)
{
var @class = documentNode.FindPrimaryClass();
if (@class == null)
{
return;
}
foreach (var inherits in documentNode.FindDirectiveReferences(InheritsDirective.Directive))
{
var token = inherits.Node.Tokens.FirstOrDefault();
if (token != null)
{
var source = codeDocument.ParserOptions.DesignTime ? null : token.Source;
@class.BaseType = new BaseTypeWithModel(token.Content, source);
break;
}
}
}
}
|