Value

dotty.tools.dotc.transform.init.Objects.Value
sealed trait Value

Syntax for the data structure abstraction used in abstract domain:

ve ::= ObjectRef(class) // global object | InstanceRef(class, ownerObject, ctor, regions) // instance of a class | ArrayRef(ownerObject, regions) // represents values of native array class in Array.scala | Fun(code, thisV, scope) // value elements that can be contained in ValueSet | SafeValue // values on which method calls and field accesses won't cause warnings. Int, String, etc. | UnknownValue // values whose source are unknown at compile time vs ::= ValueSet(Set(ve)) // set of abstract values Value ::= ve | vs | Package Ref ::= ObjectRef | InstanceRef | ArrayRef // values that represent a reference to some (global or instance) object RefSet ::= Set(ref) // set of refs Bottom ::= RefSet(Empty) // unreachable code ThisValue ::= Ref | RefSet // possible values for 'this' EnvRef(meth, ownerObject) // represents environments for methods or functions EnvSet ::= Set(EnvRef) InstanceBody ::= (valsMap: Map[Symbol, Value], outersMap: Map[ClassSymbol, Value], outerEnv: EnvSet) // represents combined information of all instances represented by a ref Heap ::= Ref -> InstanceBody // heap is mutable EnvBody ::= (valsMap: Map[Symbol, Value], thisV: Value, outerEnv: EnvSet) // represents combined information of all instances represented by an env EnvMap ::= EnvRef -> EnvBody Scope ::= Ref | EnvRef Config ::= (thisV: Value, scope: Scope, Heap, EnvMap) Cache ::= Config -> (Heap, EnvMap)

regions ::= List(sourcePosition)

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class Objects.this.Package
trait Objects.this.ValueElement
class Objects.this.Fun
class Objects.this.Ref
class Objects.this.ArrayRef
class Objects.this.InstanceRef
class Objects.this.ObjectRef
class Objects.this.SafeValue
object Objects.this.UnknownValue
class Objects.this.ValueSet
class Objects.this.RefSet
Show all

Members list

Value members

Abstract methods

def show(using Context): String

Concrete methods

def filterClass(sym: Symbol)(using Context): Value
Extension method from Objects
def filterType(tpe: Type)(using Context): Value
Extension method from Objects
def remove(b: Value): Value
Extension method from Objects