| File: Language\Legacy\TagHelperSpanVisitor.cs | Web Access |
| Project: src\roslyn\src\Razor\src\Compiler\Microsoft.CodeAnalysis.Razor.Compiler\src\Microsoft.CodeAnalysis.Razor.Compiler.csproj (Microsoft.CodeAnalysis.Razor.Compiler) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; namespace Microsoft.AspNetCore.Razor.Language.Legacy; internal sealed class TagHelperSpanVisitor : SyntaxWalker { private readonly RazorSourceDocument _source; private readonly ImmutableArray<TagHelperSpanInternal>.Builder _spans; private TagHelperSpanVisitor(RazorSourceDocument source, ImmutableArray<TagHelperSpanInternal>.Builder spans) { _source = source; _spans = spans; } public static ImmutableArray<TagHelperSpanInternal> VisitRoot(RazorSyntaxTree syntaxTree) { using var _ = ArrayBuilderPool<TagHelperSpanInternal>.GetPooledObject(out var builder); var visitor = new TagHelperSpanVisitor(syntaxTree.Source, builder); visitor.Visit(syntaxTree.Root); return builder.ToImmutableAndClear(); } public override void VisitMarkupTagHelperElement(MarkupTagHelperElementSyntax node) { var span = new TagHelperSpanInternal(node.GetSourceSpan(_source), node.TagHelperInfo.BindingResult); _spans.Add(span); base.VisitMarkupTagHelperElement(node); } }