annotate dmd2/mtype.h @ 1650:40bd4a0d4870

Update to work with LLVM 2.7. Removed use of dyn_cast, llvm no compiles without exceptions and rtti by default. We do need exceptions for the libconfig stuff, but rtti isn't necessary (anymore). Debug info needs to be rewritten, as in LLVM 2.7 the format has completely changed. To have something to look at while rewriting, the old code has been wrapped inside #ifndef DISABLE_DEBUG_INFO , this means that you have to define this to compile at the moment. Updated tango 0.99.9 patch to include updated EH runtime code, which is needed for LLVM 2.7 as well.
author Tomas Lindquist Olsen
date Wed, 19 May 2010 12:42:32 +0200
parents e4f7b5d9c68a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
1
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
2 // Compiler implementation of the D programming language
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
3 // Copyright (c) 1999-2007 by Digital Mars
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
4 // All Rights Reserved
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
5 // written by Walter Bright
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
6 // http://www.digitalmars.com
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
7 // License for redistribution is by either the Artistic License
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
9 // See the included readme.txt for details.
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
10
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
11 #ifndef DMD_MTYPE_H
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
12 #define DMD_MTYPE_H
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
13
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
14 #ifdef __DMC__
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
15 #pragma once
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
16 #endif /* __DMC__ */
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
17
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
18 #include "root.h"
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
19 #include "stringtable.h"
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
20
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
21 #include "arraytypes.h"
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
22 #include "expression.h"
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
23
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
24 #if IN_LLVM
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
25 #include "../ir/irfuncty.h"
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
26 namespace llvm { class Type; }
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
27 class Ir;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
28 class IrType;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
29 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
30
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
31 struct Scope;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
32 struct Identifier;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
33 struct Expression;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
34 struct StructDeclaration;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
35 struct ClassDeclaration;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
36 struct VarDeclaration;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
37 struct EnumDeclaration;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
38 struct TypedefDeclaration;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
39 struct TypeInfoDeclaration;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
40 struct Dsymbol;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
41 struct TemplateInstance;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
42 struct CppMangleState;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
43 enum LINK;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
44
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
45 struct TypeBasic;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
46 struct HdrGenState;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
47 struct Argument;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
48
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
49 // Back end
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
50 #if IN_GCC
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
51 union tree_node; typedef union tree_node TYPE;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
52 typedef TYPE type;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
53 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
54
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
55 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
56 typedef struct TYPE type;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
57 struct Symbol;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
58 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
59
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
60
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
61 enum ENUMTY
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
62 {
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
63 Tarray, // slice array, aka T[]
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
64 Tsarray, // static array, aka T[dimension]
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
65 Tnarray, // resizable array, aka T[new]
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
66 Taarray, // associative array, aka T[type]
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
67 Tpointer,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
68 Treference,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
69 Tfunction,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
70 Tident,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
71 Tclass,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
72 Tstruct,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
73 Tenum,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
74 Ttypedef,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
75 Tdelegate,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
76
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
77 Tnone,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
78 Tvoid,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
79 Tint8,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
80 Tuns8,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
81 Tint16,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
82 Tuns16,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
83 Tint32,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
84 Tuns32,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
85 Tint64,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
86 Tuns64,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
87 Tfloat32,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
88 Tfloat64,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
89 Tfloat80,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
90
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
91 Timaginary32,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
92 Timaginary64,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
93 Timaginary80,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
94
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
95 Tcomplex32,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
96 Tcomplex64,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
97 Tcomplex80,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
98
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
99 Tbit,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
100 Tbool,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
101 Tchar,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
102 Twchar,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
103 Tdchar,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
104
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
105 Terror,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
106 Tinstance,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
107 Ttypeof,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
108 Ttuple,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
109 Tslice,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
110 Treturn,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
111 TMAX
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
112 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
113 typedef unsigned char TY; // ENUMTY
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
114
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
115 #define Tascii Tchar
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
116
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
117 extern int Tsize_t;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
118 extern int Tptrdiff_t;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
119
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
120
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
121 struct Type : Object
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
122 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
123 TY ty;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
124 unsigned char mod; // modifiers MODxxxx
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
125 /* pick this order of numbers so switch statements work better
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
126 */
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
127 #define MODconst 1 // type is const
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
128 #define MODinvariant 4 // type is invariant
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
129 #define MODshared 2 // type is shared
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
130 char *deco;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
131
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
132 /* These are cached values that are lazily evaluated by constOf(), invariantOf(), etc.
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
133 * They should not be referenced by anybody but mtype.c.
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
134 * They can be NULL if not lazily evaluated yet.
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
135 * Note that there is no "shared immutable", because that is just immutable
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
136 */
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
137
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
138 Type *cto; // MODconst ? mutable version of this type : const version
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
139 Type *ito; // MODinvariant ? mutable version of this type : invariant version
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
140 Type *sto; // MODshared ? mutable version of this type : shared mutable version
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
141 Type *scto; // MODshared|MODconst ? mutable version of this type : shared const version
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
142
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
143 Type *pto; // merged pointer to this type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
144 Type *rto; // reference to this type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
145 Type *arrayof; // array of this type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
146 TypeInfoDeclaration *vtinfo; // TypeInfo object for this Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
147
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
148 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
149 type *ctype; // for back end
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
150 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
151
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
152 #define tvoid basic[Tvoid]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
153 #define tint8 basic[Tint8]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
154 #define tuns8 basic[Tuns8]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
155 #define tint16 basic[Tint16]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
156 #define tuns16 basic[Tuns16]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
157 #define tint32 basic[Tint32]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
158 #define tuns32 basic[Tuns32]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
159 #define tint64 basic[Tint64]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
160 #define tuns64 basic[Tuns64]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
161 #define tfloat32 basic[Tfloat32]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
162 #define tfloat64 basic[Tfloat64]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
163 #define tfloat80 basic[Tfloat80]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
164
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
165 #define timaginary32 basic[Timaginary32]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
166 #define timaginary64 basic[Timaginary64]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
167 #define timaginary80 basic[Timaginary80]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
168
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
169 #define tcomplex32 basic[Tcomplex32]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
170 #define tcomplex64 basic[Tcomplex64]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
171 #define tcomplex80 basic[Tcomplex80]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
172
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
173 #define tbit basic[Tbit]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
174 #define tbool basic[Tbool]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
175 #define tchar basic[Tchar]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
176 #define twchar basic[Twchar]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
177 #define tdchar basic[Tdchar]
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
178
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
179 // Some special types
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
180 #define tshiftcnt tint32 // right side of shift expression
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
181 // #define tboolean tint32 // result of boolean expression
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
182 #define tboolean tbool // result of boolean expression
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
183 #define tindex tint32 // array/ptr index
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
184 static Type *tvoidptr; // void*
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
185 #define terror basic[Terror] // for error recovery
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
186
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
187 #define tsize_t basic[Tsize_t] // matches size_t alias
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
188 #define tptrdiff_t basic[Tptrdiff_t] // matches ptrdiff_t alias
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
189 #define thash_t tsize_t // matches hash_t alias
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
190
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
191 static ClassDeclaration *typeinfo;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
192 static ClassDeclaration *typeinfoclass;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
193 static ClassDeclaration *typeinfointerface;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
194 static ClassDeclaration *typeinfostruct;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
195 static ClassDeclaration *typeinfotypedef;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
196 static ClassDeclaration *typeinfopointer;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
197 static ClassDeclaration *typeinfoarray;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
198 static ClassDeclaration *typeinfostaticarray;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
199 static ClassDeclaration *typeinfoassociativearray;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
200 static ClassDeclaration *typeinfoenum;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
201 static ClassDeclaration *typeinfofunction;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
202 static ClassDeclaration *typeinfodelegate;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
203 static ClassDeclaration *typeinfotypelist;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
204 static ClassDeclaration *typeinfoconst;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
205 static ClassDeclaration *typeinfoinvariant;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
206 static ClassDeclaration *typeinfoshared;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
207
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
208 static Type *basic[TMAX];
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
209 static unsigned char mangleChar[TMAX];
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
210 static unsigned char sizeTy[TMAX];
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
211 static StringTable stringtable;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
212 #if IN_LLVM
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
213 static StringTable deco_stringtable;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
214 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
215
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
216 // These tables are for implicit conversion of binary ops;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
217 // the indices are the type of operand one, followed by operand two.
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
218 static unsigned char impcnvResult[TMAX][TMAX];
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
219 static unsigned char impcnvType1[TMAX][TMAX];
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
220 static unsigned char impcnvType2[TMAX][TMAX];
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
221
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
222 // If !=0, give warning on implicit conversion
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
223 static unsigned char impcnvWarn[TMAX][TMAX];
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
224
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
225 Type(TY ty);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
226 virtual Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
227 int equals(Object *o);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
228 int dyncast() { return DYNCAST_TYPE; } // kludge for template.isType()
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
229 int covariant(Type *t);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
230 char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
231 static char needThisPrefix();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
232 #if IN_LLVM
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
233 static void init(Ir*);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
234 #else
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
235 static void init();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
236 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
237 d_uns64 size();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
238 virtual d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
239 virtual unsigned alignsize();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
240 virtual Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
241 Type *trySemantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
242 // append the mangleof or a string uniquely identifying this type to buf
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
243 virtual void toDecoBuffer(OutBuffer *buf, int flag = 0, bool mangle=false);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
244 Type *merge();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
245 Type *merge2();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
246 virtual void toCBuffer(OutBuffer *buf, Identifier *ident, HdrGenState *hgs);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
247 virtual void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
248 void toCBuffer3(OutBuffer *buf, HdrGenState *hgs, int mod);
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
249 void modToBuffer(OutBuffer *buf);
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
250 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
251 virtual void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
252 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
253 virtual int isintegral();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
254 virtual int isfloating(); // real, imaginary, or complex
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
255 virtual int isreal();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
256 virtual int isimaginary();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
257 virtual int iscomplex();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
258 virtual int isscalar();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
259 virtual int isunsigned();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
260 virtual int isauto();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
261 virtual int isString();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
262 virtual int isAssignable();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
263 virtual int checkBoolean(); // if can be converted to boolean value
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
264 virtual void checkDeprecated(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
265 int isConst() { return mod & MODconst; }
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
266 int isInvariant() { return mod & MODinvariant; }
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
267 int isMutable() { return !(mod & (MODconst | MODinvariant)); }
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
268 int isShared() { return mod & MODshared; }
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
269 int isSharedConst() { return mod == (MODshared | MODconst); }
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
270 Type *constOf();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
271 Type *invariantOf();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
272 Type *mutableOf();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
273 Type *sharedOf();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
274 Type *sharedConstOf();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
275 void fixTo(Type *t);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
276 void check();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
277 Type *castMod(unsigned mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
278 Type *addMod(unsigned mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
279 Type *addStorageClass(unsigned stc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
280 Type *pointerTo();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
281 Type *referenceTo();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
282 Type *arrayOf();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
283 virtual Type *makeConst();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
284 virtual Type *makeInvariant();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
285 virtual Type *makeShared();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
286 virtual Type *makeSharedConst();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
287 virtual Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
288 virtual Type *toBasetype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
289 virtual Type *toHeadMutable();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
290 virtual int isBaseOf(Type *t, int *poffset);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
291 virtual MATCH constConv(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
292 virtual MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
293 virtual ClassDeclaration *isClassHandle();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
294 virtual Expression *getProperty(Loc loc, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
295 virtual Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
296 virtual unsigned memalign(unsigned salign);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
297 virtual Expression *defaultInit(Loc loc = 0);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
298 virtual int isZeroInit(Loc loc = 0); // if initializer is 0
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
299 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
300 virtual dt_t **toDt(dt_t **pdt);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
301 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
302 Identifier *getTypeInfoIdent(int internal);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
303 virtual MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
304 virtual void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
305 Expression *getInternalTypeInfo(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
306 Expression *getTypeInfo(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
307 virtual TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
308 virtual int builtinTypeInfo();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
309 virtual Type *reliesOnTident();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
310 virtual Expression *toExpression();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
311 virtual int hasPointers();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
312 //Type *next;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
313 virtual Type *nextOf();
1526
54b3c1394d62 Merged dmdfe 2.031.
Robert Clipsham <robert@octarineparrot.com>
parents: 1452
diff changeset
314 uinteger_t sizemask();
54b3c1394d62 Merged dmdfe 2.031.
Robert Clipsham <robert@octarineparrot.com>
parents: 1452
diff changeset
315
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
316
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
317 static void error(Loc loc, const char *format, ...) IS_PRINTF(2);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
318 static void warning(Loc loc, const char *format, ...) IS_PRINTF(2);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
319
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
320 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
321 // For backend
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
322 virtual unsigned totym();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
323 virtual type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
324 virtual type *toCParamtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
325 virtual Symbol *toSymbol();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
326 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
327
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
328 // For eliminating dynamic_cast
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
329 virtual TypeBasic *isTypeBasic();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
330
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
331 #if IN_LLVM
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
332 static Ir* sir;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
333 IrType* irtype;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
334 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
335 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
336
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
337 struct TypeNext : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
338 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
339 Type *next;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
340
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
341 TypeNext(TY ty, Type *next);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
342 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
343 void checkDeprecated(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
344 Type *reliesOnTident();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
345 Type *nextOf();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
346 Type *makeConst();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
347 Type *makeInvariant();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
348 Type *makeShared();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
349 Type *makeSharedConst();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
350 MATCH constConv(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
351 void transitive();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
352 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
353
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
354 struct TypeBasic : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
355 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
356 const char *dstring;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
357 unsigned flags;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
358
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
359 TypeBasic(TY ty);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
360 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
361 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
362 unsigned alignsize();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
363 Expression *getProperty(Loc loc, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
364 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
365 char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
366 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
367 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
368 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
369 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
370 int isintegral();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
371 int isbit();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
372 int isfloating();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
373 int isreal();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
374 int isimaginary();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
375 int iscomplex();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
376 int isscalar();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
377 int isunsigned();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
378 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
379 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
380 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
381 int builtinTypeInfo();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
382
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
383 // For eliminating dynamic_cast
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
384 TypeBasic *isTypeBasic();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
385 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
386
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
387 struct TypeArray : TypeNext
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
388 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
389 TypeArray(TY ty, Type *next);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
390 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
391 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
392
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
393 // Static array, one with a fixed dimension
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
394 struct TypeSArray : TypeArray
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
395 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
396 Expression *dim;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
397
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
398 TypeSArray(Type *t, Expression *dim);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
399 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
400 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
401 unsigned alignsize();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
402 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
403 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
404 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
405 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
406 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
407 int isString();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
408 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
409 unsigned memalign(unsigned salign);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
410 MATCH constConv(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
411 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
412 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
413 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
414 dt_t **toDt(dt_t **pdt);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
415 dt_t **toDtElem(dt_t **pdt, Expression *e);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
416 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
417 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
418 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
419 Expression *toExpression();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
420 int hasPointers();
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
421 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
422 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
423 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
424
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
425 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
426 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
427 type *toCParamtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
428 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
429 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
430
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
431 // Dynamic array, no dimension
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
432 struct TypeDArray : TypeArray
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
433 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
434 TypeDArray(Type *t);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
435 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
436 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
437 unsigned alignsize();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
438 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
439 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
440 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
441 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
442 int isString();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
443 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
444 int checkBoolean();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
445 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
446 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
447 int builtinTypeInfo();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
448 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
449 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
450 int hasPointers();
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
451 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
452 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
453 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
454
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
455 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
456 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
457 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
458 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
459
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
460 struct TypeAArray : TypeArray
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
461 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
462 Type *index; // key type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
463
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
464 TypeAArray(Type *t, Type *index);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
465 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
466 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
467 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
468 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
469 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
470 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
471 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
472 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
473 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
474 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
475 int checkBoolean();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
476 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
477 int hasPointers();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
478 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
479 MATCH constConv(Type *to);
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
480 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
481 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
482 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
483
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
484 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
485 // Back end
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
486 Symbol *aaGetSymbol(const char *func, int flags);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
487
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
488 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
489 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
490 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
491
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
492 struct TypePointer : TypeNext
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
493 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
494 TypePointer(Type *t);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
495 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
496 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
497 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
498 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
499 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
500 int isscalar();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
501 // LDC: pointers are unsigned
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
502 int isunsigned() { return TRUE; };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
503 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
504 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
505 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
506 int hasPointers();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
507
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
508 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
509 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
510 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
511
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
512 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
513 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
514 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
515 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
516
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
517 struct TypeReference : TypeNext
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
518 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
519 TypeReference(Type *t);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
520 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
521 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
522 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
523 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
524 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
525 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
526 int isZeroInit(Loc loc);
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
527 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
528 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
529 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
530 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
531
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
532 enum RET
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
533 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
534 RETregs = 1, // returned in registers
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
535 RETstack = 2, // returned on stack
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
536 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
537
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
538 struct TypeFunction : TypeNext
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
539 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
540 // .next is the return type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
541
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
542 Arguments *parameters; // function parameters
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
543 int varargs; // 1: T t, ...) style for variable number of arguments
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
544 // 2: T t ...) style for variable number of arguments
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
545 bool isnothrow; // true: nothrow
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
546 bool ispure; // true: pure
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
547 bool isproperty; // can be called without parentheses
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
548 bool isref; // true: returns a reference
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
549 enum LINK linkage; // calling convention
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
550
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
551 int inuse;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
552
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
553 TypeFunction(Arguments *parameters, Type *treturn, int varargs, enum LINK linkage);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
554 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
555 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
556 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
557 void toCBuffer(OutBuffer *buf, Identifier *ident, HdrGenState *hgs);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
558 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
559 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
560 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
561 Type *reliesOnTident();
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
562 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
563 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
564 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
565 bool parameterEscapes(Argument *p);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
566
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
567 int callMatch(Expression *ethis, Expressions *toargs);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
568 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
569 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
570 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
571
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
572 enum RET retStyle();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
573
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
574 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
575 unsigned totym();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
576 #elif IN_LLVM
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
577 // LDC
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
578 IrFuncTy fty;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
579
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
580 FuncDeclaration* funcdecl;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
581 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
582 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
583
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
584 struct TypeDelegate : TypeNext
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
585 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
586 // .next is a TypeFunction
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
587
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
588 TypeDelegate(Type *t);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
589 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
590 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
591 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
592 unsigned alignsize(); // added in LDC
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
593 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
594 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
595 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
596 int checkBoolean();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
597 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
598 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
599 int hasPointers();
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
600 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
601 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
602 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
603
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
604 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
605 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
606 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
607 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
608
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
609 struct TypeQualified : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
610 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
611 Loc loc;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
612 Array idents; // array of Identifier's representing ident.ident.ident etc.
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
613
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
614 TypeQualified(TY ty, Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
615 void syntaxCopyHelper(TypeQualified *t);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
616 void addIdent(Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
617 void toCBuffer2Helper(OutBuffer *buf, HdrGenState *hgs);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
618 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
619 void resolveHelper(Loc loc, Scope *sc, Dsymbol *s, Dsymbol *scopesym,
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
620 Expression **pe, Type **pt, Dsymbol **ps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
621 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
622
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
623 struct TypeIdentifier : TypeQualified
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
624 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
625 Identifier *ident;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
626
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
627 TypeIdentifier(Loc loc, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
628 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
629 //char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
630 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
631 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
632 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
633 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
634 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
635 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
636 Type *reliesOnTident();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
637 Expression *toExpression();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
638 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
639
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
640 /* Similar to TypeIdentifier, but with a TemplateInstance as the root
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
641 */
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
642 struct TypeInstance : TypeQualified
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
643 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
644 TemplateInstance *tempinst;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
645
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
646 TypeInstance(Loc loc, TemplateInstance *tempinst);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
647 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
648 //char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
649 //void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
650 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
651 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
652 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
653 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
654 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
655 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
656
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
657 struct TypeTypeof : TypeQualified
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
658 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
659 Expression *exp;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
660
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
661 TypeTypeof(Loc loc, Expression *exp);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
662 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
663 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
664 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
665 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
666 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
667 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
668
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
669 struct TypeReturn : TypeQualified
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
670 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
671 TypeReturn(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
672 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
673 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
674 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
675 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
676 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
677
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
678 struct TypeStruct : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
679 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
680 StructDeclaration *sym;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
681
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
682 TypeStruct(StructDeclaration *sym);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
683 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
684 unsigned alignsize();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
685 char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
686 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
687 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
688 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
689 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
690 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
691 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
692 unsigned memalign(unsigned salign);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
693 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
694 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
695 int isAssignable();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
696 int checkBoolean();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
697 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
698 dt_t **toDt(dt_t **pdt);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
699 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
700 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
701 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
702 int hasPointers();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
703 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
704 MATCH constConv(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
705 Type *toHeadMutable();
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
706 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
707 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
708 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
709
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
710 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
711 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
712 #elif IN_LLVM
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
713 // LDC
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
714 // cache the hasUnalignedFields check
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
715 // 0 = not checked, 1 = aligned, 2 = unaligned
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
716 int unaligned;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
717 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
718 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
719
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
720 struct TypeEnum : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
721 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
722 EnumDeclaration *sym;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
723
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
724 TypeEnum(EnumDeclaration *sym);
1526
54b3c1394d62 Merged dmdfe 2.031.
Robert Clipsham <robert@octarineparrot.com>
parents: 1452
diff changeset
725 Type *syntaxCopy();
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
726 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
727 unsigned alignsize();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
728 char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
729 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
730 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
731 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
732 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
733 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
734 Expression *getProperty(Loc loc, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
735 int isintegral();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
736 int isfloating();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
737 int isscalar();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
738 int isunsigned();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
739 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
740 MATCH constConv(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
741 Type *toBasetype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
742 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
743 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
744 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
745 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
746 int hasPointers();
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
747 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
748 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
749 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
750
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
751 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
752 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
753 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
754 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
755
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
756 struct TypeTypedef : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
757 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
758 TypedefDeclaration *sym;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
759
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
760 TypeTypedef(TypedefDeclaration *sym);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
761 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
762 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
763 unsigned alignsize();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
764 char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
765 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
766 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
767 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
768 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
769 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
770 Expression *getProperty(Loc loc, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
771 int isbit();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
772 int isintegral();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
773 int isfloating();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
774 int isreal();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
775 int isimaginary();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
776 int iscomplex();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
777 int isscalar();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
778 int isunsigned();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
779 int checkBoolean();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
780 int isAssignable();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
781 Type *toBasetype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
782 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
783 MATCH constConv(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
784 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
785 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
786 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
787 dt_t **toDt(dt_t **pdt);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
788 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
789 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
790 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
791 int hasPointers();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
792 Type *toHeadMutable();
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
793 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
794 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
795 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
796
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
797 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
798 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
799 type *toCParamtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
800 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
801 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
802
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
803 struct TypeClass : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
804 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
805 ClassDeclaration *sym;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
806
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
807 TypeClass(ClassDeclaration *sym);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
808 d_uns64 size(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
809 char *toChars();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
810 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
811 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
812 Dsymbol *toDsymbol(Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
813 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
814 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
815 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
816 ClassDeclaration *isClassHandle();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
817 int isBaseOf(Type *t, int *poffset);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
818 MATCH implicitConvTo(Type *to);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
819 Expression *defaultInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
820 int isZeroInit(Loc loc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
821 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
822 int isauto();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
823 int checkBoolean();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
824 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
825 int hasPointers();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
826 int builtinTypeInfo();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
827 #if DMDV2
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
828 Type *toHeadMutable();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
829 MATCH constConv(Type *to);
1577
e4f7b5d9c68a DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents: 1526
diff changeset
830 #if CPP_MANGLE
1452
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
831 void toCppMangle(OutBuffer *buf, CppMangleState *cms);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
832 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
833 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
834
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
835 #if IN_DMD
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
836 type *toCtype();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
837
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
838 Symbol *toSymbol();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
839 #endif
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
840 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
841
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
842 struct TypeTuple : Type
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
843 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
844 Arguments *arguments; // types making up the tuple
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
845
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
846 TypeTuple(Arguments *arguments);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
847 TypeTuple(Expressions *exps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
848 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
849 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
850 int equals(Object *o);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
851 Type *reliesOnTident();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
852 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
853 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
854 Expression *getProperty(Loc loc, Identifier *ident);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
855 TypeInfoDeclaration *getTypeInfoDeclaration();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
856 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
857
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
858 struct TypeSlice : TypeNext
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
859 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
860 Expression *lwr;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
861 Expression *upr;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
862
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
863 TypeSlice(Type *next, Expression *lwr, Expression *upr);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
864 Type *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
865 Type *semantic(Loc loc, Scope *sc);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
866 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
867 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
868 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
869
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
870 /**************************************************************/
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
871
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
872 //enum InOut { None, In, Out, InOut, Lazy };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
873
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
874 struct Argument : Object
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
875 {
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
876 //enum InOut inout;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
877 unsigned storageClass;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
878 Type *type;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
879 Identifier *ident;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
880 Expression *defaultArg;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
881
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
882 Argument(unsigned storageClass, Type *type, Identifier *ident, Expression *defaultArg);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
883 Argument *syntaxCopy();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
884 Type *isLazyArray();
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
885 void toDecoBuffer(OutBuffer *buf, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
886 static Arguments *arraySyntaxCopy(Arguments *args);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
887 static char *argsTypesToChars(Arguments *args, int varargs);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
888 static void argsCppMangle(OutBuffer *buf, CppMangleState *cms, Arguments *arguments, int varargs);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
889 static void argsToCBuffer(OutBuffer *buf, HdrGenState *hgs, Arguments *arguments, int varargs);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
890 static void argsToDecoBuffer(OutBuffer *buf, Arguments *arguments, bool mangle);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
891 static int isTPL(Arguments *arguments);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
892 static size_t dim(Arguments *arguments);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
893 static Argument *getNth(Arguments *arguments, size_t nth, size_t *pn = NULL);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
894 };
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
895
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
896 extern int PTRSIZE;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
897 extern int REALSIZE;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
898 extern int REALPAD;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
899 extern int Tsize_t;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
900 extern int Tptrdiff_t;
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
901
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
902 int arrayTypeCompatible(Loc loc, Type *t1, Type *t2);
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
903
638d16625da2 LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents: 1029
diff changeset
904 #endif /* DMD_MTYPE_H */