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








d-bugmail puremagic.com