view tests/mini/compile_delegatetuple.d @ 1401:e2cf1f67ca33

Don't print the entire declaration of the alliassee when `->toChars()` is called on an `AliasDeclaration`; just printing the name will do. This fixes #305, which otherwise tries to generate {{{ class E { void A() { alias /* recurse into E->toCBuffer() */ m; } } }}} by way of an infinite recursion (causing a segfault when the stack runs out).
author Frits van Bommel <fvbommel wxs.nl>
date Wed, 20 May 2009 16:20:59 +0200
parents cd7da2ba14d1
children
line wrap: on
line source

alias char[] string;
template Unstatic(T) { alias T Unstatic; }
template Unstatic(T: T[]) { alias T[] Unstatic; }
template StupleMembers(T...) {
  static if (T.length) {
      const int id=T[0..$-1].length;
      const string str=StupleMembers!(T[0..$-1]).str~"Unstatic!(T["~id.stringof~"]) _"~id.stringof~"; ";
  } else const string str="";
}

struct Stuple(T...) {
 mixin(StupleMembers!(T).str);
}     
Stuple!(string, void delegate(float)) foo;