A name that contains no operator chars nor dollar signs.
A type carrying some annotations.
An additional checker for annotations on types.
Typed information about an annotation.
A class remembering a type instantiation for some a set of overloaded polymorphic symbols.
Precondition: zipped params/args nonEmpty.
Represents an array of classfile annotation arguments
A map to compute the asSeenFrom method
Note: constructor is protected to force everyone to use the factory method newBaseTypeSeq instead.
BoundedWildcardTypes, used only during type inference, are created in two places that I can find:
A class representing a class info
A class for class symbols
Arguments to classfile annotations (which are written to bytecode as java annotations) are either:
A map to implement the collect
method.
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.
A common base class for intersection types and class types
Collects for certain classes of warnings during this run.
A class representing a constant type.
A map to implement the contains
method.
A map to implement the contains
method.
An exception for cyclic references of symbol definitions
A binder defining data associated with De Bruijn indices.
A De Bruijn index referring to a previous type argument.
Aux datastructure for solving the constraint system The depency graph container with helper methods for node and edge creation
A distinguishing flag is one which the mixing class must always have, and which no other symbol class is allowed to have.
Documented definition, eliminated by analyzer
The error scope.
Used by existentialAbstraction.
A map to implement the filter
method.
A map to implement the filter
method.
Not mixed in under normal conditions; a powerful debugging aid.
Precondition: params.
Derived value class injection (equivalent to: new C(arg) after easure); only used during erasure The class C is stored as the symbol of the tree node.
This should be the first trait in the linearization.
Symbol annotations parsed in Namer
(typeCompleter of
definitions) have to be lazy (#1782)
A class representing an as-yet unevaluated type.
Represents a compile-time Constant (Boolean
, Byte
, Short
,
Char
, Int
, Long
, Float
, Double
, String
, java.lang.Class
or
an instance of a Java enumeration value).
A throwable signalling a malformed type
A class for method symbols
A class representing a method type with parameters.
A class for module class symbols Note: Not all module classes are of this type; when unpickled, we get plain class symbols!
A class for module symbols
The name class.
A class representing types with a name.
Represents a nested classfile annotation
An object representing a missing symbol
A class containing the alternatives and type prefix of an overloaded symbol.
Only used during parsing
A period is an ordinal number for a phase in a run.
A period is an ordinal number for a phase in a run. Phases in later runs have higher periods than phases in earlier runs. Later phases have higher periods than earlier phases in the same run.
A type function or the type of a polymorphic value (and thus of kind *).
An exception for cyclic references from which we can recover
A class representing intersection types with refinements of the form
<parents_0> with ... with <parents_n> { decls }
Cannot be created directly;
one should always use refinedType
for creation.
A proxy for a type (identified by field underlying
) that forwards most
operations to it.
A Run is a single execution of the compiler on a sets of units
An ordinal number for compiler runs.
An ordinal number for compiler runs. First run has number 1.
This must guarantee not to force any evaluation, so we can learn a little bit about trees in the midst of compilation without altering the natural course of events.
A specific annotation argument that encodes an array of bytes as an
array of Long
.
Note: constructor is protected to force everyone to use the factory methods newScope or newNestedScope instead.
Array selection <qualifier> .
A proxy for a type (identified by field underlying
) that forwards most
operations to it (for exceptions, see WrappingProxy, which forwards even more operations).
A class for singleton types of the form <prefix>.<sym.name>.type
.
A base class for types that represent a single value (single-types and this-types).
A base class for types that defer some operations to their immediate supertype.
A base class to compute all substitutions
A map to implement the substSym
method.
A map to implement the substThis
method.
A map to implement the subst
method.
The class for all symbols
Symbol creation interface, possibly better moved somewhere else.
A class for term symbols
Substitute clazz.
A class for this-types of the form <sym>.
Generate ASTs
Generate ASTs
Substitute symbols in from
with symbols in to
.
The base class for all types
A class for the bounds of abstract types and type parameters
A class expressing upper and lower bounds constraints of type variables, as well as their instantiations.
A throwable signalling a type error
A prototype for mapping a function over all possible types
A class for named types of the form
<prefix>.<sym.name>[args]
Cannot be created directly; one should always use typeRef
for creation.
A class for type parameters viewed from inside their scopes
A class of type symbols.
emitted by typer, eliminated by refchecks
A class representing a type variable: not used after phase typer
.
Flags which should always be present on a particular class of Symbol, and never be present on any others.
Flags which should always be present on a particular class of Symbol, and never be present on any others.
Block factory that flattens directly nested blocks.
Block factory that flattens directly nested blocks.
casedef shorthand
casedef shorthand
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 supercall arguments
the template statements without primary constructor and value parameter fields.
the class symbol
the implementation template
A writer that writes to the current Console and is sensitive to replacement of the Console's output stream.
The empty scope (immutable).
A map to implement the contains
method.
An object representing an erroneous type
A creator and extractor for type parameterizations that strips empty type parameter lists.
The canonical creator for implicit method types
The canonical creator for implicit method types
the class symbol
the implementation template
0-1 argument list new, based on a type.
0-1 argument list new, based on a type.
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)
An object representing a missing compilation unit.
An object representing a non-existing prefix
An object representing a non-existing type
Generates a template with constructor corresponding to
Generates a template with constructor corresponding to
constrmods (vparams1_) ... (vparams_n) preSuper { presupers } extends superclass(args_1) ... (args_n) with mixins { self => body }
This gets translated to
extends superclass with mixins { self => presupers' // presupers without rhs vparamss // abstract fields corresponding to value parameters def <init>(vparamss) { presupers super.<init>(args) } body }
A TypeDef node which defines abstract type or type parameter for given sym
A TypeDef node which defines abstract type or type parameter for given sym
A TypeDef node which defines given sym
with given tight hand side rhs
.
A TypeDef node which defines given sym
with given tight hand side rhs
.
An object representing an unknown type, used during type inference.
Type with all top-level occurrences of abstract types replaced by their bounds
Type with all top-level occurrences of abstract types replaced by their bounds
Let registered annotation checkers adapt a tree to a given type (called by Typers.
Let registered annotation checkers adapt a tree to a given type (called by Typers.adapt). Annotation checkers that cannot do the adaption should pass the tree through unchanged.
Refine the bounds on type parameters to the given type arguments.
Refine the bounds on type parameters to the given type arguments.
Register an annotation checker.
Register an annotation checker. Typically these are added by compiler plugins.
Let all annotations checkers add extra annotations to this tree's type.
Let all annotations checkers add extra annotations to this tree's type.
Make symbol sym
a member of scope tp.decls
where thistp
is the narrowed owner type of the scope.
Make symbol sym
a member of scope tp.decls
where thistp
is the narrowed owner type of the scope.
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
Creator for AnnotatedTypes.
Creator for AnnotatedTypes. It returns the underlying type if annotations.isEmpty rather than walking into the assertion.
Check that the annotations on two types conform.
Check that the annotations on two types conform. To do so, consult all registered annotation checkers.
Refine the computed greatest lower bound of a list of types.
Refine the computed greatest lower bound of a list of types. All this should do is add annotations.
Refine the computed least upper bound of a list of types.
Refine the computed least upper bound of a list of types. All this should do is add annotations.
Very convenient.
Very convenient.
A creator for type applications
A creator for type applications
A creator for existential types where the type arguments, rather than being applied directly, are interpreted as the upper bounds of unknown types.
A creator for existential types where the type arguments, rather than being applied directly, are interpreted as the upper bounds of unknown types. For instance if the type argument list given is List(AnyRefClass), the resulting type would be e.g. Set[_ <: AnyRef] rather than Set[AnyRef] .
Convert array parameters denoting a repeated parameter of a Java method
to JavaRepeatedParamClass
types.
Convert array parameters denoting a repeated parameter of a Java method
to JavaRepeatedParamClass
types.
Perform given operation at given phase.
Perform given operation at given phase.
Turns a path into a String, introducing backquotes as necessary.
Turns a path into a String, introducing backquotes as necessary.
Create a base type sequence consisting of a single type
Create a base type sequence consisting of a single type
Since when it is to be "at" a phase is inherently ambiguous, a couple unambiguously named methods.
Since when it is to be "at" a phase is inherently ambiguous, a couple unambiguously named methods.
Does this type have a prefix that begins with a type variable, or is it a refinement type? For type prefixes that fulfil this condition, type selections with the same name of equal (wrt) =:= prefixes are considered equal wrt =:=
Does this type have a prefix that begins with a type variable, or is it a refinement type? For type prefixes that fulfil this condition, type selections with the same name of equal (wrt) =:= prefixes are considered equal wrt =:=
Java binary names, like scala/runtime/Nothing$.
Find out whether any annotation checker can adapt a tree to a given type.
Find out whether any annotation checker can adapt a tree to a given type. Called by Typers.adapt.
Mark a variable as captured; i.
Mark a variable as captured; i.e. force boxing in a *Ref type.
Convert type of a captured variable to *Ref type.
Convert type of a captured variable to *Ref type.
Convert type of a captured variable to *Ref type.
Convert type of a captured variable to *Ref type.
Returns List of ChangeAfterPhase objects, encapsulating those phase transitions where the result of the operation gave a different list than it had when run during the previous phase.
Returns List of ChangeAfterPhase objects, encapsulating those phase transitions where the result of the operation gave a different list than it had when run during the previous phase.
Check well-kindedness of type application (assumes arities are already checked) -- @M
Check well-kindedness of type application (assumes arities are already checked) -- @M
This check is also performed when abstract type members become concrete (aka a "type alias") -- then tparams.length==1 (checked one type member at a time -- in that case, prefix is the name of the type alias)
Type application is just like value application: it's "contravariant" in the sense that the type parameters of the supplied type arguments must conform to the type parameters of the required type parameters:
e.g. class Iterable[t, m[+x <: t]] --> the application Iterable[Int, List] is okay, since List's type parameter is also covariant and its bounds are weaker than <: Int
Memory to store all names sequentially.
Memory to store all names sequentially.
A hook that lets subclasses of Global
define whether a package or class should be kept loaded for the
next compiler run.
A hook that lets subclasses of Global
define whether a package or class should be kept loaded for the
next compiler run. If the parameter sym
is a class or object, and clearOnNextRun(sym)
returns true
,
then the symbol is unloaded and reset to its state before the last compiler run. If the parameter sym
is
a package, and clearOnNextRun(sym) returns
true, the package is recursively searched for
classes to drop.
Example: Let's say I want a compiler that drops all classes corresponding to the current project
between runs. Then keepForNextRun
of a toplevel class or object should return true
if the
class or object does not form part of the current project, false
otherwise. For a package,
clearOnNextRun should return true
if no class in that package forms part of the current project,
false
otherwise.
A class symbol, object symbol, package, or package class.
Convenience functions which derive symbols by cloning.
Convenience functions which derive symbols by cloning.
Clone symbols and apply the given function to each new symbol's info.
Clone symbols and apply the given function to each new symbol's info.
the prototypical symbols
the function to apply to the infos
the newly created, info-adjusted symbols
Create the base type sequence of a compound type wuth given tp.
Create the base type sequence of a compound type wuth given tp.parents
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.
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
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.
Create a new MethodType of the same class as tp, i.
Create a new MethodType of the same class as tp, i.e. keep JavaMethodType
Copy propagation for optimization
True if all three arguments have the same number of elements and the function is true for all the triples.
True if all three arguments have the same number of elements and the function is true for all the triples.
Functions which perform the standard clone/substituting on the given symbols and type, then call the creator function with the new symbols and type as arguments.
Functions which perform the standard clone/substituting on the given symbols and type, then call the creator function with the new symbols and type as arguments.
The current period.
The current period.
The currently active run
The currently active run
The id of the currently active run
The id of the currently active run
Remove any occurrences of type aliases from this type
Override with final implementation for inlining.
Override with final implementation for inlining.
Map a list of type parameter symbols to skolemized symbols, which can be deskolemized to the original type parameter.
Map a list of type parameter symbols to skolemized symbols, which can be deskolemized to the original type parameter. (A skolem is a representation of a bound variable when viewed inside its scope.) !!!Adriaan: this does not work for hk types.
Derives a new list of symbols from the given list by mapping the given list across the given function.
Derives a new list of symbols from the given list by mapping the given list across the given function. Then fixes the info of all the new symbols by substituting the new symbols for the original symbols.
the prototypical symbols
the function to create new symbols
the new list of info-adjusted symbols
Derives a new Type by first deriving new symbols as in deriveSymbols,
then performing the same oldSyms => newSyms substitution on tpe
as is
performed on the symbol infos in deriveSymbols.
Derives a new Type by first deriving new symbols as in deriveSymbols,
then performing the same oldSyms => newSyms substitution on tpe
as is
performed on the symbol infos in deriveSymbols.
the prototypical symbols
the function to create new symbols
the prototypical type
the new symbol-subsituted type
Derives a new Type by instantiating the given list of symbols as WildcardTypes.
Derives a new Type by instantiating the given list of symbols as WildcardTypes.
the symbols to replace
the new type with WildcardType replacing those syms
Convert to corresponding type parameters all skolems of method
parameters which appear in tparams
.
Convert to corresponding type parameters all skolems of method
parameters which appear in tparams
.
Associate comment with symbol sym
at position pos
.
Associate comment with symbol sym
at position pos
.
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
Substitutes the empty scope for any non-empty decls in the type.
Remove any occurrence of type <singleton> from this type and its parents
Ensure that given tree has no positions that overlap with
any of the positions of others
.
Ensure that given tree has no positions that overlap with
any of the positions of others
. This is done by
shortening the range or assigning TransparentPositions
to some of the nodes in tree
.
A creator for existential types.
A creator for existential types. This generates:
tpe1 where { tparams }
where tpe1
is the result of extrapolating tpe
wrt to tparams
.
Extrapolating means that type variables in tparams
occurring
in covariant positions are replaced by upper bounds, (minus any
SingletonClass markers), type variables in tparams
occurring in
contravariant positions are replaced by upper bounds, provided the
resulting type is legal wrt to stability, and does not contain any type
variable in tparams
.
The abstraction drops all type parameters that are not directly or
indirectly referenced by type tpe1
. If there are no remaining type
parameters, simply returns result type tpe
.
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
a expandLimit is exceeded.
Expand variable occurrences in string str
, until a fix point is reached or
a expandLimit is exceeded.
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 (site is always the containing class)
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
when more than 10 successive expansions of the same string are done, which is interpreted as a recursive variable definition.
Perform operation p
on arguments tp1
, arg2
and print trace of computation.
Perform operation p
on arguments tp1
, arg2
and print trace of computation.
If option explaintypes
is set, print a subtype trace for op(found, required)
.
If option explaintypes
is set, print a subtype trace for op(found, required)
.
If option explaintypes
is set, print a subtype trace for found <:< required
.
If option explaintypes
is set, print a subtype trace for found <:< required
.
From a list of types, find any which take type parameters where the type parameter bounds contain references to other any types in the list (including itself.
From a list of types, find any which take type parameters where the type parameter bounds contain references to other any types in the list (including itself.)
List of symbol pairs holding the recursive type parameter and the parameter which references it.
Are we compiling for .
Are we compiling for .NET?
For fully qualified type names.
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 greatest lower bound wrt <:< of a list of types
The greatest lower bound wrt <:< of a list of types
The greatest lower bound wrt <:< of a list of types, which have been normalized wrt elimSuper
The greatest lower bound wrt <:< of a list of types, which have been normalized wrt elimSuper
Again avoiding calling length, but the lengthCompare interface is clunky.
Again avoiding calling length, but the lengthCompare interface is clunky.
Icode verification
ICode generator
Is this symbol table part of reflexive mirror? In this case operations need to be made thread safe.
Is this symbol table part of reflexive mirror? In this case operations need to be made thread safe.
The set of all installed infotransformers.
The set of all installed infotransformers.
A creator for intersection type where intersections of a single type are replaced by the type itself.
A creator for intersection type where intersections of a single type are replaced by the type itself.
A creator for intersection type where intersections of a single type are replaced by the type itself, and repeated parent classes are merged.
A creator for intersection type where intersections of a single type are replaced by the type itself, and repeated parent classes are merged.
!!! Repeated parent classes are not merged - is this a bug in the comment or in the code?
A map from lists to compound types that have the given list as parents.
A map from lists to compound types that have the given list as parents. This is used to avoid duplication in the computation of base type sequences and baseClasses. It makes use of the fact that these two operations depend only on the parents, not on the refinement.
Are we later than given phase in compilation?
Are we later than given phase in compilation?
The isNumericValueType tests appear redundant, but without them test/continuations-neg/function3.
The isNumericValueType tests appear redundant, but without them test/continuations-neg/function3.scala goes into an infinite loop. (Even if the calls are to typeSymbolDirect.)
Is intersection of given types populated? That is, for all types tp1, tp2 in intersection for all common base classes bc of tp1 and tp2 let bt1, bt2 be the base types of tp1, tp2 relative to class bc Then: bt1 and bt2 have the same prefix, and any corresponding non-variant type arguments of bt1 and bt2 are the same
Is intersection of given types populated? That is, for all types tp1, tp2 in intersection for all common base classes bc of tp1 and tp2 let bt1, bt2 be the base types of tp1, tp2 relative to class bc Then: bt1 and bt2 have the same prefix, and any corresponding non-variant type arguments of bt1 and bt2 are the same
Is type tp a raw type?
Is type tp a raw type?
Is the tree Predef, scala.
Is the tree Predef, scala.Predef, or _root_.scala.Predef?
Do tp1
and tp2
denote equivalent types?
Do tp1
and tp2
denote equivalent types?
Are tps1
and tps2
lists of pairwise equivalent types?
Are tps1
and tps2
lists of pairwise equivalent types?
Are tps1
and tps2
lists of equal length such that all elements
of tps1
conform to corresponding elements of tps2
?
Are tps1
and tps2
lists of equal length such that all elements
of tps1
conform to corresponding elements of tps2
?
Do type arguments targs
conform to formal parameters tparams
?
Do type arguments targs
conform to formal parameters tparams
?
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
The maximum allowable depth of lubs or glbs over types ts
.
The maximum allowable depth of lubs or glbs over types ts
.
This is the maximum depth of all types in the base type sequences
of each of the types ts
, plus LubGlbMargin.
like map2, but returns list xs
itself - instead of a copy - if function
f
maps all elements to themselves.
like map2, but returns list xs
itself - instead of a copy - if function
f
maps all elements to themselves.
A deep map on a symbol's paramss.
A deep map on a symbol's paramss.
A function implementing tp1
matches tp2
.
A function implementing tp1
matches tp2
.
The maximum number of recursions allowed in toString
The maximum number of recursions allowed in toString
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.
Compute lub (if variance == 1
) or glb (if variance == -1
) of given list
of types tps
.
Compute lub (if variance == 1
) or glb (if variance == -1
) of given list
of types tps
. All types in tps
are typerefs or singletypes
with the same symbol.
Return Some(x)
if the computation succeeds with result x
.
Return None
if the computation fails.
All these mm methods are "deep map" style methods for mapping etc.
All these mm methods are "deep map" style methods for mapping etc. on a list of lists while avoiding unnecessary intermediate structures like those created via flatten.
A last effort if symbol in a select <owner>.
A last effort if symbol in a select <owner>.<name> is not found. This is overridden by the reflection compiler to make up a package when it makes sense (i.e. <owner> is a package and <name> is a term name).
Does a pattern of type patType
need an outer test when executed against
selector type selType
in context defined by currentOwner
?
Does a pattern of type patType
need an outer test when executed against
selector type selType
in context defined by currentOwner
?
A creator for existential types which flattens nested existentials.
A creator for existential types which flattens nested existentials.
Create a new free term.
Create a new free term. Its owner is NoSymbol.
Create a new free type.
Create a new free type. Its owner is NoSymbol.
Create a new scope nested in another one with which it shares its elements
Create a new scope nested in another one with which it shares its elements
Create new scope for the members of package pkg
Create new scope for the members of package pkg
Create a new scope
Create a new scope
Create a new scope with given initial elements
Create a new scope with given initial elements
Create a term name from the UTF8 encoded bytes in bs[offset.
Create a term name from the UTF8 encoded bytes in bs[offset..offset+len-1].
Create a term name from string.
Create a term name from string.
Create a term name from the characters in cs[offset.
Create a term name from the characters in cs[offset..offset+len-1]. TODO - have a mode where name validation is performed at creation time (e.g. if a name has the string "$class" in it, then fail if that string is not at the very end.)
Create a term name from the characters in cs[offset.
Create a term name from the characters in cs[offset..offset+len-1].
Create a type name from the UTF8 encoded bytes in bs[offset.
Create a type name from the UTF8 encoded bytes in bs[offset..offset+len-1].
Create a type name from the characters in cs[offset.
Create a type name from the characters in cs[offset..offset+len-1].
Create a type name from string.
Create a type name from string.
Print tree in detailed form
if there's a package
member object in pkgClass
, enter its members into it.
if there's a package
member object in pkgClass
, enter its members into it.
The original owner of a class.
The original owner of a class. Used by the backend to generate EnclosingMethod attributes.
Computing pairs of overriding/overridden symbols
A description of the phases that will run
A description of the phases that will run
Summary of the per-phase values of nextFlags and newFlags, shown with -Xshow-phases if -Ydebug also given.
Summary of the per-phase values of nextFlags and newFlags, shown with -Xshow-phases if -Ydebug also given.
The phase identifier of the given period.
The phase identifier of the given period.
The names of the phases.
The names of the phases.
The phase associated with given period.
The phase associated with given period.
The phase which has given index as identifier.
The phase which has given index as identifier.
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
Adds backticks if the name is a scala keyword.
Adds backticks if the name is a scala keyword.
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.
The raw to existential map converts a raw type to an existential type.
The raw to existential map converts a raw type to an existential type. It is necessary because we might have read a raw type of a parameterized Java class from a class file. At the time we read the type the corresponding class file might still not be read, so we do not know what the type parameters of the type are. Therefore the conversion of raw types to existential types might not have taken place in ClassFileparser.sigToType (where it is usually done).
Mark given identifier as a reference to a captured variable itself
suppressing dereferencing with the elem
field.
Mark given identifier as a reference to a captured variable itself
suppressing dereferencing with the elem
field.
The canonical creator for a refined type with an initially empty scope.
The canonical creator for a refined type with an initially empty scope.
...
...
...
the canonical creator for a refined type with a given scope
the canonical creator for a refined type with a given scope
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)
Remove all annotation checkers
Remove all annotation checkers
Repack existential types, otherwise they sometimes get unpacked in the wrong location (type inference comes up with an unexpected skolem)
Repack existential types, otherwise they sometimes get unpacked in the wrong location (type inference comes up with an unexpected skolem)
resets symbol and tpe fields in a tree, @see ResetAttrs
resets symbol and tpe fields in a tree, @see ResetAttrs
The run identifier of the given period.
The run identifier of the given period.
True if two lists have the same length.
True if two lists have the same length. Since calling length on linear sequences is O(n), it is an inadvisable way to test length equality.
Scala primitives, used in genicode
Transform scope of members of owner
using operation op
This is overridden by the reflective compiler to avoid creating new scopes for packages
Transform scope of members of owner
using operation op
This is overridden by the reflective compiler to avoid creating new scopes for packages
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.
The canonical creator for single-types
The canonical creator for single-types
The current skolemization level, needed for the algorithms in isSameType, isSubType that do constraint solving under a prefix.
The current skolemization level, needed for the algorithms in isSameType, isSubType that do constraint solving under a prefix.
Solve constraint collected in types tvars
.
Solve constraint collected in types tvars
.
All type variables to be instantiated.
The type parameters corresponding to tvars
The variances of type parameters; need to reverse solution direction for all contravariant variables.
When true
search for max solution else min.
A minimal type list which has a given list of types as its base type sequence
A minimal type list which has a given list of types as its base type sequence
Does type tp
implement symbol sym
with same or
stronger type? Exact only if sym
is a member of some
refinement type, otherwise we might return false negatives.
Does type tp
implement symbol sym
with same or
stronger type? Exact only if sym
is a member of some
refinement type, otherwise we might return false negatives.
The period at the start of run that includes period
.
The period at the start of run that includes period
.
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.
Make each type var in this type use its original type for comparisons instead of collecting constraints.
Make each type var in this type use its original type for comparisons instead of collecting constraints.
Returns the javadoc format of doc comment string s
, including wiki expansion
Returns the javadoc format of doc comment string s
, including wiki expansion
Dump each symbol to stdout after shutdown.
Dump each symbol to stdout after shutdown.
Representing ASTs as graphs
Tree checker
A creator for a type functions, assuming the type parameters tps already have the right owner.
A creator for a type functions, assuming the type parameters tps already have the right owner.
A creator for anonymous type functions, where the symbol for the type function still needs to be created.
A creator for anonymous type functions, where the symbol for the type function still needs to be created.
TODO: type params of anonymous type functions, which currently can only arise from normalising type aliases, are owned by the type alias of which they are the eta-expansion higher-order subtyping expects eta-expansion of type constructors that arise from a class; here, the type params are owned by that class, but is that the right thing to do?
A collector that tests for existential types appearing at given variance in a type
A collector that tests for existential types appearing at given variance in a type
The canonical creator for typerefs todo: see how we can clean this up a bit
The canonical creator for typerefs todo: see how we can clean this up a bit
A map to convert every occurrence of a type variable to a wildcard type.
A list of the typevars in a type.
A list of the typevars in a type.
A merker object for a base type sequence that's no yet computed.
A merker object for a base type sequence that's no yet computed. used to catch inheritance cycles
A log of type variable with their original constraints.
A log of type variable with their original constraints. Used in order to undo constraints in the case of isSubType/isSameType failure.
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
when more than 10 successive expansions of the same string are done, which is interpreted as a recursive variable definition.
Overridden in reflection compiler
Overridden in reflection compiler
A map to convert every occurrence of a wildcard type to a fresh type variable
Execute op
while printing a trace of the operations on types executed.
Execute op
while printing a trace of the operations on types executed.
A position that wraps the non-empty set of trees.
A position that wraps the non-empty set of trees. The point of the wrapping position is the point of the first trees' position. If all some the trees are non-synthetic, returns a range position enclosing the non-synthetic trees Otherwise returns a synthetic offset position to point.
A position that wraps a set of trees.
A position that wraps a set of trees. The point of the wrapping position is the point of the default position. If some of the trees are ranges, returns a range position enclosing all ranges Otherwise returns default position.
Hook for extensions
Hook for extensions
(Since version 2.10.0) Give us a reason
(Since version 2.9.0) Use forInteractive or forScaladoc, depending on what you're after
(Since version 2.10.0) use genPolyType(...) instead
(Since version 2.9.0)
(Since version 2.10.0) Use leftOfArrow instead
(Since version 2.10.0) Use resultOfEnsuring instead