class TyperState
extends DotClass with Showable

Constructors

TyperState ( r: Reporter )

Members

private val r : Reporter
def commit ( ) ( implicit ctx: Context ) : Unit

Commit state so that it gets propagated to enclosing context

Commit state so that it gets propagated to enclosing context

def constraint : Constraint

The current constraint set

The current constraint set

def constraint_= ( c: Constraint ) ( implicit ctx: Context ) : Unit
[+] def ephemeral : Boolean

The ephemeral flag is set as a side effect if an operation accesses the underlying type of a type variable. The reason we need this flag is that any suc...

The ephemeral flag is set as a side effect if an operation accesses the underlying type of a type variable. The reason we need this flag is that any such operation is not referentially transparent; it might logically change its value at the moment the type variable is instantiated. Caching code needs to check the ephemeral flag; If the flag is set during an operation, the result of that operation should not be cached.

def ephemeral_= ( x: Boolean ) : Unit
def fresh ( isCommittable: Boolean ) : 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 ( ) ( implicit ctx: Context ) : Unit

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

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 hashesStr : String

A string showing the hashes of all nested mutable typerstates

A string showing the hashes of all nested mutable typerstates

[+] def instType ( tvar: TypeVar ) ( implicit ctx: Context ) : Type

Gives for each instantiated type var that does not yet have its inst field set, the instance value stored in the constraint. Storing instances in const...

Gives for each instantiated type var that does not yet have its inst field set, the instance value stored in the constraint. Storing instances in constraints is done only in a temporary way for contexts that may be retracted without also retracting the type var as a whole.

def isCommittable : Boolean

Is it allowed to commit this state?

Is it allowed to commit this state?

def isGlobalCommittable : Boolean

Can this state be transitively committed until the top-level?

Can this state be transitively committed until the top-level?

def reporter : Reporter

The current reporter

The current reporter

override def toText ( printer: Printer ) : Text

The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.

The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.

def tryWithFallback ( op: => T ) ( fallback: => T ) ( implicit ctx: Context ) : T
def uncommittedAncestor : TyperState

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.

def uninstVars : Seq [ TypeVar ]

The uninstantiated variables

The uninstantiated variables

def withReporter ( reporter: Reporter ) : 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