1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 namespace Microsoft.CSharp.RuntimeBinder.Syntax
6 {
7     internal enum PredefinedType : uint
8     {
9         PT_BYTE,
10         PT_SHORT,
11         PT_INT,
12         PT_LONG,
13         PT_FLOAT,
14         PT_DOUBLE,
15         PT_DECIMAL,
16         PT_CHAR,
17         PT_BOOL,
18 
19         // "simple" types are certain types that the compiler knows about for conversion and operator purposes.ses.
20         // Keep these first so that we can build conversion tables on their ordinals... Don't change the orderer
21         // of the simple types because it will mess up conversion tables.
22         // The following Quasi-Simple types are considered simple, except they are non-CLS compliant
23         PT_SBYTE,
24         PT_USHORT,
25         PT_UINT,
26         PT_ULONG,
27 
28         // The special "pointer-sized int" types. Note that this are not considered numeric types from the compiler's point of view --
29         // they are special only in that they have special signature encodings.
30         FirstNonSimpleType,
31         PT_INTPTR = FirstNonSimpleType,
32         PT_UINTPTR,
33 
34         PT_OBJECT,
35 
36         // THE ORDER ABOVE HERE IS IMPORTANT!!!  It is used in tables in both fncbind and ilgen
37         PT_STRING,
38         PT_DELEGATE,
39         PT_MULTIDEL,
40         PT_ARRAY,
41         PT_TYPE,
42         PT_VALUE,
43         PT_ENUM,
44         PT_DATETIME,
45 
46         // predefined types for the BCL
47         PT_IENUMERABLE,
48 
49         // Generic variants of enumerator interfaces
50         PT_G_IENUMERABLE,
51 
52         // Nullable<T>
53         PT_G_OPTIONAL,
54 
55         // LINQ
56         PT_G_IQUERYABLE,
57         PT_G_ICOLLECTION,
58         PT_G_ILIST,
59         PT_G_EXPRESSION,
60         PT_EXPRESSION,
61         PT_BINARYEXPRESSION,
62         PT_UNARYEXPRESSION,
63         PT_CONSTANTEXPRESSION,
64         PT_PARAMETEREXPRESSION,
65         PT_MEMBEREXPRESSION,
66         PT_METHODCALLEXPRESSION,
67         PT_NEWEXPRESSION,
68         PT_NEWARRAYEXPRESSION,
69         PT_INVOCATIONEXPRESSION,
70         PT_FIELDINFO,
71         PT_METHODINFO,
72         PT_CONSTRUCTORINFO,
73         PT_PROPERTYINFO,
74         PT_MISSING,
75 
76         PT_G_IREADONLYLIST,
77         PT_G_IREADONLYCOLLECTION,
78         PT_FUNC,
79         PT_COUNT,
80         PT_VOID,             // (special case)
81 
82         PT_UNDEFINEDINDEX = 0xffffffff,
83     }
84 }
85