给出以下最小代码:
package object MyPackage {
case class Pimp(private val i: Int) extends AnyVal
}
SBT(0.13.8)抱怨:
[warn] sbt-api: Unhandled type class scala.reflect.internal.Types$MethodType : ($this: myPackage.package.Pimp)Int
我的构建文件大致如下:
Project("sbtissue", file("sbtissue")).settings(scalaVersion := "2.11.6")
将源文件中的相关行更改为:
class Pimp(private val i: Int) extends AnyVal
或:
case class Pimp(i: Int) extends AnyVal
编译时不会发出警告。 我该怎么做才能防止这种警告?
相关:https://groups.google.com/forum/#!topic/simple-build-tool/KWdg4HfYqMk
答案 0 :(得分:3)
我认为你找到了一个合法的边缘案例,如果有一点利基可能。
我建议删除private
,因为它并不真正符合案例类的想法,而且,如果存在生成的unapply,它也不会隐藏该值反正:
Welcome to Scala version 2.11.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
Type in expressions to have them evaluated.
Type :help for more information.
scala> case class Pimp(private val i: Int) extends AnyVal
defined class Pimp
scala> val p1 = Pimp(1)
p1: Pimp = Pimp(1)
scala> p1.i
<console>:11: error: value i is not a member of Pimp
p1.i
^
scala> val Pimp(n) = p1
n: Int = 1