digitalmars.D.bugs - [Issue 4041] New: Error with ref or auto ref return from opOpAssign
- d-bugmail puremagic.com (42/42) Apr 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4041
- d-bugmail puremagic.com (10/10) Sep 25 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4041
- d-bugmail puremagic.com (29/29) Jun 20 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4041
- d-bugmail puremagic.com (15/15) Feb 01 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4041
http://d.puremagic.com/issues/show_bug.cgi?id=4041 Summary: Error with ref or auto ref return from opOpAssign Product: D Version: 2.041 Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: aldacron gmail.com struct Foo { int x; ref Foo opOpAssign(string op)(ref Foo f) if(op == "+=") { x += f.x; return this; } } void main() { Foo f1 = Foo(1); Foo f2 = Foo(2); f2 += f1; } Results in: refret.d(5): Error: variable refret.Foo.op only parameters or foreach declaratio ns can be ref Change the return type from 'ref Foo' to 'auto ref Foo' and the same error occurs. Remove the ref from the return and it compiles. Comment out the 'f2 += f1' and it compiles. This happens on both 2.041 and 2.042. I haven't tried earlier versions. BTW, 2.042 is missing from the version list here on Bugzilla. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 01 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4041 Shin Fujishiro <rsinfu gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |samukha voliacable.com --- *** Issue 4934 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 25 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4041 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |k.hara.pg gmail.com Trivial fix of sample code: ---- struct Foo { int x; ref Foo opOpAssign(string op)(ref Foo f) if(op == "+") // <- "+=" { x += f.x; return this; } } void main() { Foo f1 = Foo(1); Foo f2 = Foo(2); f2 += f1; } ---- And, on dmd 2.054 (d36b3b12fc4814e59f3a0d680b8700e787b1ceff) this code has passed to compile. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 20 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4041 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |yebblies gmail.com Platform|x86 |All Version|2.041 |D2 Resolution| |WORKSFORME OS/Version|Windows |All I can't reproduce this. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 01 2012