ConstructorUtil

izumi.distage.constructors.ConstructorUtil
class ConstructorUtil[Q <: Quotes](using val qctx: Q)

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Type members

Classlikes

final case class MemberRepr(name: String, isMethod: Boolean, mbSymbol: Option[qctx.reflect.Symbol], tpe: qctx.reflect.TypeRepr, isNewMethod: Boolean)

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
object MemberRepr

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type
MemberRepr.type
final case class ParamRepr(name: String, mbSymbol: Option[qctx.reflect.Symbol], tpe: qctx.reflect.TypeRepr)

Attributes

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

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
object factoryUtil

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Types

type ParamReprLists = List[List[ParamRepr]]

Value members

Concrete methods

def assertSignatureIsAcceptableForFactory(signatureParams: List[ParamRepr], resultTpe: qctx.reflect.TypeRepr, clue: String): Unit
def buildConstructorTermAppliedToTypeParameters(resultType: qctx.reflect.TypeRepr): qctx.reflect.Term
def buildParentConstructorCallTerms(constructorParamListsRepr: List[(qctx.reflect.TypeRepr, ParamReprLists)], outerLamArgs: List[qctx.reflect.Term]): Seq[qctx.reflect.Term]
def dereferenceTypeRef(tpe: qctx.reflect.TypeRepr): qctx.reflect.TypeRepr
final def ensureByName(tpe: qctx.reflect.TypeRepr): qctx.reflect.TypeRepr
def extractConstructorParamLists(tpe: qctx.reflect.TypeRepr): ParamReprLists
def extractMethodParamLists(methodType: qctx.reflect.TypeRepr, methodSym: qctx.reflect.Symbol): ParamReprLists
def findRequiredImplParents(resultTpeSym: qctx.reflect.Symbol, resultTpe: qctx.reflect.TypeRepr): List[qctx.reflect.Symbol]
def getMethodArityWithTypeParams(mtpe: qctx.reflect.TypeRepr): Int
def makeFunctoid[R : Type](params: List[ParamRepr], argsLambda: Expr[(Seq[Any]) => R], providerType: Expr[ProviderType]): Expr[Functoid[R]]
def processOverrides(memberReprs: List[MemberRepr]): List[MemberRepr]
def readWithAnnotation(name: String, annotSym: Option[qctx.reflect.Symbol], tpe: qctx.reflect.TypeRepr): Option[qctx.reflect.TypeRepr]
def requireConcreteTypeConstructor(tpe: qctx.reflect.TypeRepr, macroName: String): Unit
final def returnTypeOfByName(tpe: qctx.reflect.TypeRepr): qctx.reflect.TypeRepr
final def returnTypeOfMethod(t: qctx.reflect.TypeRepr): qctx.reflect.TypeRepr
final def returnTypeOfMethodOrByName(tpe: qctx.reflect.TypeRepr): qctx.reflect.TypeRepr
def symbolIsTraitOrAbstract(typeSym: qctx.reflect.Symbol): Boolean
def unpackRefinement(t: qctx.reflect.TypeRepr): List[MemberRepr]
def wrapCtorApplicationIntoFunctoidRawLambda[R : Type](paramss: ParamReprLists, constructorTerm: qctx.reflect.Term): Expr[(Seq[Any]) => R]
def wrapIntoFunctoidRawLambda[R : Type](params: List[ParamRepr])(body: (qctx.reflect.Symbol, List[qctx.reflect.Term]) => qctx.reflect.Tree): Expr[(Seq[Any]) => R]

Givens

Givens

given qctx: Q