http://d.puremagic.com/issues/show_bug.cgi?id=3356
Summary: Make pure functions require immutable parameters Product: D Version: future Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: dfj1es...@sneakemail.com --- Comment #0 from Sobirari Muhomori <dfj1es...@sneakemail.com> 2009-10-01 07:39:29 PDT --- Illustration: --- int foo(const int[] bar) pure { return bar[1]; } void goo() { int[2] a; a[1]=1; foo(a); a[1]=2; foo(a); } --- 1. This doesn't affect functions with value type parameters. 2. When a function takes a reference type parameter, the chanses are slim, that the return value doesn't depend on the referenced data. So the referenced data must be immutable. 3. This doesn't require complex flow analysis, only a formal function signature check. 4. (??) Replace immutability of explicit pointer type with constness, since even if the referenced data is immutable, the code doesn't know, where the immutable data ends and can access subsequent possibly mutating data. This will instantly make any function, taking a pointer, impure. This should not apply to objects and byref data. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------