digitalmars.D.bugs - [Issue 11503] New: Type system breaking caused by implicit conversion for the value returned from pure function
- d-bugmail puremagic.com (46/46) Nov 11 2013 https://d.puremagic.com/issues/show_bug.cgi?id=11503
- d-bugmail puremagic.com (22/22) Nov 11 2013 https://d.puremagic.com/issues/show_bug.cgi?id=11503
- d-bugmail puremagic.com (6/6) Jan 12 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11503
- d-bugmail puremagic.com (10/10) Jan 12 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11503
- d-bugmail puremagic.com (10/10) Jan 12 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11503
- d-bugmail puremagic.com (9/9) Jan 26 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11503
https://d.puremagic.com/issues/show_bug.cgi?id=11503 Summary: Type system breaking caused by implicit conversion for the value returned from pure function Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: critical Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: k.hara.pg gmail.com From: http://forum.dlang.org/post/l5o3tq$jof$1 digitalmars.com If an immutable value is returned by pure function, compiler _must_ not implicitly convert it to mutable. Test case: import std.stdio; struct S { immutable(S)* s; this(int) immutable pure { s = &this; } int data; } immutable(S)* makes() pure { return new immutable S(0); } void main() { S* s = makes(); // s is mutable and contains an immutable reference to itself pragma(msg, typeof(s)); // mutable pragma(msg, typeof(s.s)); // immutable writefln("%s", s); // same address writefln("%s", s.s); // same address //s.s.data = 7; // this is immutable s.data = 3; // but this is not!!! } -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 11 2013
https://d.puremagic.com/issues/show_bug.cgi?id=11503 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |yebblies gmail.com Simpler example: import std.stdio; immutable int[] x = [1, 2, 3]; auto makes() pure { return x; } void main() { auto a = x; int[] b = makes(); writefln("%s %s", a.ptr, b.ptr); } -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 11 2013
https://d.puremagic.com/issues/show_bug.cgi?id=11503 PST --- Placed a $150 bounty. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 12 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11503 David Nadlinger <code klickverbot.at> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |code klickverbot.at PST --- Seems to be a fairly simple issue. Regression-testing a fix right now. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 12 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11503 David Nadlinger <code klickverbot.at> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull PST --- https://github.com/D-Programming-Language/dmd/pull/3085 -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 12 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11503 David Nadlinger <code klickverbot.at> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 26 2014