CheckCaptures

dotty.tools.dotc.cc.CheckCaptures$
See theCheckCaptures companion class

The capture checker

Attributes

Companion:
class
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Concise view

Type members

Classlikes

case class Env(owner: Symbol, captured: CaptureSet, isBoxed: Boolean, outer0: Env | Null)

A class describing environments.

A class describing environments.

Attributes

captured

the caputure set containing all references to tracked free variables outside of boxes

isBoxed

true if the environment is inside a box (in which case references are not counted)

outer0

the next enclosing environment

owner

the current owner

Graph
Supertypes
trait Product
trait Equals
class Object
trait Matchable
class Any
class Pre extends PreRecheck with SymTransformer

Attributes

Graph
Supertypes
class Phase
class Object
trait Matchable
class Any
final class SubstParamsMap(from: BindingType, to: List[Type])(using x$3: Context) extends ApproximatingTypeMap with IdempotentCaptRefMap

Similar normal substParams, but this is an approximating type map that maps parameters in contravariant capture sets to the empty set. TODO: check what happens with non-variant.

Similar normal substParams, but this is an approximating type map that maps parameters in contravariant capture sets to the empty set. TODO: check what happens with non-variant.

Attributes

Graph
Supertypes
class TypeMap
trait Type => Type
class Object
trait Matchable
class Any

Value members

Concrete methods

def checkWellformed(ann: Tree)(using Context): Unit

Check that a @retains annotation only mentions references that can be tracked. This check is performed at Typer.

Check that a @retains annotation only mentions references that can be tracked. This check is performed at Typer.

Attributes

def checkWellformedPost(tp: Type, pos: SrcPos)(using Context): Unit

If tp is a capturing type, check that all references it mentions have non-empty capture sets. Also: warn about redundant capture annotations. This check is performed after capture sets are computed in phase cc.

If tp is a capturing type, check that all references it mentions have non-empty capture sets. Also: warn about redundant capture annotations. This check is performed after capture sets are computed in phase cc.

Attributes

Warn if ann, which is a tree of a @retains annotation, defines some elements that are already accounted for by other elements of the same annotation. Note: We need to perform the check on the original annotation rather than its capture set since the conversion to a capture set already eliminates redundant elements.

Warn if ann, which is a tree of a @retains annotation, defines some elements that are already accounted for by other elements of the same annotation. Note: We need to perform the check on the original annotation rather than its capture set since the conversion to a capture set already eliminates redundant elements.

Attributes