[Issue 7926] stack overflow on recursive string mixin
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Apr 17 01:33:46 PDT 2014
https://issues.dlang.org/show_bug.cgi?id=7926
Kenji Hara <k.hara.pg at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |INVALID
OS|Linux |All
--- Comment #2 from Kenji Hara <k.hara.pg at gmail.com> ---
I don't think this is a bug. The infinite recursive expansion is the intended
behavior of the code. We can write arbitrary code in this kind.
// mutual recursion version
enum string a = "mixin(b);";
enum string b = "mixin(a);";
mixin(a);
// infinite code bloating version
string a(string num = "1")
{
string inc(string num)
{
return (num.length == 0 ? "1" :
num[$-1] == '9' ? inc(num[0..$-1]) ~ "0" :
num[0..$-1] ~ cast(char)(num[$-1] + 1));
}
return `enum a`~num~` = a("`~inc(num)~`"); `~
`/*pragma(msg, a`~num~`);*/` ~
`mixin(a`~num~`);`;
}
mixin(a);
--
More information about the Digitalmars-d-bugs
mailing list