在AnyVal上进行编译时检查以进行分配?

Kev*_*ith 7 scala

Scala文档讨论AnyVal.

在本When Allocation Is Necessary节中,它提到:

case class P(val i: Int) extends AnyVal
val p = new P(3)
p match { // new P instantiated here
  case P(3) => println("Matched 3")
  case P(x) => println("Not 3")
}
Run Code Online (Sandbox Code Playgroud)

在编译时,是否有可能知道是否AnyVal需要分配,即放入堆而不是堆栈?

此外,我想编写上面的代码,然后,在编译时,收到一个p match {导致分配的警告.

据我所知,分配失败的目的AnyVal.