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