Mercurial > projects > dang
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)