This class declares operations that are visible in a Type.
Alternatives of patterns, eliminated by explicitouter, except for occurrences in encoded Switch stmt (=remaining Match(CaseDef(.
A tree that has an annotation attached to it.
Applied type <tpt> [ <args> ], eliminated by RefCheck
Value application
Dynamic value application.
Array of expressions, needs to be translated in backend,
Assignment
Either an assignment or a named argument.
Bind of a variable to a rhs pattern, eliminated by explicitouter
Block of expressions (semicolon separated expressions)
Case clause in a pattern match, eliminated during explicitouter (except for occurrences in switch statements)
A class definition.
The ClassInfo
type signature is used to define parents and declarations
of classes, traits, and objects.
The ClassInfo
type signature is used to define parents and declarations
of classes, traits, and objects. If a class, trait, or object C is declared like this
C extends P_1 with ... with P_m { D_1; ...; D_n}
its ClassInfo
type has the following form:
ClassInfo(List(P_1, ..., P_m), Scope(D_1, ..., D_n), C)
An extractor class to create and pattern match with syntax ClassInfo(parents, decls, clazz)
Here, parents
is the list of parent types of the class, decls
is the scope
containing all declarations in the class, and clazz
is the symbol of the class
itself.
A subtype of Type representing refined types as well as ClassInfo
signatures.
A subtype of Type representing refined types as well as ClassInfo
signatures.
Intersection type <parent1> with .
The ConstantType
type is not directly written in user programs, but arises as the type of a constant.
The ConstantType
type is not directly written in user programs, but arises as the type of a constant.
The REPL expresses constant types like Int(11). Here are some constants with their types.
1 ConstantType(Constant(1)) "abc" ConstantType(Constant("abc"))
An extractor class to create and pattern match with syntax ConstantType(constant)
Here, constant
is the constant value represented by the type.
A method or macro definition.
A tree which defines a symbol-carrying entity.
Anonymous function, eliminated by analyzer
Common base class for Apply and TypeApply.
Identifier <name>
Conditional expression
A common base class for class and object definitions.
Import clause
Import selector
A labelled expression.
Literal
- Pattern matching expression (before explicitouter)
Common base class for all member definitions: types, classes, objects, packages, vals and vars, defs.
The MethodType
type signature is used to indicate parameters and result type of a method
The MethodType
type signature is used to indicate parameters and result type of a method
An extractor class to create and pattern match with syntax MethodType(params, respte)
Here, params
is a potentially empty list of parameter symbols of the method,
and restpe
is the result type of the method.
An object definition, e.
The abstract type of names
The abstract type of names
Object instantiation One should always use factory method below to build a user level new.
A packaging, such as package pid { stats }
A tree which references a symbol-carrying entity.
The RefinedType
type defines types of any of the forms on the left,
with their RefinedType representations to the right.
The RefinedType
type defines types of any of the forms on the left,
with their RefinedType representations to the right.
P_1 with ... with P_m { D_1; ...; D_n} RefinedType(List(P_1, ..., P_m), Scope(D_1, ..., D_n)) P_1 with ... with P_m RefinedType(List(P_1, ..., P_m), Scope()) { D_1; ...; D_n} RefinedType(List(AnyRef), Scope(D_1, ..., D_n))
An extractor class to create and pattern match with syntax RefinedType(parents, decls)
Here, parents
is the list of parent types of the class, and decls
is the scope
containing all declarations in the class.
Return expression
Designator <qualifier> .
Type selection <qualifier> # <name>, eliminated by RefCheck
The SingleType
type describes types of any of the forms on the left,
with their TypeRef representations to the right.
The SingleType
type describes types of any of the forms on the left,
with their TypeRef representations to the right.
(T # x).type SingleType(T, x) p.x.type SingleType(p.type, x) x.type SingleType(NoPrefix, x)
An extractor class to create and pattern match with syntax SingleType(pre, sym)
Here, pre
is the prefix of the single-type, and sym
is the stable value symbol
referred to by the single-type.
The type of Scala singleton types, i.
The type of Scala singleton types, i.e. types that are inhabited by only one nun-null value. These include types of the forms
C.this.type C.super.type x.type
as well as constant types.
Singleton type, eliminated by RefCheck
Repetition of pattern, eliminated by explicitouter
Super reference, qual = corresponding this reference
The SuperType
type is not directly written, but arises when C.super
is used
as a prefix in a TypeRef
or SingleType
.
The SuperType
type is not directly written, but arises when C.super
is used
as a prefix in a TypeRef
or SingleType
. It's internal presentation is
SuperType(thistpe, supertpe)
Here, thistpe
is the type of the corresponding this-type. For instance,
in the type arising from C.super, the thistpe
part would be ThisType(C)
.
supertpe
is the type of the super class referred to by the super
.
An extractor class to create and pattern match with syntax SingleType(thistpe, supertpe)
A tree with a mutable symbol field, initialized to NoSymbol.
Instantiation template of a class or trait
The abstract type of names representing types
The abstract type of names representing types
A tree for a term.
Self reference
The ThisType
type describes types of the form on the left with the
correspnding ThisType representations to the right.
The ThisType
type describes types of the form on the left with the
correspnding ThisType representations to the right.
C.this.type ThisType(C)
An extractor class to create and pattern match with syntax ThisType(sym)
where sym
is the class prefix of the this type.
Throw expression
Tree is the basis for scala's abstract syntax.
A tree for a type.
The type of Scala types, and also Scala type signatures.
The type of Scala types, and also Scala type signatures. (No difference is internally made between the two).
Explicit type application.
The TypeBounds
type signature is used to indicate lower and upper type bounds
of type parameters and abstract types.
The TypeBounds
type signature is used to indicate lower and upper type bounds
of type parameters and abstract types. It is not a first-class type.
If an abstract type or type parameter is declared with any of the forms
on the left, its type signature is the TypeBounds type on the right.
T >: L <: U TypeBounds(L, U) T >: L TypeBounds(L, Any) T <: U TypeBounds(Nothing, U)
An extractor class to create and pattern match with syntax TypeBound(lower, upper)
Here, lower
is the lower bound of the TypeBounds
pair, and upper
is
the upper bound.
An abstract type, a type parameter, or a type alias.
The abstract type of names representing terms
The abstract type of names representing terms
The TypeRef
type describes types of any of the forms on the left,
with their TypeRef representations to the right.
The TypeRef
type describes types of any of the forms on the left,
with their TypeRef representations to the right.
T # C[T_1, ..., T_n] TypeRef(T, C, List(T_1, ..., T_n)) p.C[T_1, ..., T_n] TypeRef(p.type, C, List(T_1, ..., T_n)) C[T_1, ..., T_n] TypeRef(NoPrefix, C, List(T_1, ..., T_n)) T # C TypeRef(T, C, Nil) p.C TypeRef(p.type, C, Nil) C TypeRef(NoPrefix, C, Nil)
An extractor class to create and pattern match with syntax TypeRef(pre, sym, args)
Here, pre
is the prefix of the type reference, sym
is the symbol
referred to by the type reference, and args
is a possible empty list of
type argumenrts.
A synthetic tree holding an arbitrary type.
Type annotation, eliminated by explicit outer
A value definition (this includes vars as well, which differ from vals only in having the MUTABLE flag set in their Modifiers.
A common base class for ValDefs and DefDefs.
The constructor/deconstructor for ClassInfoType
instances.
The constructor/deconstructor for ClassInfoType
instances.
The constructor/deconstructor for ConstantType
instances.
The constructor/deconstructor for ConstantType
instances.
The constructor/deconstructor for MethodType
instances.
The constructor/deconstructor for MethodType
instances.
This constant is used as a special value denoting the empty prefix in a path dependent type.
This constant is used as a special value denoting the empty prefix in a path dependent type.
For instance x.type
is represented as SingleType(NoPrefix, <x>)
, where <x>
stands for
the symbol for x
.
This constant is used as a special value that indicates that no meaningful type exists.
This constant is used as a special value that indicates that no meaningful type exists.
The constructor/deconstructor for RefinedType
instances.
The constructor/deconstructor for RefinedType
instances.
The constructor/deconstructor for SingleType
instances.
The constructor/deconstructor for SingleType
instances.
The constructor/deconstructor for SuperType
instances.
The constructor/deconstructor for SuperType
instances.
The constructor/deconstructor for ThisType
instances.
The constructor/deconstructor for ThisType
instances.
The constructor/deconstructor for TypeBounds
instances.
The constructor/deconstructor for TypeBounds
instances.
The constructor/deconstructor for TypeRef
instances.
The constructor/deconstructor for TypeRef
instances.
Maps a Java class to a Scala class symbol
Maps a Java class to a Scala class symbol
The Java class object
A symbol that represents the Scala view of the class.
Maps a Java class to a Scala type reference
Maps a Java class to a Scala type reference
The Java class object
A type (of kind TypeRef
, or ExistentialType
if clazz
is polymorphic)
that represents the class with all type parameters unknown
(i.e. any type parameters of clazz
are existentially quantified).
Return a reference to the companion object of the given class symbol.
An empty deferred value definition corresponding to:
val _: _
This is used as a placeholder in the self
parameter Template if there is
no definition of a self value of self type.
An empty deferred value definition corresponding to:
val _: _
This is used as a placeholder in the self
parameter Template if there is
no definition of a self value of self type.
The value of a field on a receiver instance.
The value of a field on a receiver instance.
The receiver instance
The field
The value contained in receiver.field
.
The greatest lower bound wrt <:< of a list of types
The greatest lower bound wrt <:< of a list of types
Invokes a method on a receiver instance with some arguments
Invokes a method on a receiver instance with some arguments
The receiver instance
The method
The method call's arguments
The result of invoking receiver.meth(args)
The least upper bound wrt <:< of a list of types
The least upper bound wrt <:< of a list of types
Create a Modiiers structure given internal flags, qualifier, annotations
Create a Modiiers structure given internal flags, qualifier, annotations
Create a fresh free variable symbol.
Create a fresh free variable symbol.
the name of the free variable
the value of the free variable at runtime
Create a new term name.
Create a new term name.
Hook to define what show(tree)
means.
Hook to define what show(tree)
means.
Creates a new type name.
Creates a new type name.
Selects term symbol with given name and type from the defined members of prefix type
Selects term symbol with given name and type from the defined members of prefix type
Selects type symbol with given simple name name
from the defined members of owner
.
Selects type symbol with given simple name name
from the defined members of owner
.
Sets the value of a field on a receiver instance.
Sets the value of a field on a receiver instance.
The receiver instance
The field
The new value to be stored in the field.
The symbol corresponding to the globally accessible class with the
given fully qualified name fullName
.
The symbol corresponding to the globally accessible class with the
given fully qualified name fullName
.
The symbol corresponding to the globally accessible object with the
given fully qualified name fullName
.
The symbol corresponding to the globally accessible object with the
given fully qualified name fullName
.
The Scala class symbol that has given fully qualified name
The Scala class symbol that has given fully qualified name
The fully qualified name of the class to be returned
if no class with that name exists to do: throws anything else?
The Scala class symbol corresponding to the runtime class of the given instance.
The Scala class symbol corresponding to the runtime class of the given instance.
The instance
The class Symbol for the instance
Maps a Scala symbol to the corresponding Java class object
Maps a Scala symbol to the corresponding Java class object
if there is no Java class corresponding to the given Scala symbol. Note: If the Scala symbol is ArrayClass, a ClassNotFound exception is thrown because there is no unique Java class corresponding to a Scala generic array
The this-ptype of the globally accessible object with the
given fully qualified name fullName
.
The this-ptype of the globally accessible object with the
given fully qualified name fullName
.
The Scala type corresponding to the runtime type of given instance.
The Scala type corresponding to the runtime type of given instance. If the underlying class is parameterized, this will be an existential type, with unknown type arguments.
The instance.
The Type of the given instance.
Maps a Scala type to the corresponding Java class object
Test two objects for inequality.
Test two objects for inequality.
true
if !(this == that), false otherwise.
Equivalent to x.hashCode
except for boxed numeric types and null
.
Equivalent to x.hashCode
except for boxed numeric types and null
.
For numerics, it returns a hash value which is consistent
with value equality: if two value type instances compare
as true, then ## will produce the same hash value for each
of them.
For null
returns a hashcode where null.hashCode
throws a
NullPointerException
.
a hash value consistent with ==
Test two objects for equality.
Test two objects for equality.
The expression x == that
is equivalent to if (x eq null) that eq null else x.equals(that)
.
true
if the receiver object is equivalent to the argument; false
otherwise.
The empty tree
Factory method for object creation new tpt(args_1)...(args_n)
A New(t, as)
is expanded to: (new t).<init>(as)
Factory method for object creation new tpt(args_1)...(args_n)
A New(t, as)
is expanded to: (new t).<init>(as)
Cast the receiver object to be of type T0
.
Cast the receiver object to be of type T0
.
Note that the success of a cast at runtime is modulo Scala's erasure semantics.
Therefore the expression 1.asInstanceOf[String]
will throw a ClassCastException
at
runtime, while the expression List(1).asInstanceOf[List[String]]
will not.
In the latter example, because the type argument is erased as part of compilation it is
not possible to check whether the contents of the list are of the requested type.
the receiver object.
if the receiver object is not an instance of the erasure of type T0
.
Create a copy of the receiver object.
Tests whether the argument (arg0
) is a reference to the receiver object (this
).
Tests whether the argument (arg0
) is a reference to the receiver object (this
).
The eq
method implements an equivalence relation on
non-null instances of AnyRef
, and has three additional properties:
x
and y
of type AnyRef
, multiple invocations of
x.eq(y)
consistently returns true
or consistently returns false
.x
of type AnyRef
, x.eq(null)
and null.eq(x)
returns false
.null.eq(null)
returns true
. When overriding the equals
or hashCode
methods, it is important to ensure that their behavior is
consistent with reference equality. Therefore, if two objects are references to each other (o1 eq o2
), they
should be equal to each other (o1 == o2
) and they should hash to the same value (o1.hashCode == o2.hashCode
).
true
if the argument is a reference to the receiver object; false
otherwise.
The equality method for reference types.
Called by the garbage collector on the receiver object when there are no more references to the object.
Called by the garbage collector on the receiver object when there are no more references to the object.
The details of when and if the finalize
method is invoked, as
well as the interaction between finalize
and non-local returns
and exceptions, are all platform dependent.
A representation that corresponds to the dynamic class of the receiver object.
A representation that corresponds to the dynamic class of the receiver object.
The nature of the representation is platform dependent.
a representation that corresponds to the dynamic class of the receiver object.
not specified by SLS as a member of AnyRef
The hashCode method for reference types.
Test whether the dynamic type of the receiver object is T0
.
Test whether the dynamic type of the receiver object is T0
.
Note that the result of the test is modulo Scala's erasure semantics.
Therefore the expression 1.isInstanceOf[String]
will return false
, while the
expression List(1).isInstanceOf[List[String]]
will return true
.
In the latter example, because the type argument is erased as part of compilation it is
not possible to check whether the contents of the list are of the specified type.
true
if the receiver object is an instance of erasure of type T0
; false
otherwise.
Equivalent to !(this eq that)
.
Equivalent to !(this eq that)
.
true
if the argument is not a reference to the receiver object; false
otherwise.
Wakes up a single thread that is waiting on the receiver object's monitor.
Wakes up a single thread that is waiting on the receiver object's monitor.
not specified by SLS as a member of AnyRef
Wakes up all threads that are waiting on the receiver object's monitor.
Wakes up all threads that are waiting on the receiver object's monitor.
not specified by SLS as a member of AnyRef
Creates a String representation of this object.
Creates a String representation of this object. The default representation is platform dependent. On the java platform it is the concatenation of the class name, "@", and the object's hashcode in hexadecimal.
a String representation of the object.
A mirror establishes connections of runtime entities such as class names and object instances with a reflexive universe.