summaryrefslogtreecommitdiff
path: root/examples/scala-js/scalalib/overrides
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/scalalib/overrides')
-rw-r--r--examples/scala-js/scalalib/overrides/scala/App.scala83
-rw-r--r--examples/scala-js/scalalib/overrides/scala/Enumeration.scala284
-rw-r--r--examples/scala-js/scalalib/overrides/scala/Symbol.scala117
-rw-r--r--examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala29
-rw-r--r--examples/scala-js/scalalib/overrides/scala/math/ScalaNumber.scala21
-rw-r--r--examples/scala-js/scalalib/overrides/scala/runtime/BoxesRunTime.scala124
-rw-r--r--examples/scala-js/scalalib/overrides/scala/util/control/NoStackTrace.scala33
7 files changed, 0 insertions, 691 deletions
diff --git a/examples/scala-js/scalalib/overrides/scala/App.scala b/examples/scala-js/scalalib/overrides/scala/App.scala
deleted file mode 100644
index c49817b..0000000
--- a/examples/scala-js/scalalib/overrides/scala/App.scala
+++ /dev/null
@@ -1,83 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2010-2013, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
-** /____/\___/_/ |_/____/_/ | | **
-** |/ **
-\* */
-
-package scala
-
-import scala.compat.Platform.currentTime
-import scala.collection.mutable.ListBuffer
-
-import scala.scalajs.js.annotation.JSExport
-
-/** The `App` trait can be used to quickly turn objects
- * into executable programs. Here is an example:
- * {{{
- * object Main extends App {
- * Console.println("Hello World: " + (args mkString ", "))
- * }
- * }}}
- * Here, object `Main` inherits the `main` method of `App`.
- *
- * `args` returns the current command line arguments as an array.
- *
- * ==Caveats==
- *
- * '''''It should be noted that this trait is implemented using the [[DelayedInit]]
- * functionality, which means that fields of the object will not have been initialized
- * before the main method has been executed.'''''
- *
- * It should also be noted that the `main` method will not normally need to be overridden:
- * the purpose is to turn the whole class body into the “main method”. You should only
- * chose to override it if you know what you are doing.
- *
- * @author Martin Odersky
- * @version 2.1, 15/02/2011
- */
-trait App extends DelayedInit {
-
- /** The time when the execution of this program started, in milliseconds since 1
- * January 1970 UTC. */
- val executionStart: Long = currentTime
-
- /** The command line arguments passed to the application's `main` method.
- */
- protected def args: Array[String] = _args
-
- private var _args: Array[String] = _
-
- private val initCode = new ListBuffer[() => Unit]
-
- /** The init hook. This saves all initialization code for execution within `main`.
- * This method is normally never called directly from user code.
- * Instead it is called as compiler-generated code for those classes and objects
- * (but not traits) that inherit from the `DelayedInit` trait and that do not
- * themselves define a `delayedInit` method.
- * @param body the initialization code to be stored for later execution
- */
- override def delayedInit(body: => Unit) {
- initCode += (() => body)
- }
-
- /** The main method.
- * This stores all argument so that they can be retrieved with `args`
- * and the executes all initialization code segments in the order they were
- * passed to `delayedInit`
- *
- * @param args the arguments passed to the main method
- */
- def main(args: Array[String]) = {
- this._args = args
- for (proc <- initCode) proc()
-
- /* DELETED for Scala.js
- if (util.Properties.propIsSet("scala.time")) {
- val total = currentTime - executionStart
- Console.println("[total " + total + "ms]")
- }
- */
- }
-}
diff --git a/examples/scala-js/scalalib/overrides/scala/Enumeration.scala b/examples/scala-js/scalalib/overrides/scala/Enumeration.scala
deleted file mode 100644
index bdc1701..0000000
--- a/examples/scala-js/scalalib/overrides/scala/Enumeration.scala
+++ /dev/null
@@ -1,284 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2002-2013, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
-** /____/\___/_/ |_/____/_/ | | **
-** |/ **
-\* */
-
-package scala
-
-import scala.collection.{ mutable, immutable, generic, SortedSetLike, AbstractSet }
-import java.lang.reflect.{ Modifier, Method => JMethod, Field => JField }
-import scala.reflect.NameTransformer._
-import java.util.regex.Pattern
-
-/** Defines a finite set of values specific to the enumeration. Typically
- * these values enumerate all possible forms something can take and provide
- * a lightweight alternative to case classes.
- *
- * Each call to a `Value` method adds a new unique value to the enumeration.
- * To be accessible, these values are usually defined as `val` members of
- * the evaluation.
- *
- * All values in an enumeration share a common, unique type defined as the
- * `Value` type member of the enumeration (`Value` selected on the stable
- * identifier path of the enumeration instance).
- *
- * @example {{{
- * object Main extends App {
- *
- * object WeekDay extends Enumeration {
- * type WeekDay = Value
- * val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
- * }
- * import WeekDay._
- *
- * def isWorkingDay(d: WeekDay) = ! (d == Sat || d == Sun)
- *
- * WeekDay.values filter isWorkingDay foreach println
- * }
- * // output:
- * // Mon
- * // Tue
- * // Wed
- * // Thu
- * // Fri
- * }}}
- *
- * @param initial The initial value from which to count the integers that
- * identifies values at run-time.
- * @author Matthias Zenger
- */
-@SerialVersionUID(8476000850333817230L)
-abstract class Enumeration (initial: Int) extends Serializable {
- thisenum =>
-
- def this() = this(0)
-
- /* Note that `readResolve` cannot be private, since otherwise
- the JVM does not invoke it when deserializing subclasses. */
- protected def readResolve(): AnyRef = ???
-
- /** The name of this enumeration.
- */
- override def toString =
- (getClass.getName.stripSuffix("$").split('.')).last.split('$').last
-
- /** The mapping from the integer used to identify values to the actual
- * values. */
- private val vmap: mutable.Map[Int, Value] = new mutable.HashMap
-
- /** The cache listing all values of this enumeration. */
- @transient private var vset: ValueSet = null
- @transient @volatile private var vsetDefined = false
-
- /** The mapping from the integer used to identify values to their
- * names. */
- private val nmap: mutable.Map[Int, String] = new mutable.HashMap
-
- /** The values of this enumeration as a set.
- */
- def values: ValueSet = {
- if (!vsetDefined) {
- vset = (ValueSet.newBuilder ++= vmap.values).result()
- vsetDefined = true
- }
- vset
- }
-
- /** The integer to use to identify the next created value. */
- protected var nextId: Int = initial
-
- /** The string to use to name the next created value. */
- protected var nextName: Iterator[String] = _
-
- private def nextNameOrNull =
- if (nextName != null && nextName.hasNext) nextName.next() else null
-
- /** The highest integer amongst those used to identify values in this
- * enumeration. */
- private var topId = initial
-
- /** The lowest integer amongst those used to identify values in this
- * enumeration, but no higher than 0. */
- private var bottomId = if(initial < 0) initial else 0
-
- /** The one higher than the highest integer amongst those used to identify
- * values in this enumeration. */
- final def maxId = topId
-
- /** The value of this enumeration with given id `x`
- */
- final def apply(x: Int): Value = vmap(x)
-
- /** Return a `Value` from this `Enumeration` whose name matches
- * the argument `s`. The names are determined automatically via reflection.
- *
- * @param s an `Enumeration` name
- * @return the `Value` of this `Enumeration` if its name matches `s`
- * @throws NoSuchElementException if no `Value` with a matching
- * name is in this `Enumeration`
- */
- final def withName(s: String): Value = {
- val (unnamed, named) = values partition {
- _.toString().startsWith("<Unknown name for enum field ")
- }
-
- named.find(_.toString == s) match {
- case Some(v) => v
- // If we have unnamed values, we issue a detailed error message
- case None if unnamed.nonEmpty =>
- throw new NoSuchElementException(
- s"""Couldn't find enum field with name $s.
- |However, there were the following unnamed fields:
- |${unnamed.mkString(" ","\n ","")}""".stripMargin)
- // Normal case (no unnamed Values)
- case _ => None.get
- }
- }
-
- /** Creates a fresh value, part of this enumeration. */
- protected final def Value: Value = Value(nextId)
-
- /** Creates a fresh value, part of this enumeration, identified by the
- * integer `i`.
- *
- * @param i An integer that identifies this value at run-time. It must be
- * unique amongst all values of the enumeration.
- * @return Fresh value identified by `i`.
- */
- protected final def Value(i: Int): Value = Value(i, nextNameOrNull)
-
- /** Creates a fresh value, part of this enumeration, called `name`.
- *
- * @param name A human-readable name for that value.
- * @return Fresh value called `name`.
- */
- protected final def Value(name: String): Value = Value(nextId, name)
-
- /** Creates a fresh value, part of this enumeration, called `name`
- * and identified by the integer `i`.
- *
- * @param i An integer that identifies this value at run-time. It must be
- * unique amongst all values of the enumeration.
- * @param name A human-readable name for that value.
- * @return Fresh value with the provided identifier `i` and name `name`.
- */
- protected final def Value(i: Int, name: String): Value = new Val(i, name)
-
- /** The type of the enumerated values. */
- @SerialVersionUID(7091335633555234129L)
- abstract class Value extends Ordered[Value] with Serializable {
- /** the id and bit location of this enumeration value */
- def id: Int
- /** a marker so we can tell whose values belong to whom come reflective-naming time */
- private[Enumeration] val outerEnum = thisenum
-
- override def compare(that: Value): Int =
- if (this.id < that.id) -1
- else if (this.id == that.id) 0
- else 1
- override def equals(other: Any) = other match {
- case that: Enumeration#Value => (outerEnum eq that.outerEnum) && (id == that.id)
- case _ => false
- }
- override def hashCode: Int = id.##
-
- /** Create a ValueSet which contains this value and another one */
- def + (v: Value) = ValueSet(this, v)
- }
-
- /** A class implementing the [[scala.Enumeration.Value]] type. This class
- * can be overridden to change the enumeration's naming and integer
- * identification behaviour.
- */
- @SerialVersionUID(0 - 3501153230598116017L)
- protected class Val(i: Int, name: String)
- extends Value with Serializable {
-
- def this(i: Int) = this(i, nextNameOrNull)
- def this(name: String) = this(nextId, name)
- def this() = this(nextId)
-
- assert(!vmap.isDefinedAt(i), "Duplicate id: " + i)
- vmap(i) = this
- vsetDefined = false
- nextId = i + 1
- if (nextId > topId) topId = nextId
- if (i < bottomId) bottomId = i
- def id = i
- override def toString() =
- if (name != null) name
- // Scala.js specific
- else s"<Unknown name for enum field #$i of class ${getClass}>"
-
- protected def readResolve(): AnyRef = {
- val enum = thisenum.readResolve().asInstanceOf[Enumeration]
- if (enum.vmap == null) this
- else enum.vmap(i)
- }
- }
-
- /** An ordering by id for values of this set */
- object ValueOrdering extends Ordering[Value] {
- def compare(x: Value, y: Value): Int = x compare y
- }
-
- /** A class for sets of values.
- * Iterating through this set will yield values in increasing order of their ids.
- *
- * @param nnIds The set of ids of values (adjusted so that the lowest value does
- * not fall below zero), organized as a `BitSet`.
- */
- class ValueSet private[ValueSet] (private[this] var nnIds: immutable.BitSet)
- extends AbstractSet[Value]
- with immutable.SortedSet[Value]
- with SortedSetLike[Value, ValueSet]
- with Serializable {
-
- implicit def ordering: Ordering[Value] = ValueOrdering
- def rangeImpl(from: Option[Value], until: Option[Value]): ValueSet =
- new ValueSet(nnIds.rangeImpl(from.map(_.id - bottomId), until.map(_.id - bottomId)))
-
- override def empty = ValueSet.empty
- def contains(v: Value) = nnIds contains (v.id - bottomId)
- def + (value: Value) = new ValueSet(nnIds + (value.id - bottomId))
- def - (value: Value) = new ValueSet(nnIds - (value.id - bottomId))
- def iterator = nnIds.iterator map (id => thisenum.apply(bottomId + id))
- // This is only defined in 2.11. We change its implementation so it also
- // compiles on 2.10.
- def keysIteratorFrom(start: Value) = from(start).keySet.toIterator
- //nnIds keysIteratorFrom start.id map (id => thisenum.apply(bottomId + id))
- override def stringPrefix = thisenum + ".ValueSet"
- /** Creates a bit mask for the zero-adjusted ids in this set as a
- * new array of longs */
- def toBitMask: Array[Long] = nnIds.toBitMask
- }
-
- /** A factory object for value sets */
- object ValueSet {
- import generic.CanBuildFrom
-
- /** The empty value set */
- val empty = new ValueSet(immutable.BitSet.empty)
- /** A value set consisting of given elements */
- def apply(elems: Value*): ValueSet = (newBuilder ++= elems).result()
- /** A value set containing all the values for the zero-adjusted ids
- * corresponding to the bits in an array */
- def fromBitMask(elems: Array[Long]): ValueSet = new ValueSet(immutable.BitSet.fromBitMask(elems))
- /** A builder object for value sets */
- def newBuilder: mutable.Builder[Value, ValueSet] = new mutable.Builder[Value, ValueSet] {
- private[this] val b = new mutable.BitSet
- def += (x: Value) = { b += (x.id - bottomId); this }
- def clear() = b.clear()
- def result() = new ValueSet(b.toImmutable)
- }
- /** The implicit builder for value sets */
- implicit def canBuildFrom: CanBuildFrom[ValueSet, Value, ValueSet] =
- new CanBuildFrom[ValueSet, Value, ValueSet] {
- def apply(from: ValueSet) = newBuilder
- def apply() = newBuilder
- }
- }
-} \ No newline at end of file
diff --git a/examples/scala-js/scalalib/overrides/scala/Symbol.scala b/examples/scala-js/scalalib/overrides/scala/Symbol.scala
deleted file mode 100644
index 1af9d28..0000000
--- a/examples/scala-js/scalalib/overrides/scala/Symbol.scala
+++ /dev/null
@@ -1,117 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
-** /____/\___/_/ |_/____/_/ | | **
-** |/ **
-\* */
-
-package scala
-
-import scala.scalajs.js
-
-/** This class provides a simple way to get unique objects for equal strings.
- * Since symbols are interned, they can be compared using reference equality.
- * Instances of `Symbol` can be created easily with Scala's built-in quote
- * mechanism.
- *
- * For instance, the [[http://scala-lang.org/#_top Scala]] term `'mysym` will
- * invoke the constructor of the `Symbol` class in the following way:
- * `Symbol("mysym")`.
- *
- * @author Martin Odersky, Iulian Dragos
- * @version 1.8
- */
-final class Symbol private (val name: String) extends Serializable {
- /** Converts this symbol to a string.
- */
- override def toString(): String = "'" + name
-
- @throws(classOf[java.io.ObjectStreamException])
- private def readResolve(): Any = Symbol.apply(name)
- override def hashCode = name.hashCode()
- override def equals(other: Any) = this eq other.asInstanceOf[AnyRef]
-}
-
-// Modified to use Scala.js specific cache
-object Symbol extends JSUniquenessCache[Symbol] {
- override def apply(name: String): Symbol = super.apply(name)
- protected def valueFromKey(name: String): Symbol = new Symbol(name)
- protected def keyFromValue(sym: Symbol): Option[String] = Some(sym.name)
-}
-
-private[scala] abstract class JSUniquenessCache[V]
-{
- private val map = js.Dictionary.empty[js.Any] // V | js.Undefined
-
- protected def valueFromKey(k: String): V
- protected def keyFromValue(v: V): Option[String]
-
- def apply(name: String): V = {
- val cachedSym = map(name)
- if (js.isUndefined(cachedSym)) {
- val sym = valueFromKey(name)
- map(name) = sym.asInstanceOf[js.Any]
- sym.asInstanceOf[V]
- } else {
- cachedSym.asInstanceOf[V]
- }
- }
-
- def unapply(other: V): Option[String] = keyFromValue(other)
-}
-
-/** This is private so it won't appear in the library API, but
- * abstracted to offer some hope of reusability. */
-/* DELETED for Scala.js
-private[scala] abstract class UniquenessCache[K >: js.String, V >: Null]
-{
-
- import java.lang.ref.WeakReference
- import java.util.WeakHashMap
- import java.util.concurrent.locks.ReentrantReadWriteLock
-
- private val rwl = new ReentrantReadWriteLock()
- private val rlock = rwl.readLock
- private val wlock = rwl.writeLock
- private val map = new WeakHashMap[K, WeakReference[V]]
-
- protected def valueFromKey(k: K): V
- protected def keyFromValue(v: V): Option[K]
-
- def apply(name: K): V = {
- def cached(): V = {
- rlock.lock
- try {
- val reference = map get name
- if (reference == null) null
- else reference.get // will be null if we were gc-ed
- }
- finally rlock.unlock
- }
- def updateCache(): V = {
- wlock.lock
- try {
- val res = cached()
- if (res != null) res
- else {
- // If we don't remove the old String key from the map, we can
- // wind up with one String as the key and a different String as
- // as the name field in the Symbol, which can lead to surprising
- // GC behavior and duplicate Symbols. See SI-6706.
- map remove name
- val sym = valueFromKey(name)
- map.put(name, new WeakReference(sym))
- sym
- }
- }
- finally wlock.unlock
- }
-
- val res = cached()
- if (res == null) updateCache()
- else res
- }
- def unapply(other: V): Option[K] = keyFromValue(other)
-}
-*/
diff --git a/examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala b/examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala
deleted file mode 100644
index 8ea135e..0000000
--- a/examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-package scala.concurrent.impl
-
-/**
- * JavaScript specific implementation of AbstractPromise
- *
- * This basically implements a "CAS" in Scala for JavaScript. Its
- * implementation is trivial because there is no multi-threading.
- *
- * @author Tobias Schlatter
- */
-abstract class AbstractPromise {
-
- private var state: AnyRef = _
-
- protected final
- def updateState(oldState: AnyRef, newState: AnyRef): Boolean = {
- if (state eq oldState) {
- state = newState
- true
- } else false
- }
-
- protected final def getState: AnyRef = state
-
-}
-
-object AbstractPromise {
- protected def updater = ???
-}
diff --git a/examples/scala-js/scalalib/overrides/scala/math/ScalaNumber.scala b/examples/scala-js/scalalib/overrides/scala/math/ScalaNumber.scala
deleted file mode 100644
index 811346d..0000000
--- a/examples/scala-js/scalalib/overrides/scala/math/ScalaNumber.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2013, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
-** /____/\___/_/ |_/____/_/ | | **
-** |/ **
-\* */
-
-
-
-package scala.math
-
-/** A marker class for Number types introduced by Scala
- * @author Martin Odersky, Paul Phillips
- * @version 2.8
- * @since 2.8
- */
-abstract class ScalaNumber extends java.lang.Number {
- protected def isWhole(): Boolean
- def underlying(): Object
-}
diff --git a/examples/scala-js/scalalib/overrides/scala/runtime/BoxesRunTime.scala b/examples/scala-js/scalalib/overrides/scala/runtime/BoxesRunTime.scala
deleted file mode 100644
index 5df7fd1..0000000
--- a/examples/scala-js/scalalib/overrides/scala/runtime/BoxesRunTime.scala
+++ /dev/null
@@ -1,124 +0,0 @@
-package scala.runtime
-
-import scala.math.ScalaNumber
-
-object BoxesRunTime {
- def boxToCharacter(c: Char): java.lang.Character =
- java.lang.Character.valueOf(c)
-
- def unboxToChar(c: Object): Char =
- if (c eq null) 0
- else c.asInstanceOf[java.lang.Character].charValue()
-
- def equals(x: Object, y: Object): Boolean =
- if (x eq y) true
- else equals2(x, y)
-
- @inline // only called by equals(), not by codegen
- def equals2(x: Object, y: Object): Boolean = {
- x match {
- case xn: java.lang.Number => equalsNumObject(xn, y)
- case xc: java.lang.Character => equalsCharObject(xc, y)
- case null => y eq null
- case _ => x.equals(y)
- }
- }
-
- def equalsNumObject(xn: java.lang.Number, y: Object): Boolean = {
- y match {
- case yn: java.lang.Number => equalsNumNum(xn, yn)
- case yc: java.lang.Character => equalsNumChar(xn, yc)
- case _ =>
- if (xn eq null)
- y eq null
- else
- xn.equals(y)
- }
- }
-
- def equalsNumNum(xn: java.lang.Number, yn: java.lang.Number): Boolean = {
- (xn: Any) match {
- case xn: Double =>
- (yn: Any) match {
- case yn: Double => xn == yn
- case yn: Long => xn == yn
- case yn: ScalaNumber => yn.equals(xn) // xn is not a ScalaNumber
- case _ => false // xn.equals(yn) must be false here
- }
- case xn: Long =>
- (yn: Any) match {
- case yn: Long => xn == yn
- case yn: Double => xn == yn
- case yn: ScalaNumber => yn.equals(xn) // xn is not a ScalaNumber
- case _ => false // xn.equals(yn) must be false here
- }
- case null => yn eq null
- case _ => xn.equals(yn)
- }
- }
-
- def equalsCharObject(xc: java.lang.Character, y: Object): Boolean = {
- y match {
- case yc: java.lang.Character => xc.charValue() == yc.charValue()
- case yn: java.lang.Number => equalsNumChar(yn, xc)
- case _ =>
- if (xc eq null)
- y eq null
- else
- false // xc.equals(y) must be false here, because y is not a Char
- }
- }
-
- @inline
- private def equalsNumChar(xn: java.lang.Number, yc: java.lang.Character): Boolean = {
- (xn: Any) match {
- case xn: Double => xn == yc.charValue()
- case xn: Long => xn == yc.charValue()
- case _ =>
- if (xn eq null) yc eq null
- else xn.equals(yc)
- }
- }
-
- def hashFromLong(n: java.lang.Long): Int = {
- val iv = n.intValue()
- if (iv == n.longValue()) iv
- else n.hashCode()
- }
-
- def hashFromDouble(n: java.lang.Double): Int = {
- val iv = n.intValue()
- val dv = n.doubleValue()
- if (iv == dv) {
- iv
- } else {
- val lv = n.longValue()
- if (lv == dv) {
- java.lang.Long.valueOf(lv).hashCode()
- } else {
- // don't test the case floatValue() == dv
- n.hashCode()
- }
- }
- }
-
- def hashFromFloat(n: java.lang.Float): Int = {
- hashFromDouble(java.lang.Double.valueOf(n.doubleValue()))
- }
-
- def hashFromNumber(n: java.lang.Number): Int = {
- (n: Any) match {
- case n: Int => n
- case n: java.lang.Long => hashFromLong(n)
- case n: java.lang.Double => hashFromDouble(n)
- case n => n.hashCode()
- }
- }
-
- def hashFromObject(a: Object): Int = {
- a match {
- case a: java.lang.Number => hashFromNumber(a)
- case a => a.hashCode()
- }
- }
-}
diff --git a/examples/scala-js/scalalib/overrides/scala/util/control/NoStackTrace.scala b/examples/scala-js/scalalib/overrides/scala/util/control/NoStackTrace.scala
deleted file mode 100644
index bcc2839..0000000
--- a/examples/scala-js/scalalib/overrides/scala/util/control/NoStackTrace.scala
+++ /dev/null
@@ -1,33 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ 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
-}