编译期间有关未处理类型类的警告

时间:2015-04-18 17:05:30

标签: scala sbt

给出以下最小代码:

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

1 个答案:

答案 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