| File: Symbols\SpecialTypeExtensions.cs | Web Access |
| Project: src\roslyn\src\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj (Microsoft.CodeAnalysis.CSharp) |
// 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 namespace Microsoft.CodeAnalysis.CSharp.Symbols { internal static class SpecialTypeExtensions { public static bool CanBeConst(this SpecialType specialType) { switch (specialType) { case SpecialType.System_Boolean: case SpecialType.System_Char: case SpecialType.System_SByte: case SpecialType.System_Int16: case SpecialType.System_Int32: case SpecialType.System_Int64: case SpecialType.System_Byte: case SpecialType.System_UInt16: case SpecialType.System_UInt32: case SpecialType.System_UInt64: case SpecialType.System_Single: case SpecialType.System_Double: case SpecialType.System_Decimal: case SpecialType.System_String: return true; default: return false; } } public static bool IsValidVolatileFieldType(this SpecialType specialType) { switch (specialType) { case SpecialType.System_Byte: case SpecialType.System_SByte: case SpecialType.System_Int16: case SpecialType.System_UInt16: case SpecialType.System_Int32: case SpecialType.System_UInt32: case SpecialType.System_Char: case SpecialType.System_Single: case SpecialType.System_Boolean: case SpecialType.System_IntPtr: case SpecialType.System_UIntPtr: return true; default: return false; } } public static int FixedBufferElementSizeInBytes(this SpecialType specialType) { // SizeInBytes() handles decimal (contrary to the language spec). But decimal is not allowed // as a fixed buffer element type. return specialType == SpecialType.System_Decimal ? 0 : specialType.SizeInBytes(); } } }