blob: a8f409e123f1ef3aea777b36336323b4dc98a96d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package scala
package reflect
import scala.reflect.api.{Universe => ApiUniverse}
/**
* <span class="badge badge-red" style="float: right;">EXPERIMENTAL</span>
*
* The Scala Reflection API (located in scala-reflect.jar).
*
* In Scala 2.10.0, the Scala Reflection API and its implementation have an "experimental" status.
* This means that the API and the docs are not complete and can be changed in binary- and source-incompatible
* manner in 2.10.1. This also means that the implementation has some known issues.
*
* The following types are the backbone of the Scala Reflection API, and serve as a good starting point
* for information about Scala Reflection:
*
* - [[scala.reflect.api.Symbols]]
* - [[scala.reflect.api.Types]]
* - [[scala.reflect.api.Mirrors]]
* - [[scala.reflect.api.Universe]]
*
* For more information about Scala Reflection, see the
* [[http://docs.scala-lang.org/overviews/reflection/overview.html Reflection Guide]]
*
* @groupname ReflectionAPI Scala Reflection API
* @groupprio API 9
* @groupprio Extractors 10
* @groupprio Tags 11
* @groupdesc API The methods available for each reflection entity, without the implementation. Since the
* reflection entities are later overridden by runtime reflection and macros, their API
* counterparts guarantee a minimum set of methods that are implemented.
* @groupdesc Extractors Extractors provide the machinery necessary to allow pattern matching and construction of
* reflection entities that is similar to case classes, although the entities are only abstract
* types that are later overridden.
* @groupdesc Tags Implicit values that provide [[scala.reflect.ClassTag `ClassTags`]] for the reflection
* classes. These are abstract in the interface but are later filled in to provide ClassTags
* for the either the runtime reflection or macros entities, depending on the use.
*/
package object api {
// anchors for materialization macros emitted during tag materialization in Implicits.scala
// implementation is hardwired into `scala.reflect.reify.Taggers`
// using the mechanism implemented in `scala.tools.reflect.FastTrack`
// todo. once we have implicit macros for tag generation, we can remove these anchors
private[scala] def materializeWeakTypeTag[T](u: ApiUniverse): u.WeakTypeTag[T] = macro ???
private[scala] def materializeTypeTag[T](u: ApiUniverse): u.TypeTag[T] = macro ???
}
|