Why is it possible to override an empty-parentheses method with an object?
trait A {
def meth = {}
def meth_p() = {}
}
class B extends A {
object meth_p
} // compiles
Overriding the method without parentheses does not compile:
class B1 extends A {
object meth
} // does not compile
Neither do any of the following combinations work (without override modifier):
class BX extends A {
// of course, each declaration should get its own class
def meth = {}
def meth_p() = {}
def meth() = {}
def meth_p = {}
val meth = {}
val meth_p = {}
// ...
}
Is this documented and useful behaviour? I’ve just run into a very subtle bug because of this accidental override.
This sure as hell looks like a bug. If you do this the other way around it just gets weirder.