2
** ________ ___ / / ___ Scala API **
3
** / __/ __// _ | / / / _ | (c) 2002-2011, LAMP/EPFL **
4
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
5
** /____/\___/_/ |_/____/_/ | | **
11
/** This type is required by the compiler and <b>should not be used in client code</b>. */
14
/** This type is required by the compiler and <b>should not be used in client code</b>. */
15
case object NoPrefix extends Type
16
/** This type is required by the compiler and <b>should not be used in client code</b>. */
17
case object NoType extends Type
19
/** This type is required by the compiler and <b>should not be used in client code</b>.
21
case class NamedType(fullname: String) extends Type
23
/** This type is required by the compiler and <b>should not be used in client code</b>.
25
case class PrefixedType(pre: Type, sym: Symbol) extends Type
27
/** This type is required by the compiler and <b>should not be used in client code</b>.
28
* pre.type # sym == pre.sym */
29
case class SingleType(pre: Type, sym: Symbol) extends Type
31
/** This type is required by the compiler and <b>should not be used in client code</b>.
33
case class ThisType(clazz: Symbol) extends Type
35
/** This type is required by the compiler and <b>should not be used in client code</b>.
36
* clazz.super[superClazz]
37
* <code>tpe[args1, ..., argsn]</code> */
38
case class AppliedType(tpe: Type, args: List[Type]) extends Type
40
/** This type is required by the compiler and <b>should not be used in client code</b>.
41
* [a <: lo >: hi] */
42
case class TypeBounds(lo: Type, hi: Type) extends Type
44
/** This type is required by the compiler and <b>should not be used in client code</b>.
45
* <code>(formals1 ... formalsn) restpe</code> */
46
case class MethodType(formals: List[Symbol], restpe: Type) extends Type
48
/** This type is required by the compiler and <b>should not be used in client code</b>. */
49
case class NullaryMethodType(resultType: Type) extends Type
51
/** This type is required by the compiler and <b>should not be used in client code</b>. */
52
case class PolyType(typeParams: List[Symbol], typeBounds: List[(Type, Type)], resultType: Type) extends Type
54
/* Standard pattern match:
56
case reflect.NoPrefix =>
57
case reflect.NoType =>
58
case reflect.NamedType(fullname) =>
59
case reflect.PrefixedType(pre, sym) =>
60
case reflect.SingleType(pre, sym) =>
61
case reflect.ThisType(clazz) =>
62
case reflect.AppliedType(tpe, args) =>
63
case reflect.TypeBounds(lo, hi) =>
64
case reflect.MethodType(formals, restpe) =>
65
case reflect.NullaryMethodType(restpe) =>
66
case reflect.PolyType(typeParams, typeBounds, resultType) =>