digitalmars.D.learn - Can't evaluate enum at compile time
- Andrej Mitrovic (10/10) Feb 04 2011 import std.path : join;
- bearophile (9/10) Feb 04 2011 Most of Phobos is written in D, and D distributions contain full source ...
- bearophile (1/2) Feb 04 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5524
- Andrej Mitrovic (4/9) Feb 04 2011 Yeah. I was in the middle of something so I was too lazy to go figure
import std.path : join; enum rootdir = r"C:\Path\"; enum testdir = join(rootdir, "simple"); void main() { } enumBug.d(4): Error: variable __arrayArg774 is used before initialization enumBug.d(4): Error: cannot evaluate join("C:\\Path\\","simple",(const(char)[][0u] __arrayArg774 = void; , cast(const(char)[][])__arrayArg774)) at compile time enumBug.d(4): Error: cannot evaluate join("C:\\Path\\","simple",(const(char)[][0u] __arrayArg774 = void; , cast(const(char)[][])__arrayArg774)) at compile time std.path is supposed to work on strings, it doesn't touch std.file at all. Why can't it run at compile time?
Feb 04 2011
Andrej Mitrovic:std.path is supposed to work on strings, it doesn't touch std.file at all. Why can't it run at compile time?Most of Phobos is written in D, and D distributions contain full source code, so in similar cases you just need to take a look at the sources of Phobos and do some experiments to locate the problem. It seems your problem is caused by a CTFE bug, I will file it in bugzilla: int foo(int x, int y, int[] more...) { return 0; } enum r = foo(0, 0); void main() {} Bye, bearophile
Feb 04 2011
I will file it in bugzilla:http://d.puremagic.com/issues/show_bug.cgi?id=5524
Feb 04 2011
On 2/4/11, bearophile <bearophileHUGS lycos.com> wrote:Most of Phobos is written in D, and D distributions contain full source code, so in similar cases you just need to take a look at the sources of Phobos and do some experiments to locate the problem.Yeah. I was in the middle of something so I was too lazy to go figure it out on my own, hence I posted it here. :)It seems your problem is caused by a CTFE bug, I will file it in bugzilla:Thanks!
Feb 04 2011