Mercurial > projects > ddmd
comparison dmd/BoolExp.d @ 141:7171e6ea651d
+ Expression.toElem
+ Expression.toDt
+ Expression.isBit
+ BoolExp.optimize
author | Trass3r |
---|---|
date | Tue, 14 Sep 2010 02:38:37 +0200 |
parents | e28b18c23469 |
children | 3685b521ed05 |
comparison
equal
deleted
inserted
replaced
140:31c086f76669 | 141:7171e6ea651d |
---|---|
22 type = t; | 22 type = t; |
23 } | 23 } |
24 | 24 |
25 override Expression semantic(Scope sc) | 25 override Expression semantic(Scope sc) |
26 { | 26 { |
27 UnaExp.semantic(sc); | 27 super.semantic(sc); |
28 e1 = resolveProperties(sc, e1); | 28 e1 = resolveProperties(sc, e1); |
29 e1 = e1.checkToBoolean(); | 29 e1 = e1.checkToBoolean(); |
30 type = Type.tboolean; | 30 type = Type.tboolean; |
31 return this; | 31 return this; |
32 } | 32 } |
33 | 33 |
34 override Expression optimize(int result) | 34 override Expression optimize(int result) |
35 { | 35 { |
36 assert(false); | 36 Expression e; |
37 | |
38 e1 = e1.optimize(result); | |
39 if (e1.isConst() == 1) | |
40 { | |
41 e = Bool(type, e1); | |
42 } | |
43 else | |
44 e = this; | |
45 return e; | |
37 } | 46 } |
38 | 47 |
39 override Expression interpret(InterState istate) | 48 override Expression interpret(InterState istate) |
40 { | 49 { |
41 assert(false); | 50 assert(false); |