Thread overview | ||||||
---|---|---|---|---|---|---|
|
April 09, 2013 [Issue 9907] New: Struct literal with destructor should match to non-ref overload | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=9907 Summary: Struct literal with destructor should match to non-ref overload 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: k.hara.pg@gmail.com --- Comment #0 from Kenji Hara <k.hara.pg@gmail.com> 2013-04-08 19:10:38 PDT --- From the forum discussion: http://forum.dlang.org/thread/kjv4ae$3hp$1@digitalmars.com This code should call void opAssign(S rhs) twice. import std.stdio; import std.string; version = destructor_defined; struct S { int i; string info() const { return format("%s(%s)", &i, i); } void opAssign(S rhs) { writefln("%s from Rvalue %s", this.info(), rhs.info()); } void opAssign(ref S rhs) { writefln("%s from Lvalue %s", this.info(), rhs.info()); } version (destructor_defined) { ~this() { writefln("destroying %s", this.info()); } } } S foo(int i) { return S(i); } void main() { auto s = S(1); // Assignment from two kinds of rvalues s = foo(2); // [1] s = S(3); // [2] } In [1], void opAssign(S rhs) is called correctly. But in [2], void opAssign(ref S rhs) is wrongly called. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 09, 2013 [Issue 9907] Struct literal with destructor should match to non-ref overload | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kenji Hara | http://d.puremagic.com/issues/show_bug.cgi?id=9907 Kenji Hara <k.hara.pg@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull --- Comment #1 from Kenji Hara <k.hara.pg@gmail.com> 2013-04-08 20:24:33 PDT --- https://github.com/D-Programming-Language/dmd/pull/1873 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 17, 2013 [Issue 9907] Struct literal with destructor should match to non-ref overload | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kenji Hara | http://d.puremagic.com/issues/show_bug.cgi?id=9907 --- Comment #2 from github-bugzilla@puremagic.com 2013-04-17 14:08:04 PDT --- Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/065514be2bc214f70575e2877f971da11a3d8637 fix Issue 9907 - Struct literal with destructor should match to non-ref overload https://github.com/D-Programming-Language/dmd/commit/e5ca01905d59fbbccce45ef66803ee8f05a2ef70 Merge pull request #1873 from 9rnsr/fix9907 Issue 9907 - Struct literal with destructor should match to non-ref overload -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 18, 2013 [Issue 9907] Struct literal with destructor should match to non-ref overload | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kenji Hara | http://d.puremagic.com/issues/show_bug.cgi?id=9907 Kenji Hara <k.hara.pg@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- 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