TreeTransformScopeInstance

cps.macros.forest.TreeTransformScopeInstance
trait TreeTransformScopeInstance[F[_], T, C <: CpsMonadContext[F]](val cpsCtx: TransformationContext[F, T, C])(implicit evidence$1: Type[F], evidence$2: Type[T], evidence$3: Type[C], val qctx: Quotes) extends TreeTransformScope[F, T, C]

Attributes

Source
TreeTransformScope.scala
Graph
Supertypes
trait TreeTransformScope[F, T, C]
trait NonLocalReturnsTreeTransform[F, T, C]
trait ValDefTreeTransform[F, T, C]
trait BlockTreeTransform[F, T, C]
trait SelectOuterTreeTransform[F, T, C]
trait InlinedTreeTransform[F, T, C]
trait AsyncTreeShifter[F, T, C]
trait MatchTreeTransform[F, T, C]
trait LambdaTreeTransform[F, T, C]
trait SelectTreeTransform[F, T, C]
trait AwaitTreeTransform[F, T, C]
trait ApplicationHelper[F, T, C]
trait PartialShiftedApplyScope[F, T, C]
trait ApplyArgBuilderScope[F, T, C]
trait ApplyArgRecordScope[F, T, C]
trait ApplyTreeTransform[F, T, C]
trait RootTreeTransform[F, T, C]
trait TypeApplyTreeTransform[F, T, C]
trait KnownTreeFragments[F, T, C]
trait CpsTreeScope[F, T, C]
class Object
trait Matchable
class Any
Show all

Members list

Type members

Inherited classlikes

case class AppendCpsTree(frs: CpsTree, snd: CpsTree) extends CpsTree

append cps tree, which is frs and then snd. we use this representation instead Mapped/Flatmapped in cases, where we later can apply await to append term and simplify tree instead wrapping awaited tree in extra flatMap

append cps tree, which is frs and then snd. we use this representation instead Mapped/Flatmapped in cases, where we later can apply await to append term and simplify tree instead wrapping awaited tree in extra flatMap

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all
case class ApplyArgByNameRecord(term: qctx.reflect.Term, index: Int, cpsTree: CpsTree, optShiftType: Option[ApplicationShiftType], optRuntimeAwait: Option[qctx.reflect.Term]) extends ApplyArgRecord

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class ApplyArgLambdaRecord(term: qctx.reflect.Term, index: Int, cpsBody: CpsTree, optShiftType: Option[ApplicationShiftType], optRuntimeAwait: Option[qctx.reflect.Term], existsLambdaUnshift: Boolean, owner: qctx.reflect.Symbol) extends ApplyArgRecord

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class ApplyArgNamedRecord(term: qctx.reflect.NamedArg, name: String, nested: ApplyArgRecord) extends ApplyArgRecord

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class ApplyArgNoPrecalcTermRecord(term: qctx.reflect.Term, index: Int, isChanged: Boolean, isCpsDirect: Boolean) extends ApplyArgRecord

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class ApplyArgPrecalcTermRecord(term: qctx.reflect.Term, index: Int, termCpsTree: CpsTree, valDef: qctx.reflect.ValDef, ident: qctx.reflect.Term, isCpsDirect: Boolean) extends ApplyArgRecord

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
sealed trait ApplyArgRecord

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
case class ApplyArgRepeatRecord(term: qctx.reflect.Term, repeatedTerm: qctx.reflect.Repeated, index: Int, elements: List[ApplyArgRecord], seqTypeTree: qctx.reflect.TypeTree) extends ApplyArgRecord

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class ApplyArgsSummaryProperties(step1: ApplyArgsSummaryPropertiesStep1, usePrepend: Boolean)

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
case class ApplyArgsSummaryPropertiesStep1(size: Int, hasAsync: Boolean, hasShiftedLambda: Boolean, shouldBeChangedSync: Boolean, cpsDirectArg: Option[qctx.reflect.Term])

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
case class AsyncLambdaCpsTree(owner: qctx.reflect.Symbol, originLambda: qctx.reflect.Term, params: List[qctx.reflect.ValDef], body: CpsTree, otpe: qctx.reflect.TypeRepr) extends CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all
case class AwaitAsyncCpsTree(nested: CpsTree, otpe: qctx.reflect.TypeRepr) extends AsyncCpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class AsyncCpsTree
class CpsTree
class Object
trait Matchable
class Any
Show all
case class AwaitSyncCpsTree(owner: qctx.reflect.Symbol, origin: qctx.reflect.Term, otpe: qctx.reflect.TypeRepr) extends AsyncCpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class AsyncCpsTree
class CpsTree
class Object
trait Matchable
class Any
Show all
object B2

