diff -uNr dmd-0.107/dmd/src/dmd/class.c dmd-0.108/dmd/src/dmd/class.c --- dmd-0.107/dmd/src/dmd/class.c 2004-11-27 00:00:38.000000000 +0100 +++ dmd-0.108/dmd/src/dmd/class.c 2004-11-29 20:50:14.000000000 +0100 @@ -320,7 +320,7 @@ // this() { } if (!ctor && baseClass && baseClass->ctor) { - printf("Creating default this(){} for class %s\n", toChars()); + //printf("Creating default this(){} for class %s\n", toChars()); ctor = new CtorDeclaration(0, 0, NULL, 0); ctor->fbody = new CompoundStatement(0, new Array()); members->push(ctor); diff -uNr dmd-0.107/dmd/src/dmd/mars.c dmd-0.108/dmd/src/dmd/mars.c --- dmd-0.107/dmd/src/dmd/mars.c 2004-11-11 00:33:38.000000000 +0100 +++ dmd-0.108/dmd/src/dmd/mars.c 2004-11-30 00:12:40.000000000 +0100 @@ -49,7 +49,7 @@ copyright = "Copyright (c) 1999-2004 by Digital Mars"; written = "written by Walter Bright"; - version = "v0.107"; + version = "v0.108"; global.structalign = 8; memset(¶ms, 0, sizeof(Param)); diff -uNr dmd-0.107/dmd/src/dmd/optimize.c dmd-0.108/dmd/src/dmd/optimize.c --- dmd-0.107/dmd/src/dmd/optimize.c 2004-11-29 01:49:14.000000000 +0100 +++ dmd-0.108/dmd/src/dmd/optimize.c 2004-11-30 00:42:12.000000000 +0100 @@ -142,7 +142,14 @@ } } - return UnaExp::optimize(result); + Expression *e; + + e1 = e1->optimize(result); + if (e1->isConst()) + e = constFold(); + else + e = this; + return e; } Expression *BinExp::optimize(int result)