https://issues.dlang.org/show_bug.cgi?id=4542
--- Comment #19 from Simon Naarmann <[email protected]> --- (In reply to RazvanN from comment #17) > (In reply to Simon Naarmann from comment #16) > > interface IA { > > package void f(); > > } > > void main() { > > IA a; > > a.f(); > > } > > I don't understand what you expect to happen in this case. You are calling f > which does not have a body. Indeed, if I don't inherit from IA, getting a linker error here is correct in this small example. My best guess of why I posted that reply 6 years ago: It was a faulty reduction of the original bug, but I mistook it for a correct reduction. I dustmited for the linker error and didn't pay attention to whether the reduced linker error arose with or without a class that tried to implement the private/package virtual function. I agree to treat this as a mistake in TDPL and to forbid overriding private/package methods, as the spec says. Nowadays, OP's example also produces a proper compiler error, much better than the original linker error: tdpl_private_virtual.d(18): Error: function `tdpl_private_virtual.CardBoardBox.transmogrify` `private` method is not virtual and cannot override tdpl_private_virtual.d(23): Error: function `tdpl_private_virtual.CardBoardBox.untransmogrify` `private` method is not virtual and cannot override With this good error already in place, I'm happy with the resolution as wontfix. --
