package dotty.tools.dotc.typer

Constructors

Members

final object Applications
trait Applications
final object Checking
trait Checking
final object ConstFold
trait Docstrings
final object Dynamic
[+] trait Dynamic

Handles programmable member selections of Dynamic instances and values with structural types. Two functionalities:

  1. Translates selection that does not typecheck according to the scala.Dynamic rules: foo.bar(baz) = quux ~~> foo.selectDynamic(bar).update(baz, quux) foo.bar = baz ~~> foo.updateDynamic("bar")(baz) foo.bar(x = bazX, y = bazY, baz, ...) ~~> foo.applyDynamicNamed("bar")(("x", bazX), ("y", bazY), ("", baz), ...) foo.bar(baz0, baz1, ...) ~~> foo.applyDynamic(bar)(baz0, baz1, ...) foo.bar ~~> foo.selectDynamic(bar)

The first matching rule of is appli...

    Handles programmable member selections of Dynamic instances and values with structural types. Two functionalities:

    1. Translates selection that does not typecheck according to the scala.Dynamic rules: foo.bar(baz) = quux ~~> foo.selectDynamic(bar).update(baz, quux) foo.bar = baz ~~> foo.updateDynamic("bar")(baz) foo.bar(x = bazX, y = bazY, baz, ...) ~~> foo.applyDynamicNamed("bar")(("x", bazX), ("y", bazY), ("", baz), ...) foo.bar(baz0, baz1, ...) ~~> foo.applyDynamic(bar)(baz0, baz1, ...) foo.bar ~~> foo.selectDynamic(bar)

    The first matching rule of is applied.

    1. Translates member selections on structural types to calls of selectDynamic or selectDynamicMethod on a Selectable instance. @See handleStructural.
    @sharable final object EmptyTermRefSet
    final object ErrorReporting
    final object EtaExpansion
    @sharable final object ForceDegree

    An enumeration controlling the degree of forcing in "is-dully-defined" checks.

    An enumeration controlling the degree of forcing in "is-dully-defined" checks.

    class FrontEnd
    trait ImplicitRunInfo

    Info relating to implicits that is kept for one run

    Info relating to implicits that is kept for one run

    final object Implicits

    Implicit resolution

    Implicit resolution

    trait Implicits

    The implicit resolution part of type checking

    The implicit resolution part of type checking

    class ImportInfo

    Info relating to an import clause

    Info relating to an import clause

    final object ImportInfo
    final object Inferencing
    class Inliner

    Produces an inlined version of call via its inlined method.

    Produces an inlined version of call via its inlined method.

    final object Inliner
    [+] class Namer

    This class creates symbols from definitions and imports and gives them lazy types.

    Timeline:

    During enter, trees are expanded as necessary, populating th...

    This class creates symbols from definitions and imports and gives them lazy types.

    Timeline:

    During enter, trees are expanded as necessary, populating the expandedTree map. Symbols are created, and the symOfTree map is set up.

    Symbol completion causes some trees to be already typechecked and typedTree entries are created to associate the typed trees with the untyped expanded originals.

    During typer, original trees are first expanded using expandedTree. For each expanded member definition or import we extract and remove the corresponding symbol from the symOfTree map and complete it. We then consult the typedTree map to see whether a typed tree exists already. If yes, the typed tree is returned as result. Otherwise, we proceed with regular type checking.

    The scheme is designed to allow sharing of nodes, as long as each duplicate appears in a different method.

    final object NamerContextOps
    trait NamerContextOps
    trait NoChecking
    final object ProtoTypes
    [+] class ReTyper

    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...

    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.

    class RefChecks
    final object RefChecks
    class SearchHistory

    Records the history of currently open implicit searches

    Records the history of currently open implicit searches

    class TermRefSet

    A set of term references where equality is =:=

    A set of term references where equality is =:=

    final object TypeAssigner
    trait TypeAssigner
    class Typer
    final object Typer
    class VarianceChecker
    [+] final object VarianceChecker

    Provides check method to check that all top-level definitions in tree are variance correct. Does not recurse inside methods. The method should be invoke...

    Provides check method to check that all top-level definitions in tree are variance correct. Does not recurse inside methods. The method should be invoked once for each Template.

    final object Variances