Mercurial > projects > ddmd
annotate dmd/templates/Util.d @ 192:eb38fdcb3e62 default tip
updated to compile with dmd2.062
author | korDen |
---|---|
date | Sat, 02 Mar 2013 01:25:52 -0800 |
parents | e28b18c23469 |
children |
rev | line source |
---|---|
7
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
1 module dmd.templates.Util; |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
2 |
114 | 3 import dmd.common; |
7
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
4 import dmd.Dsymbol; |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
5 import dmd.Type; |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
6 import dmd.Expression; |
13 | 7 import dmd.Loc; |
8 import dmd.Scope; | |
9 import dmd.WANT; | |
7
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
10 |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
11 version (DMDV2) { |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
12 Object objectSyntaxCopy(Object o) |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
13 { |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
14 if (!o) |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
15 return null; |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
16 |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
17 Type t = isType(o); |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
18 if (t) |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
19 return t.syntaxCopy(); |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
20 |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
21 Expression e = isExpression(o); |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
22 if (e) |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
23 return e.syntaxCopy(); |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
24 |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
25 return o; |
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
26 } |
13 | 27 } |
28 | |
29 Object aliasParameterSemantic(Loc loc, Scope sc, Object o) | |
30 { | |
31 if (o) | |
32 { | |
33 Expression ea = isExpression(o); | |
34 Type ta = isType(o); | |
35 if (ta) | |
36 { | |
37 Dsymbol s = ta.toDsymbol(sc); | |
38 if (s) | |
39 o = s; | |
40 else | |
41 o = ta.semantic(loc, sc); | |
42 } | |
43 else if (ea) | |
44 { | |
45 ea = ea.semantic(sc); | |
46 o = ea.optimize(WANTvalue | WANTinterpret); | |
47 } | |
48 } | |
49 return o; | |
7
89cc05dbdae1
Implementing TemplateAliasParameter and TemplateValueParameter
dkoroskin <>
parents:
diff
changeset
|
50 } |