%u: > Incomplete mixin expression + char[] to char assignment = crash :)
You (or me or someone else) may add this to Bugzilla: char[2] foo() { char[2] code; code[1] = ""; return code; } struct Bar { int i = mixin(foo()); } void main() {} > And while you are reading this, could you maybe tell me why this needs a .dup? > -- > char[] bar() > { > char[8] res = "int i=0;"; > return res.dup;// without: main.d(/here/): Error: escaping reference to > local res > } > mixin ( bar() ); If bar() returns a char[], it means it returns a dynamic array. char[8] inside bar() is allocated on the stack, so if you convert a static array to a dynamic array, it doesn't get copied (no return by value), the dynamic array is just a reference to the stack memory, and this is a bug. If bar returns a char[8] there is no error in D2 because fixed-sized arrays get copied by value. Bye, bearophile