[Issue 6471] std.metastrings.Format has recursive expansion problems

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jul 1 17:12:27 PDT 2013


http://d.puremagic.com/issues/show_bug.cgi?id=6471



--- Comment #3 from Ellery Newcomer <ellery-newcomer at utulsa.edu> 2013-07-01 17:12:25 PDT ---
Depends on whether you consider it a dmd issue or a phobos issue.

I just took a second look at this and.. you get a recursion depth of exactly
500 for templates. I don't recall this restriction being documented anywhere,
so if it isn't, it should be, and after that maybe take up the question of
whether it is an acceptable restriction (with ctfe maybe it is now).

import std.string;
enum s = "abcdefghijklmorpshtn";
static assert(s.length == 20);
enum t = s ~ s;
static assert(t.length == 40);
enum u = t ~ t;
static assert(u.length == 80);
enum v = u ~ u;
static assert(v.length == 160);
enum w = v ~ v;
static assert(w.length == 320);
enum x = w ~ v ~ s;
static assert(x.length == 500);
/*
// ok!
enum x = w ~ v ~ s[1..$];
static assert(x.length == 499);
*/

template iter(string s, T) {
    static if(s.length == 0) {
        enum iter = "";
    }else{
        enum iter = toUpper(s[0..1]) ~ iter!(s[1..$], T);
    }
}

pragma(msg, iter!(x, int));

void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list