diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2013-12-16 21:50:11 +0100 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2013-12-19 23:38:00 +0100 |
commit | 3ef5837be595034949ea083fe0062dc22cb69fa5 (patch) | |
tree | a9f449db0704cc9bd488da1c224821b067177469 /src/reflect/scala/reflect/api/Liftables.scala | |
parent | dbe7a366c994fe359edc368bfcd8a6a35a00e0da (diff) | |
download | scala-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.scala | 30 |
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) + } + } +} |