Aladdin - Scala Bugtracking
[#1139] project: compiler priority: low category: bug
submitter assigned to status date submitted
Sean Martin open 2007-05-24 22:19:02.0
subject bridge not generated in trait/case class construction
code
// test/Test.scala, derived from my own code
package test;
trait Extension { 
  trait SpanNode
  trait LinkedNode  { 
    trait ParseNode extends SpanNode;
    def ParseNode : SpanNode
  }
  def f(node : LinkedNode) : SpanNode = node.ParseNode
}
object Test extends Extension {
  trait LinkedNode extends super.LinkedNode {
    case class ParseNode extends super.ParseNode;
  }
  class LinkedNode0 extends Test.LinkedNode
  def main(args : Array[String]) : Unit = {
    val n = new LinkedNode0
    n.ParseNode // OK
    f(n)        // throws AME
  }
}
what happened
Exception in thread "main" java.lang.AbstractMethodError: test.Test$LinkedNode0.ParseNode()Ltest/Test$LinkedNode\
$ParseNode;
	at test.Test$LinkedNode0.ParseNode(Test.scala:15)
	at test.Extension$class.f(Test.scala:9)
	at test.Test$.f(Test.scala:11)
	at test.Test$.main(Test.scala:19)
	at test.Test.main(Test.scala)

Seems like a bridge method in LinkedNode with the signature ParseNode.SpanNode is expected by Extension, but not\
 generated given that the case class is defined in a trait. 
what expected
[back to overview]
Changes of this bug report
Martin  edited on  2007-06-01 18:00:05.0
This might go away once we change case factory methods to objects. Deferred