digitalmars.D.bugs - [Issue 1016] New: CTFE fails with recursive functions
- d-bugmail puremagic.com (47/47) Mar 02 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1016
- d-bugmail puremagic.com (12/12) Mar 08 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1016
- d-bugmail puremagic.com (9/9) Mar 11 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1016
http://d.puremagic.com/issues/show_bug.cgi?id=1016 Summary: CTFE fails with recursive functions Product: D Version: 1.007 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: clugdbug yahoo.com.au This seems to be a tail recursion problem? Calling the function recursively (while ignoring the result) seems to clobber the local value of the variable. I'm not sure if line (3) is the same bug or not; there seems to be a morass of related bugs in the CTFE stuff. ----------------- int exprLength(char [] s) { int numParens=0; for (int i=0; i<s.length; ++i) { if (s[i]=='(') { numParens++; } if (s[i]==')') { numParens--; } if (numParens == 0) { return i; } } } char [] makePostfix(char [] operations) { if (operations.length<2) return "x"; int x = exprLength(operations); char [] first="bad"; if (x>0) { first = "ok"; char [] ignore = makePostfix(operations[1..x]); // This makes (2) fail. } return first; } void main() { char [] q = makePostfix("(a+b)*c"); assert(q=="ok"); // (1) PASSES const char [] q2 = makePostfix("(a+b)*c"); static assert(q2=="ok"); // (2) FAILS static assert(makePostfix("(a+b)*c")=="ok"); // (3) not evaluatable at compile time } --
Mar 02 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1016 thomas-dloop kuehne.cn changed: What |Removed |Added ---------------------------------------------------------------------------- OS/Version|Windows |All Added to DStress as http://dstress.kuehne.cn/compile/c/const_43_A.d http://dstress.kuehne.cn/compile/c/const_43_B.d http://dstress.kuehne.cn/compile/c/const_43_C.d http://dstress.kuehne.cn/compile/c/const_43_D.d --
Mar 08 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1016 thomas-dloop kuehne.cn changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Fixed in DMD-1.009 --
Mar 11 2007