summaryrefslogtreecommitdiff
path: root/src/library-aux
diff options
context:
space:
mode:
Diffstat (limited to 'src/library-aux')
-rw-r--r--src/library-aux/scala/Any.scala19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/library-aux/scala/Any.scala b/src/library-aux/scala/Any.scala
index 031b7d9d8c..07a9ffa8d5 100644
--- a/src/library-aux/scala/Any.scala
+++ b/src/library-aux/scala/Any.scala
@@ -10,6 +10,25 @@ package scala
/** Class `Any` is the root of the Scala class hierarchy. Every class in a Scala
* execution environment inherits directly or indirectly from this class.
+ *
+ * Starting with Scala 2.10 it is possible to directly extend `Any` using ''universal traits''.
+ * A ''universal trait'' is a trait that extends `Any`, only has `def`s as members, and does no initialization.
+ *
+ * The main use case for universal traits is to allow basic inheritance of methods for [[scala.AnyVal value classes]].
+ * For example,
+ *
+ * {{{
+ * trait Printable extends Any {
+ * def print(): Unit = println(this)
+ * }
+ * class Wrapper(val underlying: Int) extends AnyVal with Printable
+ *
+ * val w = new Wrapper(3)
+ * w.print()
+ * }}}
+ *
+ * See the [[http://docs.scala-lang.org/sips/pending/value-classes.html value classes guide]] for more
+ * details on the interplay of universal traits and value classes.
*/
abstract class Any {
/** Compares the receiver object (`this`) with the argument object (`that`) for equivalence.