Bug 2853 – Property overriding problem

Status
RESOLVED
Resolution
INVALID
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D1 (retired)
Platform
x86
OS
Windows
Creation time
2009-04-18T18:57:25Z
Last change time
2019-09-10T09:17:42Z
Assigned to
No Owner
Creator
Fractal

Comments

Comment #0 by d294934 — 2009-04-18T18:57:25Z
class Base { int number() { return _number; } // getter int number(int value) { return _number; } // setter private: int _number; } class Extension: Base { override int number(int value) // override setter { return 0; } void method() { printNumber(this.number); // call base getter // main.d(21): Error: function main.Extension.number (int) does not match parameter types () // main.d(21): Error: expected 1 arguments, not 0 } } Tries call overrided setter
Comment #1 by 2korden — 2009-04-18T19:23:40Z
Fake properties must die, all I can say.
Comment #2 by witold.baryluk+d — 2010-02-05T06:01:31Z
Actually setter in the base class is not needed to trigger this bug. Also calling this.number() in method(), so adding call brackets, doesn't solve problem. So it is not only problem with setter/getter. This can lead to problem with perfectly valid code with no properties.
Comment #3 by razvan.nitu1305 — 2019-09-10T09:17:42Z
This bug report is invalid. You have to use alias to pull in the number overload set to Extension. class Extension: Base { alias number = Base.number; override int number(int value) // override setter { return 0; } void method() { printNumber(this.number); // calls Base.number } }