August 20, 2010 [Issue 4690] New: ref return should allow assignment if not overridden | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=4690 Summary: ref return should allow assignment if not overridden Product: D Version: D2 Platform: Other OS/Version: Windows Status: NEW Keywords: rejects-valid Severity: major Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: dsimcha@yahoo.com --- Comment #0 from David Simcha <dsimcha@yahoo.com> 2010-08-20 06:39:19 PDT --- struct Foo { uint num; @property ref uint front() { return num; } ref uint opIndex(size_t index) { return num; } } void main() { Foo foo; foo.front++; // Works foo.front += 1; // error 1 foo.front = 1; // error 2 foo[0] = 1; // error 3 } If something returns by reference then it should be usable for assignment, though if the class/struct contains an explicit setter property or opIndexAssign, this should override assignment via ref return. Here are the error messages produced. test9.d(16): Error: 'foo.front' is not a scalar, it is a @property ref uint() test9.d(16): Error: incompatible types for ((foo.front) += (1)): '@property ref uint()' and 'int' test9.d(17): Error: function test9.Foo.front () is not callable using argument types (int) test9.d(17): Error: expected 0 arguments, not 1 for non-variadic function type @property ref uint() test9.d(18): Error: operator [] assignment overload with opIndex(i, value) illegal, use opIndexAssign(value, i) I'm aware that other bugs have reported bits and pieces of this problem, but I think this is a clearer bug report on the more general issue. Also, marking as major because it's a significant impedement to library development in std.range. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 13, 2011 [Issue 4690] ref return should allow assignment if not overridden | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Simcha | http://d.puremagic.com/issues/show_bug.cgi?id=4690 David Simcha <dsimcha@yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #1 from David Simcha <dsimcha@yahoo.com> 2011-08-12 20:41:34 PDT --- Can't reproduce this anymore. Must have been fixed a long time ago. -- 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