String Mixins & Compile Time Evaluation
Don
nospam at nospam.com
Tue Nov 17 04:17:59 PST 2009
Bill Baxter wrote:
> On Tue, Nov 17, 2009 at 2:07 AM, Don <nospam at 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) { ... }
I can't reproduce it. Do you have a complete test case?
More information about the Digitalmars-d-learn
mailing list