Mercurial > projects > ddmd
annotate dmd/TemplateParameter.d @ 182:b64060ab22df
Now compileable with dmd2.050
author | korDen |
---|---|
date | Sat, 30 Oct 2010 05:05:32 +0400 |
parents | e3afd1303184 |
children | b0d41ff5e0df |
rev | line source |
---|---|
0 | 1 module dmd.TemplateParameter; |
2 | |
114 | 3 import dmd.common; |
0 | 4 import dmd.Loc; |
5 import dmd.Identifier; | |
6 import dmd.Declaration; | |
7 import dmd.TemplateTypeParameter; | |
8 import dmd.TemplateValueParameter; | |
9 import dmd.TemplateAliasParameter; | |
10 import dmd.TemplateThisParameter; | |
11 import dmd.TemplateTupleParameter; | |
12 import dmd.Scope; | |
13 import dmd.OutBuffer; | |
14 import dmd.HdrGenState; | |
15 import dmd.MATCH; | |
16 import dmd.ArrayTypes; | |
121
347de076ad34
TemplateParameters -> Vector
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
114
diff
changeset
|
17 import dmd.Array; |
0 | 18 |
178 | 19 import dmd.TObject; |
20 | |
21 class TemplateParameter : TObject | |
0 | 22 { |
23 /* For type-parameter: | |
24 * template Foo(ident) // specType is set to NULL | |
25 * template Foo(ident : specType) | |
26 * For value-parameter: | |
27 * template Foo(valType ident) // specValue is set to NULL | |
28 * template Foo(valType ident : specValue) | |
29 * For alias-parameter: | |
30 * template Foo(alias ident) | |
31 * For this-parameter: | |
32 * template Foo(this ident) | |
33 */ | |
34 | |
35 Loc loc; | |
36 Identifier ident; | |
37 | |
38 Declaration sparam; | |
39 | |
40 this(Loc loc, Identifier ident) | |
41 { | |
178 | 42 register(); |
0 | 43 this.loc = loc; |
44 this.ident = ident; | |
45 } | |
46 | |
47 TemplateTypeParameter isTemplateTypeParameter() | |
48 { | |
56 | 49 return null; |
0 | 50 } |
51 | |
52 TemplateValueParameter isTemplateValueParameter() | |
53 { | |
56 | 54 return null; |
0 | 55 } |
56 | |
57 TemplateAliasParameter isTemplateAliasParameter() | |
58 { | |
56 | 59 return null; |
0 | 60 } |
61 | |
62 version (DMDV2) { | |
63 TemplateThisParameter isTemplateThisParameter() | |
64 { | |
56 | 65 return null; |
0 | 66 } |
67 } | |
68 TemplateTupleParameter isTemplateTupleParameter() | |
69 { | |
70 return null; | |
71 } | |
72 | |
73 abstract TemplateParameter syntaxCopy(); | |
74 abstract void declareParameter(Scope sc); | |
75 abstract void semantic(Scope); | |
76 abstract void print(Object oarg, Object oded); | |
77 abstract void toCBuffer(OutBuffer buf, HdrGenState* hgs); | |
78 abstract Object specialization(); | |
79 abstract Object defaultArg(Loc loc, Scope sc); | |
80 | |
81 /* If TemplateParameter's match as far as overloading goes. | |
82 */ | |
83 abstract bool overloadMatch(TemplateParameter); | |
84 | |
85 /* Match actual argument against parameter. | |
86 */ | |
87 abstract MATCH matchArg(Scope sc, Objects tiargs, int i, TemplateParameters parameters, Objects dedtypes, Declaration* psparam, int flags = 0); | |
88 | |
89 /* Create dummy argument based on parameter. | |
90 */ | |
94
3a0b150c9841
Objects -> Vector!Object iteration 1
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
56
diff
changeset
|
91 abstract Object dummyArg(); |
0 | 92 } |