| File: Language\Components\BuilderVariableName.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; using System.Diagnostics; using Microsoft.AspNetCore.Razor.Language.CodeGeneration; namespace Microsoft.AspNetCore.Razor.Language.Components; [DebuggerDisplay($"{{{nameof(GetDebuggerDisplay)}(),nq}}")] internal readonly struct BuilderVariableName(int index) : IWriteableValue { public static BuilderVariableName Default => new(1); public int Index { get; } = index; public int Length => Index switch { 1 => ComponentsApi.RenderTreeBuilder.BuilderParameter.Length, _ => ComponentsApi.RenderTreeBuilder.BuilderParameter.Length + Index.CountDigits() }; public void WriteTo(CodeWriter writer) { if (Index == 1) { writer.Write(ComponentsApi.RenderTreeBuilder.BuilderParameter); } else { writer.Write(ComponentsApi.RenderTreeBuilder.BuilderParameter); writer.WriteIntegerLiteral(Index); } } internal string GetDebuggerDisplay() => Index == 1 ? ComponentsApi.RenderTreeBuilder.BuilderParameter : $"{ComponentsApi.RenderTreeBuilder.BuilderParameter}{Index}"; }