On Wednesday, 12 March 2014 at 11:59:45 UTC, Paulo Pinto wrote:
On Wednesday, 12 March 2014 at 11:40:39 UTC, Manu wrote:

It can also happen the other way if I mark a method virtual that used to be final, which was overloaded in a subclass, right?

--
Paulo

Not really. The way C# handles it (and I assume the way D would as well) is that shadowing a virtual method is a warning. If Bar derives from Foo and implements foobar(int), then at some point Foo decides to add foobar(int), Bar's foobar(int) will not be virtual but a warning will be given that it shadows Foo.foobar(int). You can then either mark it override, or you can mark it new to indicate that you are aware it shadows the method and don't want to overload it. So going from final to virtual is not a breaking change (but you will receive a warning until you acknowledge that you're shadowing the method), but going from virtual to final is a breaking change.

Reply via email to