summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/api/Liftables.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-12-16 21:50:11 +0100
committerEugene Burmako <xeno.by@gmail.com>2013-12-19 23:38:00 +0100
commit3ef5837be595034949ea083fe0062dc22cb69fa5 (patch)
treea9f449db0704cc9bd488da1c224821b067177469 /src/reflect/scala/reflect/api/Liftables.scala
parentdbe7a366c994fe359edc368bfcd8a6a35a00e0da (diff)
downloadscala-3ef5837be595034949ea083fe0062dc22cb69fa5.tar.gz
scala-3ef5837be595034949ea083fe0062dc22cb69fa5.tar.bz2
scala-3ef5837be595034949ea083fe0062dc22cb69fa5.zip
cosmetic changes to liftables
Namely: 1) Moved definitions of Liftable and Unliftable into a separate file. 2) Inlined internal names that were only used in StandardLiftables.
Diffstat (limited to 'src/reflect/scala/reflect/api/Liftables.scala')
-rw-r--r--src/reflect/scala/reflect/api/Liftables.scala30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/api/Liftables.scala b/src/reflect/scala/reflect/api/Liftables.scala
new file mode 100644
index 0000000000..6ac5557caa
--- /dev/null
+++ b/src/reflect/scala/reflect/api/Liftables.scala
@@ -0,0 +1,30 @@
+package scala
+package reflect
+package api
+
+// TODO: needs a Scaladoc
+trait Liftables { self: Universe =>
+
+ // TODO: needs a Scaladoc
+ trait Liftable[T] {
+ def apply(value: T): Tree
+ }
+
+ // TODO: needs a Scaladoc
+ object Liftable extends StandardLiftableInstances {
+ def apply[T](f: T => Tree): Liftable[T] =
+ new Liftable[T] { def apply(value: T): Tree = f(value) }
+ }
+
+ // TODO: needs a Scaladoc
+ trait Unliftable[T] {
+ def unapply(tree: Tree): Option[T]
+ }
+
+ // TODO: needs a Scaladoc
+ object Unliftable extends StandardUnliftableInstances {
+ def apply[T](pf: PartialFunction[Tree, T]): Unliftable[T] = new Unliftable[T] {
+ def unapply(value: Tree): Option[T] = pf.lift(value)
+ }
+ }
+}