TyperState

class TyperState()
Companion
object
class Object
trait Matchable
class Any

Value members

Concrete methods

def commit(using Context): Unit

Commit typer state so that its information is copied into current typer state In addition (1) the owning state of undetermined or temporarily instantiated type variables changes from this typer state to the current one. (2) Variables that were temporarily instantiated in the current typer state are permanently instantiated instead.

Commit typer state so that its information is copied into current typer state In addition (1) the owning state of undetermined or temporarily instantiated type variables changes from this typer state to the current one. (2) Variables that were temporarily instantiated in the current typer state are permanently instantiated instead.

A note on merging: An interesting test case is isApplicableSafe.scala. It turns out that this requires a context merge using the new `&' operator. Sequence of actions:

  1. Typecheck argument in typerstate 1.
  2. Cache argument.
  3. Evolve same typer state (to typecheck other arguments, say) leading to a different constraint.
  4. Take typechecked argument in same state.

It turns out that the merge is needed not just for isApplicableSafe but also for (e.g. erased-lubs.scala) as well as many parts of dotty itself.

Ensure that this constraint does not associate different TypeVars for the same type lambda than the other constraint. Do this by renaming type lambdas in this constraint and its predecessors where necessary.

Ensure that this constraint does not associate different TypeVars for the same type lambda than the other constraint. Do this by renaming type lambdas in this constraint and its predecessors where necessary.

def fresh(reporter: Reporter): TyperState

A fresh typer state with the same constraint as this one.

A fresh typer state with the same constraint as this one.

def gc(using Context): Unit

Make type variable instances permanent by assigning to inst field if type variable instantiation cannot be retracted anymore. Then, remove no-longer needed constraint entries.

Make type variable instances permanent by assigning to inst field if type variable instantiation cannot be retracted anymore. Then, remove no-longer needed constraint entries.

def id: Int
Extension method from TyperState
def setCommittable(committable: Boolean): TyperState

A fresh type state with the same constraint as this one and the given reporter

A fresh type state with the same constraint as this one and the given reporter

Extension method from TyperState
override def toString: String
Definition Classes
Any

The closest ancestor of this typer state (including possibly this typer state itself) which is not yet committed, or which does not have a parent.

The closest ancestor of this typer state (including possibly this typer state itself) which is not yet committed, or which does not have a parent.

The uninstantiated variables

The uninstantiated variables