Thread overview |
---|
April 06, 2009 [Issue 2804] New: Impure nested functions should be legal inside pure functions[patch included] | ||||
---|---|---|---|---|
| ||||
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@digitalmars.com ReportedBy: clugdbug@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' -- |
April 06, 2009 [Issue 2804] Impure nested functions should be legal inside pure functions[patch included] | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2804 ------- Comment #1 from clugdbug@yahoo.com.au 2009-04-06 06:30 ------- Created an attachment (id=315) --> (http://d.puremagic.com/issues/attachment.cgi?id=315&action=view) patch for 2804 This allows pure functions to call their own nested functions (even if such functions aren't marked as pure), but prevents nested functions inside pure functions from (1) calling impure functions and (2) accessing static variables. -- |
April 18, 2009 [Issue 2804] Impure nested functions should be legal inside pure functions[patch included] | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2804 clugdbug@yahoo.com.au changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #2 from clugdbug@yahoo.com.au 2009-04-18 01:05 ------- Fixed DMD2.028 -- |
Copyright © 1999-2021 by the D Language Foundation