File: src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.cs
Web Access
Project: src\src\ExpressionEvaluator\CSharp\Source\ResultProvider\Portable\Microsoft.CodeAnalysis.CSharp.ResultProvider.csproj (Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.ResultProvider)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.ExpressionEvaluator;
using Microsoft.VisualStudio.Debugger.ComponentInterfaces;
using Type = Microsoft.VisualStudio.Debugger.Metadata.Type;
 
namespace Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator
{
    [DkmReportNonFatalWatsonException(ExcludeExceptionType = typeof(NotImplementedException)), DkmContinueCorruptingException]
    internal sealed class CSharpResultProvider : ResultProvider
    {
        public CSharpResultProvider()
            : this(new CSharpFormatter())
        {
        }
 
        private CSharpResultProvider(CSharpFormatter formatter)
            : this(formatter, formatter)
        {
        }
 
        internal CSharpResultProvider(IDkmClrFormatter2 formatter2, IDkmClrFullNameProvider fullNameProvider)
            : base(formatter2, fullNameProvider)
        {
        }
 
        internal override string StaticMembersString
        {
            get { return Resources.StaticMembers; }
        }
 
        internal override bool IsPrimitiveType(Type type)
        {
            return type.IsPredefinedType();
        }
 
#nullable enable
        internal override bool TryGetGeneratedMemberDisplay(string metadataName, [NotNullWhen(true)] out string? displayName)
        {
            if (!GeneratedNameParser.TryParseGeneratedName(metadataName, out var kind, out var openBracketOffset, out var closeBracketOffset))
            {
                displayName = null;
                return false;
            }
 
            switch (kind)
            {
                case GeneratedNameKind.PrimaryConstructorParameter:
                    // display the member using the unmangled name:
                    displayName = metadataName.Substring(openBracketOffset + 1, closeBracketOffset - openBracketOffset - 1);
                    return true;
 
                default:
                    // Do not display other generated members.
                    // Set the display name to metadata name for raw view.
                    displayName = null;
                    return false;
            }
        }
    }
}