Attributes

Inherited from:
RootTreeTransform
Source
RootTreeTransform.scala
Supertypes
class Object
trait Matchable
class Any
case class BlockCpsTree(owner: qctx.reflect.Symbol, prevs: Queue[qctx.reflect.Statement], last: CpsTree) extends CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all
object BlockCpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
case class BuildApplyArgsAcc(posIndex: Int, paramIndex: Int, wasNamed: Boolean, inRepeat: Boolean, inNamed: Boolean, records: Seq[ApplyArgRecord], filledNamed: Set[Int])

Attributes

Inherited from:
ApplyArgBuilderScope
Source
ApplyArgBuilderScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class CallChainSubstCpsTree(owner: qctx.reflect.Symbol, origin: qctx.reflect.Term, shifted: qctx.reflect.Term, otpe: qctx.reflect.TypeRepr) extends CpsTree

when we have swhifted function, which should return F[A] but we want to have in F[A] methods with special meaning, which should be performed on F[_] before jumping into monad (exampe: Iterable.withFilter) we will catch in ApplyTree such methods and substitute to appropriative calls of shifted.

when we have swhifted function, which should return F[A] but we want to have in F[A] methods with special meaning, which should be performed on F[_] before jumping into monad (exampe: Iterable.withFilter) we will catch in ApplyTree such methods and substitute to appropriative calls of shifted.

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all
object CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any

Attributes

Inherited from:
MethodParamsDescriptorScope
Source
MethodParamsDescriptorScope.scala
Supertypes
class Object
trait Matchable
class Any
case object EmptyCpsTree extends CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Singleton
trait Product
trait Mirror
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all

Attributes

Inherited from:
MethodParamsDescriptorScope
Source
MethodParamsDescriptorScope.scala
Supertypes
class Object
trait Matchable
class Any
case class FlatMappedCpsTree(prev: CpsTree, opm: qctx.reflect.Term => qctx.reflect.Term, otpe: qctx.reflect.TypeRepr) extends AsyncCpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class AsyncCpsTree
class CpsTree
class Object
trait Matchable
class Any
Show all
case class InlineCpsDirectBindingRecord(newSym: qctx.reflect.Symbol, oldValDef: qctx.reflect.ValDef) extends InlinedBindingRecord

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
sealed trait InlinedBindingRecord

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
case class InlinedBindingsRecord(changes: HashMap[qctx.reflect.Symbol, InlinedBindingRecord], newBindings: List[qctx.reflect.Definition], awaitVals: List[qctx.reflect.ValDef])

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class InlinedCpsTree(owner: qctx.reflect.Symbol, origin: qctx.reflect.Inlined, bindings: List[qctx.reflect.Definition], nested: CpsTree) extends CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all
case class InlinedFunBindingRecord(newSym: qctx.reflect.Symbol, cpsTree: CpsTree, oldValDef: qctx.reflect.ValDef, newResultType: qctx.reflect.TypeRepr) extends InlinedBindingRecord

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class InlinedValBindingRecord(newSym: qctx.reflect.Symbol, cpsTree: CpsTree, oldValDef: qctx.reflect.ValDef) extends InlinedBindingRecord

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class MappedCpsTree(prev: CpsTree, op: qctx.reflect.Term => qctx.reflect.Term, otpe: qctx.reflect.TypeRepr) extends AsyncCpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class AsyncCpsTree
class CpsTree
class Object
trait Matchable
class Any
Show all
case class MessageWithPos(message: String, pos: qctx.reflect.Position)

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Inherited from:
MethodParamsDescriptorScope
Source
MethodParamsDescriptorScope.scala
Supertypes
class Object
trait Matchable
class Any

Attributes

Inherited from:
MethodParamsDescriptorScope
Source
MethodParamsDescriptorScope.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class MethodTypeBasedParamsDescriptor(mt: qctx.reflect.MethodType) extends MethodParamsDescriptor

Attributes

Inherited from:
MethodParamsDescriptorScope
Source
MethodParamsDescriptorScope.scala
Supertypes
class Object
trait Matchable
class Any
object O

Attributes

