digitalmars.D.bugs - [Issue 3944] New: Require immutable annotation for new fields of class inherited from immutable class
- d-bugmail puremagic.com Mar 12 2010
- d-bugmail puremagic.com Jul 07 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3944 Summary: Require immutable annotation for new fields of class inherited from immutable class Product: D Version: 2.041 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc --- Comment #0 from bearophile_hugs eml.cc 2010-03-12 14:57:54 PST --- This is a wrong D2 program: immutable class Foo {} class Bar : Foo { int x; } void main() { auto b = new Bar; b.x = 10; // line 5 } From the error message it's clear that x is not a mutable variable: test.d(5): Error: can only initialize const member x inside constructor But from the code of the Foo class there is no clear indication that x is immutable. So in this situation I think it's better if the compiler requires a immutable annotation on x too, for code readability, something like: immutable class Foo {} class Bar : Foo { int x; } // Error: attribute x requires 'immutable' annotation void main() { auto b = new Bar; } immutable class Foo {} class Bar : Foo { immutable int x; } // OK, no error void main() { auto b = new Bar; } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 12 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3944 Tim Verweij <tjverweij gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tjverweij gmail.com --- Comment #1 from Tim Verweij <tjverweij gmail.com> 2010-07-07 14:36:34 PDT --- Here's another situation that produces the same error message: class Foo { int x; immutable void bar() { x = 1; } } Error: can only initialize const member x inside constructor It should probably report something along the lines of "immutable member function cannot modify member variables". -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 07 2010








d-bugmail puremagic.com