|
// 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.
using Microsoft.CodeAnalysis.Shared.Extensions;
namespace Microsoft.CodeAnalysis;
internal static class SymbolDisplayPartKindTags
{
public static SymbolDisplayPartKind GetSymbolDisplayPartKind(this INamedTypeSymbol namedType)
{
if (namedType.IsEnumType())
return SymbolDisplayPartKind.EnumName;
if (namedType.IsDelegateType())
return SymbolDisplayPartKind.DelegateName;
if (namedType.IsInterfaceType())
return SymbolDisplayPartKind.InterfaceName;
if (namedType.IsRecord)
return namedType.IsValueType ? SymbolDisplayPartKind.RecordStructName : SymbolDisplayPartKind.RecordClassName;
if (namedType.IsStructType())
return SymbolDisplayPartKind.StructName;
if (namedType.IsModuleType())
return SymbolDisplayPartKind.ModuleName;
if (namedType.IsErrorType())
return SymbolDisplayPartKind.ErrorTypeName;
return SymbolDisplayPartKind.ClassName;
}
public static string GetTag(SymbolDisplayPartKind kind)
=> kind switch
{
SymbolDisplayPartKind.AliasName => TextTags.Alias,
SymbolDisplayPartKind.AssemblyName => TextTags.Assembly,
SymbolDisplayPartKind.ClassName => TextTags.Class,
SymbolDisplayPartKind.DelegateName => TextTags.Delegate,
SymbolDisplayPartKind.EnumName => TextTags.Enum,
SymbolDisplayPartKind.ErrorTypeName => TextTags.ErrorType,
SymbolDisplayPartKind.EventName => TextTags.Event,
SymbolDisplayPartKind.FieldName => TextTags.Field,
SymbolDisplayPartKind.InterfaceName => TextTags.Interface,
SymbolDisplayPartKind.Keyword => TextTags.Keyword,
SymbolDisplayPartKind.LabelName => TextTags.Label,
SymbolDisplayPartKind.LineBreak => TextTags.LineBreak,
SymbolDisplayPartKind.NumericLiteral => TextTags.NumericLiteral,
SymbolDisplayPartKind.StringLiteral => TextTags.StringLiteral,
SymbolDisplayPartKind.LocalName => TextTags.Local,
SymbolDisplayPartKind.MethodName => TextTags.Method,
SymbolDisplayPartKind.ModuleName => TextTags.Module,
SymbolDisplayPartKind.NamespaceName => TextTags.Namespace,
SymbolDisplayPartKind.Operator => TextTags.Operator,
SymbolDisplayPartKind.ParameterName => TextTags.Parameter,
SymbolDisplayPartKind.PropertyName => TextTags.Property,
SymbolDisplayPartKind.Punctuation => TextTags.Punctuation,
SymbolDisplayPartKind.Space => TextTags.Space,
SymbolDisplayPartKind.StructName => TextTags.Struct,
SymbolDisplayPartKind.AnonymousTypeIndicator => TextTags.AnonymousTypeIndicator,
SymbolDisplayPartKind.Text => TextTags.Text,
SymbolDisplayPartKind.TypeParameterName => TextTags.TypeParameter,
SymbolDisplayPartKind.RangeVariableName => TextTags.RangeVariable,
SymbolDisplayPartKind.EnumMemberName => TextTags.EnumMember,
SymbolDisplayPartKind.ExtensionMethodName => TextTags.ExtensionMethod,
SymbolDisplayPartKind.ConstantName => TextTags.Constant,
SymbolDisplayPartKind.RecordClassName => TextTags.Record,
SymbolDisplayPartKind.RecordStructName => TextTags.RecordStruct,
_ => string.Empty,
};
}
|