Re: Why is creating of if Expressions not allowed?

2019-03-24 Thread sighoya via Digitalmars-d-learn
On Sunday, 24 March 2019 at 18:59:45 UTC, Adam D. Ruppe wrote: Think of mixin() not as pasting code per se, but pasting an AST node inside the compiler's data structures. It must be a complete node of that tree that can be substituted in. And because AST Nodes aren't expressions means you can

Re: Why is creating of if Expressions not allowed?

2019-03-24 Thread Adam D. Ruppe via Digitalmars-d-learn
On Sunday, 24 March 2019 at 18:18:39 UTC, sighoya wrote: Hmm..., sounds like bad news. Is there any mixin technology for statements? mixin() works for statements too. It is the *context* though. If mixin() appears where the compiler expects an expression, it must give an expression. Ditto for

Re: Why is creating of if Expressions not allowed?

2019-03-24 Thread sighoya via Digitalmars-d-learn
On Sunday, 24 March 2019 at 18:43:51 UTC, Paul Backus wrote: You can't return the result of a string mixin from a function. Instead, return a string from your `GenIf` function, and mix it in at the call site: string GenIf() { return "if (true) { return true; } else { return false; }"; } b

Re: Why is creating of if Expressions not allowed?

2019-03-24 Thread Alex via Digitalmars-d-learn
On Sunday, 24 March 2019 at 18:18:39 UTC, sighoya wrote: Hmm..., sounds like bad news. Is there any mixin technology for statements? There was a recent thread on this. https://forum.dlang.org/post/mailman.6499.1547823247.29801.digitalmar...@puremagic.com However, do you have a clear use cas

Re: Why is creating of if Expressions not allowed?

2019-03-24 Thread Paul Backus via Digitalmars-d-learn
On Sunday, 24 March 2019 at 16:18:49 UTC, sighoya wrote: Why auto GenIf()() { return mixin("if(true) { return true;} else {return false;}"); } public bool testFunction2() { GenIf!(); } gives me: onlineapp.d-mixin-3(3): Error: expression expected, not if onlineapp.d(8): Error: templ

Re: Why is creating of if Expressions not allowed?

2019-03-24 Thread sighoya via Digitalmars-d-learn
On Sunday, 24 March 2019 at 16:57:25 UTC, Rémy Mouëza wrote: On Sunday, 24 March 2019 at 16:18:49 UTC, sighoya wrote: Why auto GenIf()() { return mixin("if(true) { return true;} else {return false;}"); } public bool testFunction2() { GenIf!(); } gives me: onlineapp.d-mixin-3(3): E

Re: Why is creating of if Expressions not allowed?

2019-03-24 Thread Rémy Mouëza via Digitalmars-d-learn
On Sunday, 24 March 2019 at 16:18:49 UTC, sighoya wrote: Why auto GenIf()() { return mixin("if(true) { return true;} else {return false;}"); } public bool testFunction2() { GenIf!(); } gives me: onlineapp.d-mixin-3(3): Error: expression expected, not if onlineapp.d(8): Error: templ

Why is creating of if Expressions not allowed?

2019-03-24 Thread sighoya via Digitalmars-d-learn
Why auto GenIf()() { return mixin("if(true) { return true;} else {return false;}"); } public bool testFunction2() { GenIf!(); } gives me: onlineapp.d-mixin-3(3): Error: expression expected, not if onlineapp.d(8): Error: template instance `onlineapp.GenIf!()` error instantiating