diff dmd/Type.d @ 51:b7d29f613539

StaticAssertStatement.syntaxCopy IfStatement.syntaxCopy CompoundDeclarationStatement.syntaxCopy VoidInitializer.syntaxCopy TypeAArray.syntaxCopy TypeTypeof.syntaxCopy TypeAArray.resolve TypeSArray.deduceType TypeAArray.deduceType TypeAArray.implicitConvTo TemplateDeclaration.leastAsSpecialized TemplateTypeParameter.dummyArg TypeIdentifier.deduceType TemplateTypeParameter.syntaxCopy Lexer.hexStringConstant Lexer.delimitedStringConstant GotoDefaultStatement.ctor CaseRangeStatement.ctor Type.castMod StorageClassDeclaration.syntaxCopy TemplateDeclaration.syntaxCopy
author korDen
date Sat, 21 Aug 2010 11:17:42 +0400
parents ccbc1e0bb3f0
children a8b50ff7f201
line wrap: on
line diff
--- a/dmd/Type.d	Sat Aug 21 10:38:26 2010 +0400
+++ b/dmd/Type.d	Sat Aug 21 11:17:42 2010 +0400
@@ -1373,9 +1373,39 @@
 		}
 	}
 
+	/************************************
+	 * Apply MODxxxx bits to existing type.
+	 */
     Type castMod(uint mod)
 	{
-		assert(false);
+		Type t;
+
+		switch (mod)
+		{
+		case 0:
+			t = mutableOf();
+			break;
+
+		case MODconst:
+			t = constOf();
+			break;
+
+		case MODinvariant:
+			t = invariantOf();
+			break;
+
+		case MODshared:
+			t = sharedOf();
+			break;
+
+		case MODshared | MODconst:
+			t = sharedConstOf();
+			break;
+
+		default:
+			assert(0);
+		}
+		return t;
 	}
 	
 	/************************************