diff sema/DType.d @ 179:2a1a635bd531

Changes the way messages can be displayed. Also added a toString to DType's for type printing.
author Anders Johnsen <skabet@gmail.com>
date Fri, 25 Jul 2008 01:21:07 +0200
parents dc9bf56b7ace
children 59cd211a1bd3
line wrap: on
line diff
--- a/sema/DType.d	Thu Jul 24 23:36:38 2008 +0200
+++ b/sema/DType.d	Fri Jul 25 01:21:07 2008 +0200
@@ -99,12 +99,12 @@
     {
         return cast(hash_t)(cast(void*)this);
     }
-/*
+
     char[] toString()
     {
         return id;
     }
-*/
+
     char[] name() { return id; }
     SourceLocation getLoc() { return loc; }
     int byteSize() { return 0; }
@@ -548,6 +548,12 @@
         return arrayOf.isSame(a.arrayOf);
     }
 
+    char[] toString()
+    {
+        return arrayOf.toString~"["~Integer.toString(size)~"]";
+    }
+
+
     override char[] mangle()
     {
         return "G"~Integer.toString(size)~arrayOf.mangle;
@@ -617,6 +623,21 @@
         return pointerOf.isSame(p.pointerOf);
     }
 
+    char[] toString()
+    {
+        if (!pointerOf.isFunction)
+            return pointerOf.toString~"*";
+
+        auto f = pointerOf.asFunction;
+
+        char[] res = f.returnType.toString~" function(";
+
+        foreach (i, p ; f.params)
+            res ~= i ? ", "~p.toString : p.toString;
+
+        return res ~ ")";
+    }
+
     override char[] mangle()
     {
         return "P"~pointerOf.mangle;
@@ -655,6 +676,16 @@
         return res;
     }
 
+    char[] toString()
+    {
+        char[] res = returnType.toString~" (";
+
+        foreach (i, p ; params)
+            res ~= i ? ", "~p.toString : p.toString;
+
+        return res ~ ")";
+    }
+
     override bool isSame(DType f)
     {
         if (f is this)