[Issue 4832] New: Functions external to class break immutability
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Sep 6 13:37:35 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4832
Summary: Functions external to class break immutability
Product: D
Version: D2
Platform: Other
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: andrej.mitrovich at gmail.com
--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2010-09-06 13:37:14 PDT ---
Code:
import std.stdio : writeln;
void foo(ref int x)
{
x = 10;
}
class Bar
{
immutable int x;
this()
{
x = 5;
}
void printMe()
{
writeln(this.x);
}
void change()
{
//~ this.x = 20; // illegal, errors out
}
}
void main()
{
Bar bar = new Bar;
bar.printMe(); // prints 5
//~ bar.x = 10; // illegal, errors out
foo(bar.x); // no error!
bar.printMe(); // prints 10
}
The commented out code would error out at compile time, which is expected. But
the function bar() is breaking immutability of x.
A relevant bug is bug 4416 , and my comment:
http://d.puremagic.com/issues/show_bug.cgi?id=4416#c1
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list