Mercurial > projects > ddmd
annotate dmd/TemplateParameter.d @ 132:c494af1dba80
Fixes for dmd 2.037
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Fri, 10 Sep 2010 19:14:09 +0100 |
parents | 347de076ad34 |
children | e3afd1303184 |
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 |
19 class TemplateParameter | |
20 { | |
21 /* For type-parameter: | |
22 * template Foo(ident) // specType is set to NULL | |
23 * template Foo(ident : specType) | |
24 * For value-parameter: | |
25 * template Foo(valType ident) // specValue is set to NULL | |
26 * template Foo(valType ident : specValue) | |
27 * For alias-parameter: | |
28 * template Foo(alias ident) | |
29 * For this-parameter: | |
30 * template Foo(this ident) | |
31 */ | |
32 | |
33 Loc loc; | |
34 Identifier ident; | |
35 | |
36 Declaration sparam; | |
37 | |
38 this(Loc loc, Identifier ident) | |
39 { | |
40 this.loc = loc; | |
41 this.ident = ident; | |
42 } | |
43 | |
44 TemplateTypeParameter isTemplateTypeParameter() | |
45 { | |
56 | 46 return null; |
0 | 47 } |
48 | |
49 TemplateValueParameter isTemplateValueParameter() | |
50 { | |
56 | 51 return null; |
0 | 52 } |
53 | |
54 TemplateAliasParameter isTemplateAliasParameter() | |
55 { | |
56 | 56 return null; |
0 | 57 } |
58 | |
59 version (DMDV2) { | |
60 TemplateThisParameter isTemplateThisParameter() | |
61 { | |
56 | 62 return null; |
0 | 63 } |
64 } | |
65 TemplateTupleParameter isTemplateTupleParameter() | |
66 { | |
67 return null; | |
68 } | |
69 | |
70 abstract TemplateParameter syntaxCopy(); | |
71 abstract void declareParameter(Scope sc); | |
72 abstract void semantic(Scope); | |
73 abstract void print(Object oarg, Object oded); | |
74 abstract void toCBuffer(OutBuffer buf, HdrGenState* hgs); | |
75 abstract Object specialization(); | |
76 abstract Object defaultArg(Loc loc, Scope sc); | |
77 | |
78 /* If TemplateParameter's match as far as overloading goes. | |
79 */ | |
80 abstract bool overloadMatch(TemplateParameter); | |
81 | |
82 /* Match actual argument against parameter. | |
83 */ | |
84 abstract MATCH matchArg(Scope sc, Objects tiargs, int i, TemplateParameters parameters, Objects dedtypes, Declaration* psparam, int flags = 0); | |
85 | |
86 /* Create dummy argument based on parameter. | |
87 */ | |
94
3a0b150c9841
Objects -> Vector!Object iteration 1
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
56
diff
changeset
|
88 abstract Object dummyArg(); |
0 | 89 } |