scala/scala — pull request #1012 by paulp (2012-07-28 19:04:32+00:00)
Title: Promote unchecked warnings into being emitted by default.

To make that viable, suppression of unchecked warnings is now available
on a per-type-argument basis. The @unchecked annotation has hereby been
generalized beyond exhaustiveness to mean context-dependent "disable further
compiler checking on this entity." Example of new usage:

def f(x: Any) = x match {
case xs: List[String @unchecked] => xs.head // no warning
case xs: List[Int] => xs.head // unchecked warning
}

It turns out -unchecked has been put to other noisy uses such as
the pattern matcher complaining about its budget like a careworn spouse.
This actually simplified the path forward: I left -unchecked in place
for that and general compatibility, so those warnings can be enabled
as before with -unchecked. The erasure warnings I turned into regular
warnings, subject to suppression by @unchecked.

Review by @odersky.