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