3

为一个奇怪的运行时错误挠头:

// File: build.sbt
scalaVersion := "2.10.1"

// File: src/main/scala/bug/Bug.scala
package bug

class Foo(val args: Any*)
case class Bar(id: Int) extends Foo(id)

object Bug extends App {
  val msg = Bar(666)
  val id  = msg.id // boom!
}

如果我用sbt run

[error] (run-main) java.lang.ClassCastException: 
  scala.collection.mutable.WrappedArray$ofRef cannot be cast to java.lang.Integer
java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be 
  cast to java.lang.Integer
    at scala.runtime.BoxesRunTime.unboxToInt(Unknown Source)
    at bug.Bar.id(Test.scala:4)
    at bug.Bug$delayedInit$body.apply(Test.scala:8)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
        ...

这是什么鬼?这似乎是 Scala 2.10.1 的一个新错误,因为如果我更改为scalaVersion := "2.10.0",它运行没有问题。

有什么变通的想法吗?(例如魔术编译器标志)

4

1 回答 1

0

根据 Jason Zaugg 的说法,这是SI-7436,应该在 Scala 2.10.3 中修复。

于 2013-06-04T10:00:12.710 回答