scala.unchecked

class unchecked extends Annotation

An annotation to designate that the annotated entity should not be considered for additional compiler checks. Specific applications include annotating the subject of a match expression to suppress exhaustiveness warnings, and annotating a type argument in a match case to suppress unchecked warnings.

Such suppression should be used with caution, without which one may encounter scala.MatchError or java.lang.ClassCastException at runtime. In most cases one can and should address the warning instead of suppressing it.

scala object Test extends App { // This would normally warn "match is not exhaustive" // because `None` is not covered. def f(x: Option[String]) = (x: @unchecked) match { case Some(y) => y } // This would normally warn "type pattern is unchecked" // but here will blindly cast the head element to String. def g(xs: Any) = xs match { case x: List[String @unchecked] => x.head } }

Instance Constructors From scala.unchecked

new unchecked()

(defined at scala.unchecked)

Full Source:

/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2002-2013, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */

package scala

/** An annotation to designate that the annotated entity
 *  should not be considered for additional compiler checks.
 *  Specific applications include annotating the subject of
 *  a match expression to suppress exhaustiveness warnings, and
 *  annotating a type argument in a match case to suppress
 *  unchecked warnings.
 *
 *  Such suppression should be used with caution, without which
 *  one may encounter [[scala.MatchError]] or [[java.lang.ClassCastException]]
 *  at runtime.  In most cases one can and should address the
 *  warning instead of suppressing it.
 *
 *  {{{
 *    object Test extends App {
 *      // This would normally warn "match is not exhaustive"
 *      // because `None` is not covered.
 *      def f(x: Option[String]) = (x: @unchecked) match { case Some(y) => y }
 *      // This would normally warn "type pattern is unchecked"
 *      // but here will blindly cast the head element to String.
 *      def g(xs: Any) = xs match { case x: List[String @unchecked] => x.head }
 *    }
 * }}}
 *
 *  @since 2.4
 */
class unchecked extends scala.annotation.Annotation {}