Inherited from:
ApplyArgBuilderScope
Source
ApplyArgBuilderScope.scala
Supertypes
class Object
trait Matchable
class Any
case class PartialShiftedApply(shiftType: ApplicationShiftType, shiftedDelayed: qctx.reflect.Term => qctx.reflect.Term)

Application with one list of params.

Application with one list of params.

Attributes

Inherited from:
PartialShiftedApplyScope
Source
PartialShiftedApplyScope.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class PureCpsTree(owner: qctx.reflect.Symbol, origin: qctx.reflect.Statement, isChanged: Boolean) extends CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all
case class SelectTypeApplyCpsTree(optOrigin: Option[qctx.reflect.Term], nested: CpsTree, targs: List[qctx.reflect.TypeTree], selects: List[SelectTypeApplyRecord], otpe: qctx.reflect.TypeRepr, changed: Boolean) extends CpsTree

represent select expression, which can be in monad or outside monad.

represent select expression, which can be in monad or outside monad.

constructor is not devoted to used directly: use SelectTypeApplyCpsTree.create instead. selects is reversed (i.e. external added to head)

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
case class SelectTypeApplyRecord(prevTpe: qctx.reflect.TypeRepr, symbol: qctx.reflect.Symbol, targs: List[qctx.reflect.TypeTree], level: Int)

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class ValCpsTree(owner: qctx.reflect.Symbol, valDef: qctx.reflect.ValDef, rightPart: CpsTree, nested: CpsTree, canBeLambda: Boolean) extends CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
trait Serializable
trait Product
trait Equals
class CpsTree
class Object
trait Matchable
class Any
Show all

Inherited and Abstract classlikes

sealed abstract class AsyncCpsTree extends CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
class CpsTree
class Object
trait Matchable
class Any
Known subtypes
sealed abstract class CpsTree

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes

Value members

Inherited methods

def adoptContextInMyAwait(awaitTerm: qctx.reflect.Term, arg: qctx.reflect.Term, monadContext: qctx.reflect.Term): this.qctx.reflect.Term

Attributes

Inherited from:
AwaitTreeTransform
Source
AwaitTreeTransform.scala
def applyRuntimeAwait(runtimeAwait: qctx.reflect.Term, arg: qctx.reflect.Term, resultType: qctx.reflect.TypeRepr): this.qctx.reflect.Term

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
def asyncShift(t: qctx.reflect.Term, shiftedSymbols: Set[qctx.reflect.Symbol]): this.qctx.reflect.Term

Attributes

Inherited from:
AsyncTreeShifter
Source
AsyncTreeShifter.scala
def asyncShiftCaseDef(cd: qctx.reflect.CaseDef, shiftedSymbols: Set[qctx.reflect.Symbol]): this.qctx.reflect.CaseDef

Attributes

Inherited from:
AsyncTreeShifter
Source
AsyncTreeShifter.scala
def asyncShiftDefinition(t: qctx.reflect.Definition, shiftedSymbols: Set[qctx.reflect.Symbol]): this.qctx.reflect.Definition

Attributes

Inherited from:
AsyncTreeShifter
Source
AsyncTreeShifter.scala
def asyncShiftStatement(t: qctx.reflect.Statement, shiftedSymbols: Set[qctx.reflect.Symbol]): this.qctx.reflect.Statement

Attributes

