CpsTree

cps.plugin.forest.CpsTree
See theCpsTree companion object
sealed trait CpsTree

CpsTree -- transfomed element

Hierarchy: CpsTree |- SyncCpsTree | |- PureCpsTree | |- UnitCpsTree |- AsyncCpsTree | |- AsyncTermCpsTree | | - MapCpsTree | | - FlatMapCpsTree |- LambdaCpsTree |- OpaqueAsyncLambdaTermCpsTree |- SeqCpsTree |- BlockBoundsCpsTree |- SelectTypeApplyTypedCpsTree |- InlinedCpsTree(can-be-deleted) |- MemberDefCpsTree |- CallChainSubstCpsTree

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes

Members list

Value members

Abstract methods

def applyRuntimeAwait(runtimeAwait: Tree)(using Context, CpsTopLevelContext): CpsTree

apply runtime await. If this CpsTree is adync lambda f: x1...xn => F[y] transform one to f' = summon[RuntiemAwait[F].await(f(x1..xN))(monad,monad-context)] and return CpsTree with f' in unpure otherwise - unchanged or throw error TODO: move to Lambda

apply runtime await. If this CpsTree is adync lambda f: x1...xn => F[y] transform one to f' = summon[RuntiemAwait[F].await(f(x1..xN))(monad,monad-context)] and return CpsTree with f' in unpure otherwise - unchanged or throw error TODO: move to Lambda

precondition: kind <: AsyncLambda(*)

Attributes

def asyncKind(using Context, CpsTopLevelContext): AsyncKind
def castOriginType(ntpe: Type)(using Context, CpsTopLevelContext): CpsTree
def changeOwner(newOwner: Symbol)(using Context): CpsTree
def origin: Tree

origin term, used for diagnostics. TODO: only pos ?

origin term, used for diagnostics. TODO: only pos ?

Attributes

def owner: Symbol

owner of term. At first this is the owner at origin, than can be changed via changeOwner

owner of term. At first this is the owner at origin, than can be changed via changeOwner

Attributes

def show(using Context): String
def transformed(using Context, CpsTopLevelContext): Tree
def unpure(using Context, CpsTopLevelContext): Option[Tree]

is this is a sync-tree ?

is this is a sync-tree ?

Attributes

def withOrigin(term: Tree): CpsTree

Attributes

Concrete methods

def appendInBlock(next: CpsTree)(using Context, CpsTopLevelContext): CpsTree

let we have block {A; B} cps({A;B}) = cps(A).appendInBlock(cps(B))

let we have block {A; B} cps({A;B}) = cps(A).appendInBlock(cps(B))

Attributes

def isOriginEqSync(using Context, CpsTopLevelContext): Boolean
def originType(using Context): Type
def select(origin: Select)(using Context, CpsTopLevelContext): CpsTree
def transformedType(using Context, CpsTopLevelContext): Type
def typeApply(origin: TypeApply)(using Context, CpsTopLevelContext): CpsTree
def typed(origin: Typed)(using Context, CpsTopLevelContext): CpsTree