// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Immutable; namespace Microsoft.CodeAnalysis.ExpressionEvaluator { internal static class SpecialTypeExtensions { internal static QualifiedTypeSignature GetTypeSignature(this SpecialType type) { QualifiedTypeSignature signature; s_typeSignatures.TryGetValue(type, out signature); return signature; } private static readonly ImmutableDictionary s_typeSignatures = GetTypeSignatures(); private static ImmutableDictionary GetTypeSignatures() { var systemNamespace = new QualifiedTypeSignature(null, "System"); var builder = ImmutableDictionary.CreateBuilder(); builder.Add(SpecialType.System_Void, new QualifiedTypeSignature(systemNamespace, "Void")); builder.Add(SpecialType.System_Boolean, new QualifiedTypeSignature(systemNamespace, "Boolean")); builder.Add(SpecialType.System_Char, new QualifiedTypeSignature(systemNamespace, "Char")); builder.Add(SpecialType.System_SByte, new QualifiedTypeSignature(systemNamespace, "SByte")); builder.Add(SpecialType.System_Byte, new QualifiedTypeSignature(systemNamespace, "Byte")); builder.Add(SpecialType.System_Int16, new QualifiedTypeSignature(systemNamespace, "Int16")); builder.Add(SpecialType.System_UInt16, new QualifiedTypeSignature(systemNamespace, "UInt16")); builder.Add(SpecialType.System_Int32, new QualifiedTypeSignature(systemNamespace, "Int32")); builder.Add(SpecialType.System_UInt32, new QualifiedTypeSignature(systemNamespace, "UInt32")); builder.Add(SpecialType.System_Int64, new QualifiedTypeSignature(systemNamespace, "Int64")); builder.Add(SpecialType.System_UInt64, new QualifiedTypeSignature(systemNamespace, "UInt64")); builder.Add(SpecialType.System_Single, new QualifiedTypeSignature(systemNamespace, "Single")); builder.Add(SpecialType.System_Double, new QualifiedTypeSignature(systemNamespace, "Double")); builder.Add(SpecialType.System_String, new QualifiedTypeSignature(systemNamespace, "String")); builder.Add(SpecialType.System_Object, new QualifiedTypeSignature(systemNamespace, "Object")); builder.Add(SpecialType.System_Decimal, new QualifiedTypeSignature(systemNamespace, "Decimal")); builder.Add(SpecialType.System_IntPtr, new QualifiedTypeSignature(systemNamespace, "IntPtr")); builder.Add(SpecialType.System_UIntPtr, new QualifiedTypeSignature(systemNamespace, "UIntPtr")); builder.Add(SpecialType.System_TypedReference, new QualifiedTypeSignature(systemNamespace, "TypedReference")); builder.Add(SpecialType.System_Nullable_T, new QualifiedTypeSignature(systemNamespace, "Nullable")); return builder.ToImmutable(); } } }