A tree printer which is stingier about vertical whitespace and unnecessary punctuation than the standard one.
A tree printer which is stingier about vertical whitespace and unnecessary punctuation than the standard one.
One unit of compilation that has been submitted to the compiler.
One unit of compilation that has been submitted to the compiler. It typically corresponds to a single file of source code. It includes error-reporting hooks.
Documented definition, eliminated by analyzer
Documented definition, eliminated by analyzer
Derived value class injection (equivalent to: new C(arg)
after erasure); only used during erasure.
Derived value class injection (equivalent to: new C(arg)
after erasure); only used during erasure.
The class C
is stored as a tree attachment.
Only used during parsing
Only used during parsing
A Run is a single execution of the compiler on a set of units.
A Run is a single execution of the compiler on a set of units.
Array selection <qualifier> . <name>
only used during erasure
Array selection <qualifier> . <name>
only used during erasure
emitted by typer, eliminated by refchecks
emitted by typer, eliminated by refchecks
(Since version 2.11.0) Use Annotation.tree
to inspect annotation arguments
(Since version 2.11.0) Use Annotation.tree
to inspect annotation arguments
(Since version 2.11.0) Use internal.ReificationSupportApi
instead
(Since version 2.11.0) c.enclosingTree-style APIs are now deprecated; consult the scaladoc for more information
(Since version 2.11.0) Use Annotation.tree
to inspect annotation arguments
(Since version 2.11.0) Use Annotation.tree
to inspect annotation arguments
(Since version 2.11.0) Use Annotation.tree
to inspect annotation arguments
(Since version 2.11.0) Use ModifiersExtractor instead
(Since version 2.11.0) Use Annotation.tree
to inspect annotation arguments
(Since version 2.11.0) Use Annotation.tree
to inspect annotation arguments
(Since version 2.11.0) c.enclosingTree-style APIs are now deprecated; consult the scaladoc for more information
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 ==
The expression x == that
is equivalent to if (x eq null) that eq null else x.equals(that)
.
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.
Construct class definition with given class symbol, value parameters, supercall arguments and template body.
Construct class definition with given class symbol, value parameters, supercall arguments and template body.
the class symbol
the modifiers for the class constructor, i.e. as in class C private (...)
the value parameters -- if they have symbols they
should be owned by sym
the template statements without primary constructor and value parameter fields.
An object representing a missing compilation unit.
An object representing a missing compilation unit.
Factory method for a primary constructor super call super.<init>(args_1)...(args_n)
Factory method for a primary constructor super call super.<init>(args_1)...(args_n)
Returns List of (phase, value) pairs, including only those where the value compares unequal to the previous phase's value.
Returns List of (phase, value) pairs, including only those where the value compares unequal to the previous phase's value.
ICode analysis for optimization
ICode analysis for optimization
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.
ClassCastException
if the receiver object is not an instance of the erasure of type T0
.
ResetAttrs
Create a copy of the receiver object.
Create a copy of the receiver object.
The default implementation of the clone
method is platform dependent.
a copy of the receiver object.
not specified by SLS as a member of AnyRef
Add the internal compiler phases to the phases set.
Add the internal compiler phases to the phases set. This implementation creates a description map at the same time.
Called by Global#computePhaseDescriptors to compute phase order.
Called by Global#computePhaseDescriptors to compute phase order.
Extract all phases supplied by plugins and add them to the phasesSet.
Extract all phases supplied by plugins and add them to the phasesSet.
phasesSet
Fold constants
Fold constants
The raw doc comment of symbol sym
, minus usecase and define sections, augmented by
missing sections of an inherited doc comment.
The raw doc comment of symbol sym
, minus usecase and define sections, augmented by
missing sections of an inherited doc comment.
If a symbol does not have a doc comment but some overridden version of it does,
the doc comment of the overridden version is copied instead.
Copy propagation for optimization
Copy propagation for optimization
The currently active run
The id of the currently active run
The id of the currently active run
This is for WARNINGS which should reach the ears of scala developers whenever they occur, but are not useful for normal users.
This is for WARNINGS which should reach the ears of scala developers whenever they occur, but are not useful for normal users. They should be precise, explanatory, and infrequent. Please don't use this as a logging mechanism. !!! is prefixed to all messages issued via this route to make them visually distinct.
The position of the raw doc comment of symbol sym
, or NoPosition if missing
If a symbol does not have a doc comment but some overridden version of it does,
the position of the doc comment of the overridden version is returned instead.
The position of the raw doc comment of symbol sym
, or NoPosition if missing
If a symbol does not have a doc comment but some overridden version of it does,
the position of the doc comment of the overridden version is returned instead.
The raw doc comment map
The raw doc comment map
In IDE, background compilation runs get interrupted by reloading new sourcefiles. This is weak to avoid memleaks due to the doc of their cached symbols (e.g. in baseTypeSeq) between periodic doc reloads.
Tests whether the argument (that
) is a reference to the receiver object (this
).
Tests whether the argument (that
) 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.
Expand inheritdoc tags
Expand inheritdoc tags
This is done separately, for two reasons: 1. It takes longer to run compared to merge 2. The inheritdoc annotation should not be used very often, as building the comment from pieces severely impacts performance
The source (or parent) comment
The child (overriding member or usecase) comment
The child symbol
The child comment with the inheritdoc sections expanded
Expand variable occurrences in string str
, until a fix point is reached or
an expandLimit is exceeded.
Expand variable occurrences in string str
, until a fix point is reached or
an expandLimit is exceeded.
The string to be expanded
The symbol for which doc comments are generated
The class for which doc comments are generated
Expanded string
Returns just the wiki expansion (this would correspond to a comment in the input format of the JavaDoc tool, modulo differences in tags.)
Returns just the wiki expansion (this would correspond to a comment in the input format of the JavaDoc tool, modulo differences in tags.)
The cooked doc comment of symbol sym
after variable expansion, or "" if missing.
The cooked doc comment of symbol sym
after variable expansion, or "" if missing.
The symbol for which doc comment is returned
The class for which doc comments are generated
ExpansionLimitExceeded
when more than 10 successive expansions
of the same string are done, which is
interpreted as a recursive variable definition.
Extend classpath of platform
and rescan updated packages.
Extend classpath of platform
and rescan updated packages.
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.
not specified by SLS as a member of AnyRef
Tree generation, usually based on existing symbols.
Tree generation, usually based on existing symbols.
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
Returns the file with the given suffix for the given class.
Returns the file with the given suffix for the given class. Used for icode writing.
The hashCode method for reference types.
Icode verification
Icode verification
ICode generator
ICode generator
Invalidates packages that contain classes defined in a classpath entry, and rescans that entry.
Invalidates packages that contain classes defined in a classpath entry, and rescans that entry.
First, the classpath entry referred to by one of the paths
is rescanned,
so that any new files or changes in subpackages are picked up.
Second, any packages for which one of the following conditions is met is invalidated:
The invalidated packages are reset in their entirety; all member classes and member packages are re-accessed using the new classpath.
System packages that the compiler needs to access as part of standard definitions are not invalidated. A system package is: Any package rooted in "scala", with the exception of packages rooted in "scala.tools".
Fully-qualified names that refer to directories or jar files that are entries on the classpath.
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.
Let's share a lot more about why we crash all over the place.
Let's share a lot more about why we crash all over the place. People will be very grateful.
There are common error conditions where when the exception hits here, currentRun.currentUnit is null.
There are common error conditions where when the exception hits here, currentRun.currentUnit is null. This robs us of the knowledge of what file was being compiled when it broke. Since I really really want to know, this hack.
Load all available plugins.
Load all available plugins. Skips plugins that either have the same name as another one, or which define a phase name that another one does.
Load a rough list of the plugins.
Load a rough list of the plugins. For speed, it does not instantiate a compiler run. Therefore it cannot test for same-named phases or other problems that are filtered from the final list of plugins.
Lookup definition of variable.
Lookup definition of variable.
The variable for which a definition is searched
The class for which doc comments are generated
Merge elements of doccomment src
into doc comment dst
for symbol sym
.
Merge elements of doccomment src
into doc comment dst
for symbol sym
.
In detail:
copyFirstPara
is true, copy first paragraph
2. For all parameters of sym
if there is no @param section
in dst
for that parameter name, but there is one on src
, copy that section.
3. If there is no @return section in dst
but there is one in src
, copy it.
Equivalent to !(this eq that)
.
Equivalent to !(this eq that)
.
true
if the argument is not a reference to the receiver object; false
otherwise.
Print tree in detailed form
Print tree in detailed form
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
Computing pairs of overriding/overridden symbols
Computing pairs of overriding/overridden symbols
A description of the phases that will run in this configuration, or all if -Ydebug.
A description of the phases that will run in this configuration, or all if -Ydebug.
Summary of the per-phase values of nextFlags and newFlags, shown under -Xshow-phases -Ydebug.
Summary of the per-phase values of nextFlags and newFlags, shown under -Xshow-phases -Ydebug.
Emit a verbose phase table.
Emit a verbose phase table. The table includes the phase id in the current assembly, or "oo" to indicate a skipped phase, or "xx" to indicate a disabled phase.
descriptive header
whether to truncate the description with an ellipsis (...)
how to describe a component
The names of the phases.
The names of the phases.
A description of all the plugins that are loaded
A description of all the plugins that are loaded
Summary of the options for all loaded plugins
Summary of the options for all loaded plugins
Switch to turn on detailed type logs
Switch to turn on detailed type logs
The raw doc comment of symbol sym
, as it appears in the source text, "" if missing.
The raw doc comment of symbol sym
, as it appears in the source text, "" if missing.
Register new context; called for every created context
Register new context; called for every created context
Register top level class (called on entering the class)
Register top level class (called on entering the class)
ResetAttrs
Scala primitives, used in genicode
Scala primitives, used in genicode
We resolve the class/object ambiguity by passing a type/term name.
We resolve the class/object ambiguity by passing a type/term name.
Called every time an AST node is successfully typechecked in typerPhase.
Called every time an AST node is successfully typechecked in typerPhase.
Called from parser, which signals hereby that a method definition has been parsed.
Called from parser, which signals hereby that a method definition has been parsed.
Called by ScaladocAnalyzer when a doc comment has been parsed.
Called by ScaladocAnalyzer when a doc comment has been parsed.
Some statistics (normally disabled) set with -Ystatistics
Some statistics (normally disabled) set with -Ystatistics
The cooked doc comment of an overridden symbol
The cooked doc comment of an overridden symbol
Don't want to introduce new errors trying to report errors, so swallow exceptions.
Don't want to introduce new errors trying to report errors, so swallow exceptions.
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.
Representing ASTs as graphs
Representing ASTs as graphs
A spare instance of TreeBuilder left for backwards compatibility.
A spare instance of TreeBuilder left for backwards compatibility.
Tree checker
Tree checker
The list of use cases of doc comment of symbol sym
seen as a member of class
site
.
The list of use cases of doc comment of symbol sym
seen as a member of class
site
. Each use case consists of a synthetic symbol (which is entered nowhere else),
of an expanded doc comment string, and of its position.
The symbol for which use cases are returned
The class for which doc comments are generated
ExpansionLimitExceeded
when more than 10 successive expansions
of the same string are done, which is
interpreted as a recursive variable definition.
(Since version 2.10.0) Use enteringPhase
(Since version 2.11.0) Use devWarning if this is really a warning; otherwise use log
(Since version 2.11.0) Use noSelfType
instead
(Since version 2.11.0) Interactive is implemented with a custom Global; this flag is ignored
(Since version 2.11.0) Scaladoc is implemented with a custom Global; this flag is ignored
(Since version 2.10.1) Use isRawType
(Since version 2.10.1) Renamed to reportThrowable
(Since version 2.10.0) use genPolyType(...) instead
(Since version 2.11.0) Use explicit TermName(s)
instead
(Since version 2.11.0) Use explicit TypeName(s)
instead
A version of Global that uses reflection to get class infos, instead of reading class or source files.