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









d-bugmail puremagic.com 