diff options
Diffstat (limited to 'scalalib/overrides/scala/util/control/NoStackTrace.scala')
-rw-r--r-- | scalalib/overrides/scala/util/control/NoStackTrace.scala | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/scalalib/overrides/scala/util/control/NoStackTrace.scala b/scalalib/overrides/scala/util/control/NoStackTrace.scala new file mode 100644 index 0000000..bcc2839 --- /dev/null +++ b/scalalib/overrides/scala/util/control/NoStackTrace.scala @@ -0,0 +1,33 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +package scala +package util.control + +/** A trait for exceptions which, for efficiency reasons, do not + * fill in the stack trace. Stack trace suppression can be disabled + * on a global basis via a system property wrapper in + * [[scala.sys.SystemProperties]]. + * + * @author Paul Phillips + * @since 2.8 + */ +trait NoStackTrace extends Throwable { + override def fillInStackTrace(): Throwable = + if (NoStackTrace.noSuppression) super.fillInStackTrace() + else this +} + +object NoStackTrace { + final def noSuppression = _noSuppression + + // two-stage init to make checkinit happy, since sys.SystemProperties.noTraceSupression.value calls back into NoStackTrace.noSuppression + final private var _noSuppression = false + // !!! Disabled in Scala.js because SystemProperties is not supported + //_noSuppression = sys.SystemProperties.noTraceSupression.value +} |