diff 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
line wrap: on
line diff
--- a/dmd/BoolExp.d	Tue Sep 14 01:54:48 2010 +0200
+++ b/dmd/BoolExp.d	Tue Sep 14 02:38:37 2010 +0200
@@ -24,7 +24,7 @@
 
 	override Expression semantic(Scope sc)
 	{
-		UnaExp.semantic(sc);
+		super.semantic(sc);
 		e1 = resolveProperties(sc, e1);
 		e1 = e1.checkToBoolean();
 		type = Type.tboolean;
@@ -33,7 +33,16 @@
 
 	override Expression optimize(int result)
 	{
-		assert(false);
+		Expression e;
+
+	    e1 = e1.optimize(result);
+	    if (e1.isConst() == 1)
+	    {
+	        e = Bool(type, e1);
+	    }
+	    else
+	        e = this;
+	    return e;
 	}
 
 	override Expression interpret(InterState istate)