digitalmars.D.bugs - [Issue 10064] New: opDollar+final interface function results in a wrong code
- d-bugmail puremagic.com (45/45) May 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10064
- d-bugmail puremagic.com (41/41) Jun 13 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10064
- d-bugmail puremagic.com (10/10) Jul 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10064
- d-bugmail puremagic.com (11/11) Jul 11 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10064
- d-bugmail puremagic.com (10/10) Jul 11 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10064
http://d.puremagic.com/issues/show_bug.cgi?id=10064 Summary: opDollar+final interface function results in a wrong code Product: D Version: D2 Platform: All OS/Version: All Status: NEW Keywords: wrong-code Severity: major Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: verylonglogin.reg gmail.com 05:15:14 MSD --- This module unittest fails when module is in a project but runs fine as a singe file so one have to look at the generated instructions to see the bug: --- struct S { size_t[5] arr; property size_t opDollar() // line 5 { return 0; } int opIndex(size_t index) { return 0; } } interface I { final S getS() { return S(); } } class C: I { this(in size_t[]) { } } unittest { auto i = cast(I) new C([0]); i.getS()[$]; // Causes `null this` at line 5 } --- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10064 Denis Shelomovskij <verylonglogin.reg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|opDollar+final interface |opDollar called on garbage |function results in a wrong | |code | 15:28:03 MSD --- I was incorrect about the issue source. `opDollar` is just called on a garbage: --- struct S { int x = 3; disable this(); this(int) { x = 7; } int opSlice(size_t, size_t) { return 0; } property size_t opDollar() { assert(x == 7 || x == 3); // fails assert(x == 7); return 0; } } void main() { auto x = S(0)[0 .. $]; } --- As a result e.g. this will fail too: --- import std.range; void main() { auto x = zip([1])[$ - 1]; } --- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 13 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10064 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull https://github.com/D-Programming-Language/dmd/pull/2331 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10064 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/c426980fd31433c0bbc182a1f9cc9476fe625278 fix Issue 10064 - opDollar called on garbage https://github.com/D-Programming-Language/dmd/commit/33ce37d6495aad7a3d6644392cf47e1af9d9d493 Issue 10064 - opDollar called on garbage -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 11 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10064 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 11 2013