On Tue, Nov 17, 2009 at 2:07 AM, Don <nos...@nospam.com> wrote:
> Travis Boucher wrote:
>>
>> I've been playing with string mixins, and they are very powerful.
>>
>> One thing I can't figure out is what exactly can and cannot be evaluated
>> at compile time.
>>
>> For example:
>>
>> ----
>> char[] myFunc1() {
>>    return "int a = 1;";
>> }
>>
>> char[] myFunc2() {
>>    char[] myFunc3() {
>>        return "int b = 2;";
>>    }
>>    return myFunc3();
>> }
>>
>> void main() {
>>    mixin(myFunc1());
>>    mixin(myFunc2());
>> }
>> ----
>>
>> myFunc1() can be used as a string mixin.
>> myFunc2() can't be.
>
> I think you're using an old version of DMD. It's been working since
> DMD1.047. Please upgrade to the latest version, you'll find it a lot less
> frustrating.
> The bottom of "function.html" in the spec gives the rules.
> Though it says nested functions aren't supported, but they are.

Ah, forgot about that list.  Good point.
But still Travis should know that the list is not exhaustive.
For instance the other day I found that this didn't work for some reason:

   while(i < a - b) { ... }

Instead I had to do

   int limit = a-b;
   while(i < limit) { ... }

--bb

Reply via email to