changeset 518:243485af6523

Prevent cast error for cast(void) around expression statements. Fixes: run/e/ExpressionStatement_10_A
author Christian Kamm <kamm incasoftware de>
date Sat, 16 Aug 2008 12:32:22 +0200
parents 9534dbc70a56
children bc0835cd3440
files gen/statements.cpp
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/gen/statements.cpp	Sat Aug 16 11:19:34 2008 +0200
+++ b/gen/statements.cpp	Sat Aug 16 12:32:22 2008 +0200
@@ -122,7 +122,14 @@
     if (exp) {
         if (global.params.llvmAnnotate)
             DtoAnnotation(exp->toChars());
-        elem* e = exp->toElem(p);
+        elem* e;
+        // a cast(void) around the expression is allowed, but doesn't require any code
+        if(exp->op == TOKcast && exp->type == Type::tvoid) {
+            CastExp* cexp = (CastExp*)exp;
+            e = cexp->e1->toElem(p);
+        }
+        else
+            e = exp->toElem(p);
         delete e;
     }
     /*elem* e = exp->toElem(p);