diff dmd/IsExp.d @ 50:adf6f7f216ea

CondExp.toCBuffer IsExp.toCBuffer TemplateValueParameter.toCBuffer Dsymbol.search TemplateDeclaration.overloadInsert bug fixed
author korDen
date Sat, 21 Aug 2010 10:38:26 +0400
parents 24674203f62c
children 2e2a5c3f943a
line wrap: on
line diff
--- a/dmd/IsExp.d	Sat Aug 21 07:53:20 2010 +0400
+++ b/dmd/IsExp.d	Sat Aug 21 10:38:26 2010 +0400
@@ -28,6 +28,7 @@
 import dmd.MATCH;
 import dmd.TypePointer;
 import dmd.Argument;
+import dmd.Token;
 
 class IsExp : Expression
 {
@@ -336,7 +337,33 @@
 
 	void toCBuffer(OutBuffer buf, HdrGenState* hgs)
 	{
-		assert(false);
+		buf.writestring("is(");
+		targ.toCBuffer(buf, id, hgs);
+		if (tok2 != TOKreserved)
+		{
+			buf.printf(" %s %s", Token.toChars(tok), Token.toChars(tok2));
+		}
+		else if (tspec)
+		{
+			if (tok == TOKcolon)
+				buf.writestring(" : ");
+			else
+				buf.writestring(" == ");
+			tspec.toCBuffer(buf, null, hgs);
+		}
+version (DMDV2) {
+		if (parameters)
+		{	
+			// First parameter is already output, so start with second
+			for (int i = 1; i < parameters.dim; i++)
+			{
+				buf.writeByte(',');
+				TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
+				tp.toCBuffer(buf, hgs);
+			}
+		}
+}
+		buf.writeByte(')');
 	}
 }