A version of Typer that keeps all symbols defined and referenced in a previously typed tree.
All definition nodes keep their symbols. All leaf nodes for idents, selects, and TypeTrees keep their types. Indexing is a no-op.
Otherwise, everything is as in Typer.
Constructors
Members
Check that equality tests between types ltp
and rtp
make sense
Check that equality tests between types ltp
and rtp
make sense
Overridden in retyper
Overridden in retyper
If this is a real class, make sure its first parent is a constructor call. Cannot simply use a type. Overridden in ReTyper.
If this is a real class, make sure its first parent is a constructor call. Cannot simply use a type. Overridden in ReTyper.
Overridden in ReTyper to handle primitive operations that can be generated after erasure
Overridden in ReTyper to handle primitive operations that can be generated after erasure
Create top-level symbols for statements and enter them into symbol table
Create top-level symbols for statements and enter them into symbol table
Find an implicit conversion to apply to given tree from
so that the
result is compatible with type to
.
Find an implicit conversion to apply to given tree from
so that the
result is compatible with type to
.
Given an inline method mdef
, the method rewritten so that its body
uses accessors to access non-public members, followed by the accessor definitions.
Ov...
Given an inline method mdef
, the method rewritten so that its body
uses accessors to access non-public members, followed by the accessor definitions.
Overwritten in Retyper to return mdef
unchanged.
Checks that the given tree has been typed
Checks that the given tree has been typed
Retrieve symbol attached to given tree
Retrieve symbol attached to given tree
The symbol of the given expanded tree.
The symbol of the given expanded tree.
Potentially add apply node or implicit conversions. Before trying either, if the function is applied to an empty parameter list (), we try
0th strategy:...
Potentially add apply node or implicit conversions. Before trying either, if the function is applied to an empty parameter list (), we try
0th strategy: If tree
overrides a nullary method, mark the prototype
so that the argument is dropped and return tree
itself.
After that, two strategies are tried, and the first that is successful is picked.
If neither of the strategies are successful, continues withfallBack
.
1st strategy: Try to insert .apply
so that the result conforms to prototype pt
.
This strategy is not tried if the prototype represents already
another .apply
or .apply()
selection.
2nd strategy: If tree is a select qual.name
, try to insert an implicit conversion
around the qualifier part qual
so that the result conforms to the expected type
with wildcard result type.
Attribute an identifier consisting of a simple name or wildcard
Attribute an identifier consisting of a simple name or wildcard
A typed unapply hook, can be overridden by re any-typers between frontend and pattern matcher.
A typed unapply hook, can be overridden by re any-typers between frontend and pattern matcher.