Aladdin - Scala Bugtracking
[#1154] project: compiler priority: low category: bug
submitter assigned to status date submitted
Nikolay Martin noise 2007-05-30 13:21:26.0
subject [contrib #573] cannot override method with abstract method with narrower return type
code
trait A {
    def x: Seq[String] = Seq.empty
}

trait B extends A {
    override def x: List[String]
}

/*
class C extends AnyRef with B {
    override def x: List[String] = Nil
}
*/
what happened
./test.scala:5: error: error overriding method x;
 method x in trait A of type => Seq[String] has incompatible type => Seq[String]
trait B extends A {
^
what expected compilation without errors
[back to overview]
Changes of this bug report
Nikolay  edited on  2007-05-30 13:21:44.0
Martin  edited on  2007-05-30 18:20:18.0
The rules of Scala say that x in A overrides x in B, even though B is a subclass of A. Therefore, the error message is correct.