http://d.puremagic.com/issues/show_bug.cgi?id=2029
--- Comment #5 from Tomas Lindquist Olsen <to...@famolsen.dk> 2009-11-18 03:46:13 PST --- I've attached a draft patch that replaces the typesafe variadic ast rewrites to something that works in any scope (and with ctfe). without the patch the following function: void foo(int[] arr ...) when called: foo(1,2,3); is rewritten as: int[3] _args; (_args[0] = 1, _args[1] = 2, _args[2] = 3, foo(_args[])); .. In global scope, this breaks, as you cannot assign to globals from ctfe, and in normal ctfe, breaks somehow as well. This patch changes the rewrite to: foo([1,2,3]); with each element being implicitly converted to the array element type. One downside is that codegen always allocates array literals on the heap, so it degrades performance a bit, but that needs to be fixed for http://d.puremagic.com/issues/show_bug.cgi?id=2356 as well (though it's probably a slightly different issue), and generally I'm not getting an impression that it's a concern (performance is secondary). In any case I added a new "scopedLiteral" field to ArrayLiteralExp so that codegen knows it's allowed to put the array on the stack if it wants to. Comments appreciated. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------