File: Symbols\TypeKind.cs
Web Access
Project: src\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.
 
using System.Diagnostics;
using Roslyn.Utilities;
 
namespace Microsoft.CodeAnalysis
{
    /// <summary>
    /// Enumeration for possible kinds of type symbols.
    /// </summary>
    public enum TypeKind : byte
    {
        /// <summary>
        /// Type's kind is undefined.
        /// </summary>
        Unknown = 0,
 
        /// <summary>
        /// Type is an array type.
        /// </summary>
        Array = 1,
 
        /// <summary>
        /// Type is a class.
        /// </summary>
        Class = 2,
 
        /// <summary>
        /// Type is a delegate.
        /// </summary>
        Delegate = 3,
 
        /// <summary>
        /// Type is dynamic.
        /// </summary>
        Dynamic = 4,
 
        /// <summary>
        /// Type is an enumeration.
        /// </summary>
        Enum = 5,
 
        /// <summary>
        /// Type is an error type.
        /// </summary>
        Error = 6,
 
        /// <summary>
        /// Type is an interface.
        /// </summary>
        Interface = 7,
 
        /// <summary>
        /// Type is a module.
        /// </summary>
        Module = 8,
 
        /// <summary>
        /// Type is a pointer.
        /// </summary>
        Pointer = 9,
 
        /// <summary>
        /// Type is a C# struct or VB Structure
        /// </summary>
        Struct = 10,
 
        /// <summary>
        /// Type is a C# struct or VB Structure
        /// </summary>
        Structure = 10,
 
        /// <summary>
        /// Type is a type parameter.
        /// </summary>
        TypeParameter = 11,
 
        /// <summary>
        /// Type is an interactive submission.
        /// </summary>
        Submission = 12,
 
        /// <summary>
        /// Type is a function pointer.
        /// </summary>
        FunctionPointer = 13,
    }
 
    internal static class TypeKindInternal
    {
        /// <summary>
        /// Internal Symbol representing the inferred signature of
        /// a lambda expression or method group.
        /// </summary>
        internal const TypeKind FunctionType = (TypeKind)255;
 
#if DEBUG
        static TypeKindInternal()
        {
            Debug.Assert(!EnumUtilities.ContainsValue(FunctionType));
        }
#endif
    }
}