Inherited from:
AsyncTreeShifter
Source
AsyncTreeShifter.scala
def buildApply(cpsFun: CpsTree, fun: qctx.reflect.Term, argRecords: Seq[ApplyArgRecord], applyTerm: qctx.reflect.Apply, argsProperties: ApplyArgsSummaryProperties, inShiftedCallChain: Boolean, tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def buildApplyPrependArgsFlatMaps(cpsFun: CpsTree, fun: qctx.reflect.Term, argsRecords: Seq[ApplyArgRecord], applyTerm: qctx.reflect.Apply, argsProperties: ApplyArgsSummaryProperties, unpure: Boolean, tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def buildShiftedApply(cpsFun: CpsTree, fun: qctx.reflect.Term, argRecords: Seq[ApplyArgRecord], argsProperties: ApplyArgsSummaryProperties, tails: List[Seq[ApplyArgRecord]], applyTerm: qctx.reflect.Apply)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def checkLambdaDef(term: qctx.reflect.Term): Option[this.qctx.reflect.Term]

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
def cpsShiftedMethodType(paramNames: List[String], paramTypes: List[qctx.reflect.TypeRepr], otpe: qctx.reflect.TypeRepr): this.qctx.reflect.MethodType

method type for (p1 ... pn) => F[otpe]

method type for (p1 ... pn) => F[otpe]

Attributes

Inherited from:
LambdaTreeTransform
Source
LambdaTreeTransform.scala
def cpsTransformedType(tpe: qctx.reflect.TypeRepr): this.qctx.reflect.TypeRepr

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def exprToTree[T](expr: CpsExpr[F, T], e: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
RootTreeTransform
Source
RootTreeTransform.scala
def findAsyncShiftTerm(e: qctx.reflect.Term): (this.qctx.reflect.ImplicitSearchResult, this.qctx.reflect.TypeRepr)

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def genCpsDirectDefaultConstructor(tf: qctx.reflect.TypeTree, fctx: qctx.reflect.Term, posTerm: qctx.reflect.Term): this.qctx.reflect.Term

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def generateAwaitFor(term: qctx.reflect.Term, tpe: qctx.reflect.TypeRepr): this.qctx.reflect.Term

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
def handleArgs1(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, cpsFun: CpsTree, args: List[qctx.reflect.Term], tails: List[Seq[ApplyArgRecord]], unpure: Boolean)(owner: qctx.reflect.Symbol): CpsTree

How to handle arguments? We want keep evaluation order from left to right, so, imagine we have function f(a1,a2,a3) and a2 is async, a1, a3 - sync. we will transform this to

How to handle arguments? We want keep evaluation order from left to right, so, imagine we have function f(a1,a2,a3) and a2 is async, a1, a3 - sync. we will transform this to

{ val arg1 = a1;
  transform(a2).flatMap( x =>
     { val arg2 = x;
       val arg3 = a3;
       f(arg1, arg2, arg3)
}    }

more generally we at first generate block: { arg1 = a1; ..... argN = aN; f(arg1,...argN) } and then transform one, knowing that all arguments to f are sync (of course, if all arguments are sync, we just call f(arg1,... arg2) without all this machinery)

Value parameters

applyTerm

= Apply(fun, args) - origin apply

args
  • first argument list
cpsFun
  • cps-sed of representation of functions
fun
  • function to apply (with type-paerameters)
tails
  • next argument lists if any
unpure
  • if true, that this is call from shifted substitution, which is already return F[_] by design.

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def handleBooleanAndOr(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, x: qctx.reflect.Term, args: List[qctx.reflect.Term])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def handleFun(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, args: List[qctx.reflect.Term], tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def handleFunApply(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, args: List[qctx.reflect.Term], fun1: qctx.reflect.Term, args1: List[qctx.reflect.Term], tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def handleFunIdent(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, args: List[qctx.reflect.Term], name: String, tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def handleFunSelect(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, args: List[qctx.reflect.Term], obj: qctx.reflect.Term, methodName: String, tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def handleFunTypeApply(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, args: List[qctx.reflect.Term], obj: qctx.reflect.Term, targs: List[qctx.reflect.TypeTree], tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

applyTerm = Apply(fun, args) fun = TypeApply(obj,targs)

applyTerm = Apply(fun, args) fun = TypeApply(obj,targs)

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def isCpsDirectByInclusionCall(arg: qctx.reflect.Term, originCPsDirectArg: Option[qctx.reflect.Term]): Boolean

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def isInMonad(tpe: qctx.reflect.TypeRepr): Boolean

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
def isShiftedParam(tp: qctx.reflect.TypeRepr): Boolean

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def optWrapCallIntoCpsDirect(originApplyTerm: qctx.reflect.Apply, optCpsDirectArg: Option[qctx.reflect.Term], call: qctx.reflect.Term, isChanged: Boolean)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def posExpr(t: qctx.reflect.Term): Expr[Any]

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
def posExprs(terms: qctx.reflect.Term*): Expr[Any]

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
def runApply(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, args: List[qctx.reflect.Term], tails: List[Seq[ApplyArgRecord]])(owner: qctx.reflect.Symbol): CpsTree

case Apply(fun,args) transform application

case Apply(fun,args) transform application

tails -- list of prepared sequence of curried arguments.

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def runAwait(term: qctx.reflect.Term, arg: qctx.reflect.Term, awaitCpsMonadType: qctx.reflect.TypeRepr, awaitCpsMonadConversion: qctx.reflect.Term, awaitCpsMonadContext: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
AwaitTreeTransform
Source
AwaitTreeTransform.scala
def runBlock(block: qctx.reflect.Block, prevs: List[qctx.reflect.Statement], last: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
BlockTreeTransform
Source
BlockTreeTransform.scala
def runInlined(origin: qctx.reflect.Inlined)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
InlinedTreeTransform
Source
InlinedTreeTransform.scala
def runLambda(lambdaTerm: qctx.reflect.Term, params: List[qctx.reflect.ValDef], body: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
LambdaTreeTransform
Source
LambdaTreeTransform.scala
def runMatch(matchTerm: qctx.reflect.Match)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
MatchTreeTransform
Source
MatchTreeTransform.scala
def runMyAwait(awaitTerm: qctx.reflect.Term, arg: qctx.reflect.Term, context: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
AwaitTreeTransform
Source
AwaitTreeTransform.scala
def runNonLocalReturnsReturning(applyTerm: qctx.reflect.Apply, fun: qctx.reflect.Term, targs: List[qctx.reflect.TypeTree], args: List[qctx.reflect.Term])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
NonLocalReturnsTreeTransform
Source
NonLocalReturnsTreeTransform.scala
def runNonLocalReturnsThrowReturn(throwReturnApplyReturner: qctx.reflect.Apply, throwReturnApplyResult: qctx.reflect.Apply, arg: qctx.reflect.Term, targs: List[qctx.reflect.TypeTree], returner: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
NonLocalReturnsTreeTransform
Source
NonLocalReturnsTreeTransform.scala
def runOtherAwait(awaitTerm: qctx.reflect.Term, arg: qctx.reflect.Term, targ: qctx.reflect.TypeRepr, awaitCpsMonadConversion: qctx.reflect.Term, myMonadContext: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
AwaitTreeTransform
Source
AwaitTreeTransform.scala
def runRoot(term: qctx.reflect.Term, muted: Boolean)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
RootTreeTransform
Source
RootTreeTransform.scala
def runRootUneta(term: qctx.reflect.Term, muted: Boolean)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
RootTreeTransform
Source
RootTreeTransform.scala
def runSelect(selectTerm: qctx.reflect.Select)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
SelectTreeTransform
Source
SelectTreeTransform.scala
def runSelectOuter(term: qctx.reflect.SelectOuter)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
SelectOuterTreeTransform
Source
SelectOuterTreeTransform.scala
def runTypeApply(applyTerm: qctx.reflect.Term, fun: qctx.reflect.Term, targs: List[qctx.reflect.TypeTree])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
TypeApplyTreeTransform
Source
TypeApplyTreeTransform.scala
def runValDefFromBlock(block: qctx.reflect.Block, valDef: qctx.reflect.ValDef)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ValDefTreeTransform
Source
ValDefTreeTransform.scala
def safeShow(t: qctx.reflect.Tree): String

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
def safeTypeShow(tp: qctx.reflect.TypeRepr): String

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
def sameSelect(funTerm: qctx.reflect.Term, name: String, targs: List[qctx.reflect.TypeTree], args: List[qctx.reflect.Term])(owner: qctx.reflect.Symbol): Option[this.qctx.reflect.Term]

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def shiftParamType(tp: qctx.reflect.TypeRepr, xPos: qctx.reflect.Term): this.qctx.reflect.TypeRepr

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def shiftTypeForCpsGeneratedMethod(tpe: qctx.reflect.TypeRepr, foundShiftedParams: Boolean, xPos: qctx.reflect.Term): this.qctx.reflect.TypeRepr

Shift the functional typr tpe. annotated ny makecps. If the function type does not contains hight-order function which can be shifted - report error. (we call shift only for methods, annotated with makeCps) Note, that is is not the type of the shifted methods (because it includes yet one type parameter F[_]), it is just the type which used to make typer happy with the shifted arguments. This type will be throwed out on the later stage.

Shift the functional typr tpe. annotated ny makecps. If the function type does not contains hight-order function which can be shifted - report error. (we call shift only for methods, annotated with makeCps) Note, that is is not the type of the shifted methods (because it includes yet one type parameter F[_]), it is just the type which used to make typer happy with the shifted arguments. This type will be throwed out on the later stage.

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def shiftedApplyCps(funCpsTree: CpsTree, argRecords: Seq[ApplyArgRecord], argTails: List[Seq[ApplyArgRecord]], applyTerm: qctx.reflect.Apply, argsSummaryProperties: ApplyArgsSummaryProperties)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def shiftedApplyTerm(funTerm: qctx.reflect.Term, argRecords: Seq[ApplyArgRecord], argsSummaryProperties: ApplyArgsSummaryProperties): PartialShiftedApply

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def shiftedLambdaType(tpe: qctx.reflect.TypeRepr): this.qctx.reflect.TypeRepr

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def shiftedLambdaTypeTree(tpt: qctx.reflect.TypeTree): this.qctx.reflect.TypeTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def shiftedResultCpsTree(origin: qctx.reflect.Term, shifted: qctx.reflect.Term, optCpsDirectArg: Option[qctx.reflect.Term])(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def substituteCpsDirectArg(term: qctx.reflect.Term, originCPsDirectArg: qctx.reflect.Term, nCpsDirectArg: qctx.reflect.Term): Option[this.qctx.reflect.Term]

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def substituteCpsDirectArgApply(applyTerm: qctx.reflect.Apply, originCPsDirectArg: qctx.reflect.Term, nCpsDirectArg: qctx.reflect.Term): Option[this.qctx.reflect.Apply]

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def substituteCpsDirectArgRequired(term: qctx.reflect.Term, originCpsDirectArg: qctx.reflect.Term, nCpsDirectArg: qctx.reflect.Term): this.qctx.reflect.Term

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def termIsNoOrderDepended(x: qctx.reflect.Term): Boolean

Attributes

Inherited from:
ApplyArgRecordScope
Source
ApplyArgRecordScope.scala
def typeBoundSubst(tpb: qctx.reflect.TypeBounds, from: List[qctx.reflect.Symbol], to: List[qctx.reflect.TypeRepr]): this.qctx.reflect.TypeBounds

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def unitTerm: this.qctx.reflect.Literal

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
def withInlineBindings(owner: qctx.reflect.Symbol, origin: qctx.reflect.Inlined, tree: CpsTree): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala
def wrapCallIntoCpsDirect(origin: qctx.reflect.Term, cpsDirectArg: qctx.reflect.Term, applyCall: qctx.reflect.Term)(owner: qctx.reflect.Symbol): CpsTree

Attributes

Inherited from:
ApplyTreeTransform
Source
ApplyTreeTransform.scala

Concrete fields

override val cpsCtx: TransformationContext[F, T, C]

Attributes

Source
TreeTransformScope.scala

Inherited fields

lazy val adoptCpsedCallCompileTimeOnlySymbol: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val awaitSymbol: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val cpsNotChangeSymbol: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val cpsTransformedSymbol: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val flatMapSymbol: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val logicalAndSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val logicalNotSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val logicalOrSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val mapSymbol: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val monadTypeTree: qctx.reflect.Inferred

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val nonFatalUnapplySym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val nonLocalReturnsReturningSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val nonLocalReturnsSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val nonLocalReturnsThrowReturnSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val objAsyncShift: qctx.reflect.TypeRepr

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val partialFunctionType: qctx.reflect.TypeRepr

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val pureSymbol: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val shiftedNonLocalReturnsReturningSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val shiftedNonLocalReturnsSyncReturningSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala
lazy val shiftedNonLocalReturnsThrowReturnSym: qctx.reflect.Symbol

Attributes

Inherited from:
KnownTreeFragments
Source
KnownTreeFragments.scala

Extensions

Inherited extensions

extension (otherCake: TreeTransformScope[_[_], _, _])
def adopt(t: qctx.reflect.Term): otherCake.qctx.reflect.Term

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
def adoptStatement(t: qctx.reflect.Statement): otherCake.qctx.reflect.Statement

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
def adoptSymbol(t: qctx.reflect.Symbol): otherCake.qctx.reflect.Symbol

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
def adoptTerm(t: qctx.reflect.Term): otherCake.qctx.reflect.Term

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
def adoptTermFun(op: qctx.reflect.Term => qctx.reflect.Term): otherCake.qctx.reflect.Term => otherCake.qctx.reflect.Term

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala
def adoptType(t: qctx.reflect.TypeRepr): otherCake.qctx.reflect.TypeRepr

Attributes

Inherited from:
CpsTreeScope
Source
CpsTree.scala

Implicits

Implicits

implicit override val qctx: Quotes

Attributes

Source
TreeTransformScope.scala

Inherited and Abstract implicits

implicit val ccType: Type[C]

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
implicit val ctType: Type[T]

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala
implicit val fType: Type[F]

Attributes

Inherited from:
TreeTransformScope
Source
TreeTransformScope.scala