Env

dotty.tools.dotc.transform.init.Objects.Env
object Env

Environment for parameters

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Objects.this.Objects.this.Env.type

Members list

Type members

Classlikes

case class EnvRef(meth: Symbol, owner: ClassSymbol)(using x$3: Trace) extends Scope

Local environments can be deeply nested, therefore we need outer.

Local environments can be deeply nested, therefore we need outer.

For local variables in rhs of class field definitions, the meth is the primary constructor.

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Objects.this.Scope
class Object
trait Matchable
class Any
Show all
case class EnvSet(envs: Set[EnvRef])

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Value members

Concrete methods

An empty environment can be used for non-method environments, e.g., field initializers.

An empty environment can be used for non-method environments, e.g., field initializers.

The owner for the local environment for field initializers is the primary constructor of the enclosing class.

Attributes

def ofByName(byNameParam: Symbol, thisV: Objects.this.ThisValue, outerEnv: EnvSet)(using Data, EnvMapMutableData, Trace): EnvRef
def ofDefDef(ddef: DefDef, args: List[Objects.this.Value], thisV: Objects.this.ThisValue, outerEnv: EnvSet)(using Data, EnvMapMutableData, Trace): EnvRef
def resolveEnvByMethod(enclosing: Symbol, thisV: Objects.this.ThisValue, scope: Objects.this.Scope): () ?=> EnvSet

Resolve the environment associated by the given method enclosing, starting from env as the innermost.

Resolve the environment associated by the given method enclosing, starting from env as the innermost.

The method could be located in outer scope with intermixed classes between its definition site and usage site.

Value parameters

enclosing

The method which owns the environment. This method is called to look up the environment owned by the enclosing method of some symbol.

scope

The scope where the local variable is referenced.

thisV

The value for this of the enclosing class where the local variable is referenced.

Attributes

Returns

the environment whose symbol == enclosing.

def resolveEnvByValue(target: Symbol, thisV: Objects.this.ThisValue, scope: Objects.this.Scope): () ?=> Option[EnvSet]

Resolve the environment by searching for a given symbol.

Resolve the environment by searching for a given symbol.

Searches for the environment that defines target, starting from env as the innermost.

Value parameters

scope

The scope where the local variable is referenced.

target

The symbol to search for.

thisV

The value for this of the enclosing class where the local variable is referenced.

Attributes

Returns

the environment that owns the target.

def setLocalVal(x: Symbol, value: Objects.this.Value)(using scope: Objects.this.Scope, ctx: Context, heap: MutableData, envMap: EnvMapMutableData): Unit
def setLocalVar(x: Symbol, value: Objects.this.Value)(using scope: Objects.this.Scope, ctx: Context, heap: MutableData, envMap: EnvMapMutableData): Unit
def valValue(x: Symbol)(using env: EnvRef, ctx: Context, trace: Trace, envMap: EnvMapMutableData): Objects.this.Value
def withEnv[T](env: EnvRef)(fn: EnvRef ?=> T): T

Concrete fields

val NoEnv: EnvSet