| File: Compilation\Expression.cs | Web Access |
| Project: src\roslyn\src\Compilers\Core\Portable\Microsoft.CodeAnalysis.csproj (Microsoft.CodeAnalysis) |
// 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. namespace Microsoft.CodeAnalysis.Operations { internal class Expression { public static ConstantValue SynthesizeNumeric(ITypeSymbol type, int value) { switch (type.SpecialType) { case SpecialType.System_Int32: return ConstantValue.Create(value); case SpecialType.System_Int64: return ConstantValue.Create((long)value); case SpecialType.System_UInt32: return ConstantValue.Create((uint)value); case SpecialType.System_UInt64: return ConstantValue.Create((ulong)value); case SpecialType.System_UInt16: return ConstantValue.Create((ushort)value); case SpecialType.System_Int16: return ConstantValue.Create((short)value); case SpecialType.System_SByte: return ConstantValue.Create((sbyte)value); case SpecialType.System_Byte: return ConstantValue.Create((byte)value); case SpecialType.System_Char: return ConstantValue.Create((char)value); case SpecialType.System_Boolean: return ConstantValue.Create(value != 0); case SpecialType.System_Single: return ConstantValue.Create((float)value); case SpecialType.System_Double: return ConstantValue.Create((double)value); case SpecialType.System_Object: return ConstantValue.Create(1, ConstantValueTypeDiscriminator.Int32); } if (type.TypeKind == TypeKind.Enum) { return SynthesizeNumeric(((INamedTypeSymbol)type).EnumUnderlyingType!, value); } return ConstantValue.Bad; } } }