Mercurial > projects > ddmd
annotate dmd/Initializer.d @ 137:09c858522d55
merge
author | Trass3r |
---|---|
date | Mon, 13 Sep 2010 23:29:00 +0200 |
parents | 60bb0fe4563e |
children | e3afd1303184 |
rev | line source |
---|---|
0 | 1 module dmd.Initializer; |
2 | |
114 | 3 import dmd.common; |
0 | 4 import dmd.Loc; |
5 import dmd.Scope; | |
6 import dmd.Type; | |
79 | 7 import dmd.Util; |
0 | 8 import dmd.ArrayTypes; |
9 import dmd.Expression; | |
10 import dmd.OutBuffer; | |
11 import dmd.HdrGenState; | |
12 import dmd.VoidInitializer; | |
13 import dmd.StructInitializer; | |
14 import dmd.ArrayInitializer; | |
15 import dmd.ExpInitializer; | |
16 | |
17 import dmd.backend.dt_t; | |
18 | |
19 class Initializer | |
20 { | |
21 Loc loc; | |
22 | |
23 this(Loc loc) | |
24 { | |
25 this.loc = loc; | |
26 } | |
27 | |
28 Initializer syntaxCopy() | |
29 { | |
79 | 30 return this; |
0 | 31 } |
32 | |
33 Initializer semantic(Scope sc, Type t) | |
34 { | |
79 | 35 return this; |
0 | 36 } |
37 | |
38 Type inferType(Scope sc) | |
39 { | |
79 | 40 error(loc, "cannot infer type from initializer"); |
41 return Type.terror; | |
0 | 42 } |
43 | |
79 | 44 abstract Expression toExpression(); |
45 | |
0 | 46 abstract void toCBuffer(OutBuffer buf, HdrGenState* hgs); |
79 | 47 |
0 | 48 string toChars() |
49 { | |
79 | 50 OutBuffer buf; |
51 HdrGenState hgs; | |
52 | |
53 buf = new OutBuffer(); | |
54 toCBuffer(buf, &hgs); | |
55 return buf.toChars(); | |
56 } | |
57 | |
58 static Initializers arraySyntaxCopy(Initializers ai) | |
59 { | |
60 Initializers a = null; | |
61 | |
62 if (ai) | |
63 { | |
64 a = new Initializers(); | |
65 a.setDim(ai.dim); | |
66 for (int i = 0; i < a.dim; i++) | |
127
9ee9b55452cb
Identifiers, Initializers -> Vector
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
114
diff
changeset
|
67 { Initializer e = ai[i]; |
79 | 68 |
69 e = e.syntaxCopy(); | |
127
9ee9b55452cb
Identifiers, Initializers -> Vector
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
114
diff
changeset
|
70 a[i] = e; |
79 | 71 } |
72 } | |
73 return a; | |
74 } | |
75 | |
76 dt_t* toDt() | |
77 { | |
0 | 78 assert(false); |
79 } | |
80 | |
79 | 81 VoidInitializer isVoidInitializer() { return null; } |
0 | 82 |
83 StructInitializer isStructInitializer() { return null; } | |
84 | |
85 ArrayInitializer isArrayInitializer() { return null; } | |
86 | |
87 ExpInitializer isExpInitializer() { return null; } | |
88 } |