Thread overview | |||||
---|---|---|---|---|---|
|
June 28, 2013 [Issue 10496] New: Initialization in lazy function parameter allows immutable member not to be initialized | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=10496 Summary: Initialization in lazy function parameter allows immutable member not to be initialized Product: D Version: D1 & D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: david.eckardt@sociomantic.com --- Comment #0 from David Eckardt <david.eckardt@sociomantic.com> 2013-06-28 09:00:44 PDT --- class C { immutable int x; this() { this.f(this.x = 5); } void f(lazy int x){} } C.int isn't initialized, although this code compiles. Whether C.int is initialized or not depends on the, in general indeterministic, behavior of f(), this should be a compile time error. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 28, 2013 [Issue 10496] Initialization in lazy function parameter allows immutable member not to be initialized | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Eckardt | http://d.puremagic.com/issues/show_bug.cgi?id=10496 Dicebot <m.strashun@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |m.strashun@gmail.com --- Comment #1 from Dicebot <m.strashun@gmail.com> 2013-06-28 09:21:47 PDT --- I think this is part of a bigger problem: ---------------------------------------- class A { immutable int x; void delegate() f; this() { x = 40; f = () { x = 42; }; } } void main() { import std.stdio; auto a = new A(); writeln(a.x); a.f(); writeln(a.x); } ---------------------------------------- 40 42 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 28, 2013 [Issue 10496] Initialization in lazy function parameter allows immutable member not to be initialized | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Eckardt | http://d.puremagic.com/issues/show_bug.cgi?id=10496 Maxim Fomin <maxim@maxim-fomin.ru> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |maxim@maxim-fomin.ru --- Comment #2 from Maxim Fomin <maxim@maxim-fomin.ru> 2013-06-28 11:08:00 PDT --- The root is that delegate construction does not respect immutability at all. struct S { void foo() immutable {} void baz() { //foo(); (&foo)(); } } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation