diff dmd/expression/Util.d @ 109:ceda59b4d255

expression.c changes, now only ddoc should be left
author Trass3r
date Tue, 31 Aug 2010 22:08:52 +0200
parents 5c859d5fbe27
children e28b18c23469
line wrap: on
line diff
--- a/dmd/expression/Util.d	Tue Aug 31 21:41:01 2010 +0200
+++ b/dmd/expression/Util.d	Tue Aug 31 22:08:52 2010 +0200
@@ -631,6 +631,8 @@
 				if (p.type != arg.type)
 				{
 					//printf("arg.type = %s, p.type = %s\n", arg.type.toChars(), p.type.toChars());
+					if (arg.op == TOKtype)
+						arg.error("cannot pass type %s as function argument", arg.toChars());
 					arg = arg.implicitCastTo(sc, p.type);
 					arg = arg.optimize(WANT.WANTvalue);
 				}
@@ -644,12 +646,15 @@
 				arg = arg.modifiableLvalue(sc, arg);
 			}
 
+			tb = arg.type.toBasetype();
+version(SARRAYVALUE) {} else
+{
 			// Convert static arrays to pointers
-			tb = arg.type.toBasetype();
 			if (tb.ty == TY.Tsarray)
 			{
 				arg = arg.checkToPointer();
 			}
+}
 version (DMDV2) {
 			if (tb.ty == TY.Tstruct && !(p.storageClass & (STC.STCref | STC.STCout)))
 			{