File: System\Xml\Xsl\QIL\QilReference.cs
Web Access
Project: src\src\libraries\System.Private.Xml\src\System.Private.Xml.csproj (System.Private.Xml)
// 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 System.Diagnostics.CodeAnalysis;
 
namespace System.Xml.Xsl.Qil
{
    /// <summary>
    /// View over a Qil node which is the target of a reference (functions, variables, parameters).
    /// </summary>
    internal class QilReference : QilNode
    {
        // Names longer than 1023 characters cause AV in cscompee.dll, see VSWhidbey 485526
        // So we set the internal limit to 1000. Needs to be lower since we might later append
        //   few characters (for example "(2)") if we end up with two same named methods after
        //   the truncation.
        private const int MaxDebugNameLength = 1000;
 
        private string? _debugName;
 
        //-----------------------------------------------
        // Constructor
        //-----------------------------------------------
 
        /// <summary>
        /// Construct a reference
        /// </summary>
        public QilReference(QilNodeType nodeType) : base(nodeType)
        {
        }
 
 
        //-----------------------------------------------
        // QilReference methods
        //-----------------------------------------------
 
        /// <summary>
        /// Name of this reference, preserved for debugging (may be null).
        /// </summary>
        [DisallowNull]
        public string? DebugName
        {
            get { return _debugName; }
            set
            {
                if (value.Length > MaxDebugNameLength)
                    value = value.Substring(0, MaxDebugNameLength);
 
                _debugName = value;
            }
        }
    }
}