changeset 1616:c94049033c20

Merge DMD r296: bugzilla 3617 CTFE: wrong code for if(x) where x is int... bugzilla 3617 CTFE: wrong code for if(x) where x is int or smaller. --- dmd/expression.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
author Leandro Lucarella <llucax@gmail.com>
date Wed, 06 Jan 2010 15:18:21 -0300
parents 3da302cc4966
children 6820110de311
files dmd/expression.c
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/dmd/expression.c	Wed Jan 06 15:18:21 2010 -0300
+++ b/dmd/expression.c	Wed Jan 06 15:18:21 2010 -0300
@@ -1512,7 +1512,8 @@
 
 int IntegerExp::isBool(int result)
 {
-    return result ? value != 0 : value == 0;
+    int r = toInteger() != 0;
+    return result ? r : !r;
 }
 
 Expression *IntegerExp::semantic(Scope *sc)