digitalmars.D.bugs - [Issue 12542] New: No function attribute inference for recursive functions
- d-bugmail puremagic.com (43/43) Apr 07 2014 https://d.puremagic.com/issues/show_bug.cgi?id=12542
- d-bugmail puremagic.com (8/20) Apr 08 2014 https://d.puremagic.com/issues/show_bug.cgi?id=12542
- d-bugmail puremagic.com (8/10) Apr 08 2014 https://d.puremagic.com/issues/show_bug.cgi?id=12542
https://d.puremagic.com/issues/show_bug.cgi?id=12542 Summary: No function attribute inference for recursive functions Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: critical Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: monarchdodra gmail.com I've seen this being mentioned before in other bugs, but haven't been able to find an issue proper for it. Basically, if a function is recursive, then none of it's attributes are inferred: It's always impure, throwing and unsafe. //---- int logOf(int n) { if (n) return 1 + logOf(n/2); return 0; } void main() safe nothrow pure { int log = logOf(9); } //---- Error: pure function 'D main' cannot call impure function 'main.logOf' Error: safe function 'D main' cannot call system function 'main.logOf' Error: 'main.logOf' is not nothrow Error: function 'D main' is nothrow yet may throw //---- The compiler should be able to tell that logOf is nothrow and pure. I think it's safe too: Potential risk of stack overflow aren't considered memory unsafe, are they? In any case it's blocking the fixing of certain function attributes, such as those of sort, or sum. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 07 2014
https://d.puremagic.com/issues/show_bug.cgi?id=12542//---- int logOf(int n) { if (n) return 1 + logOf(n/2); return 0; } void main() safe nothrow pure { int log = logOf(9); }For attribute inference, logOf should be template function. https://github.com/D-Programming-Language/dmd/pull/3436 -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 08 2014
https://d.puremagic.com/issues/show_bug.cgi?id=12542For attribute inference, logOf should be template function.Oops. Sorry!https://github.com/D-Programming-Language/dmd/pull/3436Oh, wow. I didn't expect a fix so quickly. Cool. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 08 2014