編譯

2015-04-18 32 views
5

考慮下面的最少的代碼時警告有關未處理的類型類:編譯

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 

我的build文件大致是這樣的:

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

回答

3

我想你已經找到了一個合法的邊緣情況下,如果一個小的利基可能。

我會建議丟棄private,因爲它並不真正適合用例類的想法,而且,給予產生不應用,它並不隱藏值的存在,反正:

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