On Sat, Oct 10, 2009 at 8:45 PM, Ellery Newcomer <[email protected]> wrote: > This is probably a bad idea, but from my readings of the dmd source, I > noticed some preprocessor defines that looked useful, along the lines of > > #define CASES case A:case B: (etc) > > I'd kinda like something similar in D, but a naive attempt with mixins > doesn't work, e.g. > > immutable string cases = "case 1: case 2:"; //my d2fu sucks > > .. > > switch(x){ > mixin(cases); > dosomething(); > default: > dosomething(); > } > > Any ideas (not including concatenating cases with body of case)?
A single string mixin must consist of an entire, fully-formed statement, expression, or declaration (depending on where it's used). Case labels do not, on their own, count as a statement. In addition, there is a bug that prevents you from string-mixing-in cases inside a switch. For some reason you have to mix in the entire switch statement.
