[#213] | project: compiler | priority: medium | category: bug | |
---|---|---|---|---|
submitter | assigned to | status | date submitted | |
Philippe | Philippe | fixed | 2003-10-29 10:46:13.0 | |
subject | Missing bridge methods when All or AllRef is returned | |||
code |
trait Foo { def testAll: Unit; def testAllRef: String; } class Bar extends Foo { def testAll = (().asInstanceOf[All] : All); def testAllRef = ("".asInstanceOf[AllRef] : AllRef); } object Test { def main(args: Array[String]): Unit = { val foo: Foo = new Bar; foo.testAll; foo.testAllRef; () } } |
|||
what happened | Exception in thread "main" java.lang.AbstractMethodError: Bar$class.testAll()V at Test$.main(tmp/test.scala:14) at Test.main(tmp/test.scala) |
|||
what expected | There should be no error. The problem is caused by missing bridge methods. Those are missing because isSubType uses Definitions.ANY_TYPE and Definitions.ANYREF_TYPE which contain wrong value after explicitouter phase. |
|||
[back to overview] |
Philippe edited on 2003-10-30 13:57:32.0 |
Fixed by transforming _TYPE fields into methods in class |