[Issue 2804] New: Impure nested functions should be legal inside pure functions[patch included]
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Apr 6 04:27:31 PDT 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2804
Summary: Impure nested functions should be legal inside pure
functions[patch included]
Product: D
Version: 2.027
Platform: PC
OS/Version: Windows
Status: NEW
Keywords: patch, rejects-valid
Severity: enhancement
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: clugdbug at yahoo.com.au
Example contributed by bearophile.
------
import std.c.stdio: printf;
import std.conv: toInt;
pure int double_sqr(int x) {
int y, z;
void do_sqr() { y *= y; }
y = x;
do_sqr();
z += y;
y = x;
do_sqr();
z += y;
return z;
}
void main(string[] args) {
int x = args.length == 2 ? toInt(args[1]) : 10;
int y = double_sqr(x) + double_sqr(x);
printf("4 * x * x = %d\n", y);
}
--------
pure_test3.d(...): Error: pure function 'double_sqr' cannot call impure
function 'do_sqr'
pure_test3.d(...): Error: pure function 'double_sqr' cannot call impure
function 'do_sqr'
--
More information about the Digitalmars-d-bugs
mailing list