Mercurial > projects > ddmd
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(')');