// 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.Generic; using Microsoft.AspNetCore.Razor.Language.Intermediate; namespace Microsoft.AspNetCore.Razor.Language { internal class DirectiveRemovalOptimizationPass : IntermediateNodePassBase, IRazorOptimizationPass { public override int Order => DefaultFeatureOrder + 50; protected override void ExecuteCore(RazorCodeDocument codeDocument, DocumentIntermediateNode documentNode) { var visitor = new Visitor(); visitor.VisitDocument(documentNode); foreach (var nodeReference in visitor.DirectiveNodes) { nodeReference.Remove(); } } private class Visitor : IntermediateNodeWalker { public IList DirectiveNodes { get; } = new List(); public override void VisitDirective(DirectiveIntermediateNode node) { DirectiveNodes.Add(new IntermediateNodeReference(Parent, node)); } } } }