digitalmars.D.learn - No 'is not implemented' message with final?
- Namespace (34/34) Sep 10 2013 Code:
- Andrej Mitrovic (24/25) Sep 10 2013 You will get a linker error when you try to use the function.
- Namespace (3/29) Sep 10 2013 Ah, thanks for explanation.
Code: ---- import std.stdio; interface A { public: final void bar(); } class B : A { } void main() { } ---- No message. But: ---- import std.stdio; interface A { public: void bar(); } class B : A { } void main() { } ---- Gives the correct error message: Error: class B interface function 'void bar()' is not implemented Bug or feature?
Sep 10 2013
Bug or feature?You will get a linker error when you try to use the function. This is a feature, because you can implement this function later or even in another module (and set mangling to match). Example of the former: ----- interface A { public: final void bar(); // declaration /** ... */ final void bar() { } // implementation } ----- For the latter: ----- interface A { public: final void bar(); } class B : A { } pragma(mangle, A.bar.mangleof) void A_bar_impl(A _this) { } ----- The mangle pragma feature is new in git-head.
Sep 10 2013
On Tuesday, 10 September 2013 at 21:03:57 UTC, Andrej Mitrovic wrote:Ah, thanks for explanation.Bug or feature?You will get a linker error when you try to use the function. This is a feature, because you can implement this function later or even in another module (and set mangling to match). Example of the former: ----- interface A { public: final void bar(); // declaration /** ... */ final void bar() { } // implementation } ----- For the latter: ----- interface A { public: final void bar(); } class B : A { } pragma(mangle, A.bar.mangleof) void A_bar_impl(A _this) { } ----- The mangle pragma feature is new in git-head.
Sep 10 2013