digitalmars.D.bugs - [Issue 10912] New: property overridding requires both accessors to be overridden
- d-bugmail puremagic.com (55/55) Aug 27 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10912
- d-bugmail puremagic.com (20/20) Aug 27 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10912
http://d.puremagic.com/issues/show_bug.cgi?id=10912 Summary: property overridding requires both accessors to be overridden Product: D Version: D2 Platform: All URL: http://dpaste.dzfl.pl/7bd529ae OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: burg.basile yahoo.com When overriding a property setter in a descendant class, the getter must also be overridden (or explicitly called with super), otherwise the compiler doesnt understand we want to call the getter. example: --- import std.stdio; class foo { private int fMyField; public: property { void MyField(int aValue){fMyField = aValue;} int MyField(){return fMyField;} } } class bar: foo { public: property { override void MyField(int aValue){fMyField = 0;} } this() { writeln(MyField());// dmd should detect that the getter exists in foo. writeln(super.MyField());//super. would be superfluous } } void main(string[] args) { auto Bar = new bar; } --- result: compile-time error, "Error: function f337.bar.MyField (int aValue) is not callable using argument types ()" -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 27 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10912 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |andrej.mitrovich gmail.com Resolution| |INVALID 19:42:59 PDT --- Use: alias super.MyField MyField; in the 'bar' class. When you override only one overload of a function, the other functions are hidden, unless you re-introduce the overloadset to the subclass. This is related to function hijacking, which you can read about here: http://dlang.org/hijack.html Although that page seems to miss the information about using 'alias super.name name' for subclasses, it should probably be filed as a website bug. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 27 2013