Warm

case class Warm(klass: ClassSymbol, outer: Value, ctor: Symbol, args: List[Value]) extends Ref

An object with all fields initialized but reaches objects under initialization

We need to restrict nesting levels of outer to finitize the domain.

trait Product
trait Equals
class Ref
class Value
class Object
trait Matchable
class Any

Value members

Concrete methods

def tryPromote: () => List[Error]
Extension method from Semantic

Try early promotion of warm objects

Try early promotion of warm objects

Promotion is expensive and should only be performed for small classes.

  1. for each concrete method m of the warm object: call the method and promote the result

  2. for each concrete field f of the warm object: promote the field value

If the object contains nested classes as members, the checker simply reports a warning to avoid expensive checks.

TODO: we need to revisit whether this is needed once we make the system more flexible in other dimentions: e.g. leak to methods or constructors, or use ownership for creating cold data structures.

Inherited methods

Inherited from:
Value
Inherited from:
Value
Inherited from:
Value
Inherited from:
Value
Inherited from:
Product
Inherited from:
Value