Mercurial > projects > ddmd
comparison dmd/DotExp.d @ 129:010eb8f0e18d
further work on dmd test suite
author | korDen |
---|---|
date | Sun, 05 Sep 2010 15:32:22 +0400 |
parents | e28b18c23469 |
children | e3afd1303184 |
comparison
equal
deleted
inserted
replaced
128:e6e542f37b94 | 129:010eb8f0e18d |
---|---|
2 | 2 |
3 import dmd.common; | 3 import dmd.common; |
4 import dmd.Expression; | 4 import dmd.Expression; |
5 import dmd.Loc; | 5 import dmd.Loc; |
6 import dmd.Scope; | 6 import dmd.Scope; |
7 import dmd.ScopeExp; | |
8 import dmd.TemplateDeclaration; | |
9 import dmd.DotTemplateExp; | |
7 import dmd.BinExp; | 10 import dmd.BinExp; |
8 import dmd.TOK; | 11 import dmd.TOK; |
9 | 12 |
10 class DotExp : BinExp | 13 class DotExp : BinExp |
11 { | 14 { |
12 this(Loc loc, Expression e1, Expression e2) | 15 this(Loc loc, Expression e1, Expression e2) |
13 { | 16 { |
14 assert(false); | 17 super(loc, TOKdotexp, DotExp.sizeof, e1, e2); |
15 super(loc, TOK.init, 0, e1, e2); | |
16 } | 18 } |
17 | 19 |
18 override Expression semantic(Scope sc) | 20 override Expression semantic(Scope sc) |
19 { | 21 { |
20 assert(false); | 22 version (LOGSEMANTIC) { |
23 printf("DotExp.semantic('%s')\n", toChars()); | |
24 if (type) printf("\ttype = %s\n", type.toChars()); | |
25 } | |
26 e1 = e1.semantic(sc); | |
27 e2 = e2.semantic(sc); | |
28 if (e2.op == TOKimport) | |
29 { | |
30 ScopeExp se = cast(ScopeExp)e2; | |
31 TemplateDeclaration td = se.sds.isTemplateDeclaration(); | |
32 if (td) | |
33 { | |
34 Expression e = new DotTemplateExp(loc, e1, td); | |
35 e = e.semantic(sc); | |
36 return e; | |
37 } | |
38 } | |
39 if (!type) | |
40 type = e2.type; | |
41 return this; | |
21 } | 42 } |
22 } | 43 } |
23 | 44 |