diff dmd/CastExp.d @ 135:af1bebfd96a4 dmd2037

dmd 2.038
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Mon, 13 Sep 2010 22:19:42 +0100
parents 60bb0fe4563e
children e3afd1303184
line wrap: on
line diff
--- a/dmd/CastExp.d	Sat Sep 11 13:03:39 2010 +0100
+++ b/dmd/CastExp.d	Mon Sep 13 22:19:42 2010 +0100
@@ -183,6 +183,10 @@
 					// Cast away pointer to shared
 					goto Lunsafe;
 
+        	    if (t1bn.isWild() && !tobn.isConst() && !tobn.isWild())
+            		// Cast wild to anything but const | wild
+		            goto Lunsafe;
+
 				if (tobn.isTypeBasic() && tobn.size() < t1bn.size()) {
 					// Allow things like casting a long* to an int*
 					;
@@ -425,27 +429,7 @@
 			to.toCBuffer(buf, null, hgs);
 		else
 		{
-			switch (mod)
-			{   
-				case MODundefined:
-					break;
-				case MODconst:
-					buf.writestring(Token.tochars[TOKconst]);
-					break;
-				case MODinvariant:
-					buf.writestring(Token.tochars[TOKimmutable]);
-					break;
-				case MODshared:
-					buf.writestring(Token.tochars[TOKshared]);
-					break;
-				case MODshared | MODconst:
-					buf.writestring(Token.tochars[TOKshared]);
-					buf.writeByte(' ');
-					buf.writestring(Token.tochars[TOKconst]);
-					break;
-				default:
-					assert(0);
-			}
+			MODtoBuffer(buf, mod);
 		}
 	}
 		buf.writeByte(')');