Class

com.avsystem.commons.macros.serialization

GenCodecMacros

Related Doc: package serialization

Permalink

class GenCodecMacros extends CodecMacroCommons with TypeClassDerivation

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. GenCodecMacros
  2. TypeClassDerivation
  3. CodecMacroCommons
  4. AbstractMacroCommons
  5. MacroCommons
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new GenCodecMacros(ctx: Context)

    Permalink

Type Members

  1. class Annot extends AnyRef

    Permalink
    Definition Classes
    MacroCommons
  2. case class ApplyParam(idx: Int, sym: scala.reflect.macros.Universe.TermSymbol, defaultValue: scala.reflect.macros.Universe.Tree, instance: scala.reflect.macros.Universe.Tree) extends Product with Serializable

    Permalink

    Contains metadata extracted from apply method of companion object of some record (case-class like) type.

    Contains metadata extracted from apply method of companion object of some record (case-class like) type.

    sym

    symbol of the apply method parameter or case class constructor parameter (if apply is auto-generated for case class companion object)

    defaultValue

    tree that evaluates to default value of the apply parameter or EmptyTree

    instance

    tree that evaluates to type class instance for type of this parameter

    Definition Classes
    TypeClassDerivation
  3. case class ApplyUnapply(apply: scala.reflect.macros.Universe.Symbol, unapply: scala.reflect.macros.Universe.Symbol, params: List[(scala.reflect.macros.Universe.TermSymbol, scala.reflect.macros.Universe.Tree)]) extends Product with Serializable

    Permalink

    apply

    case class constructor or companion object's apply method

    unapply

    companion object'a unapply method or NoSymbol for case class with more than 22 fields

    params

    parameters with trees evaluating to default values (or EmptyTrees)

    Definition Classes
    MacroCommons
  4. case class CaseClassInfo(idx: Int, subtype: scala.reflect.macros.Universe.Type, applyParams: List[GenCodecMacros.ApplyParam]) extends CaseInfo with Product with Serializable

    Permalink
  5. sealed abstract class CaseInfo extends AnyRef

    Permalink
  6. case class CaseObjectInfo(idx: Int, subtype: scala.reflect.macros.Universe.Type, singleton: scala.reflect.macros.Universe.Tree) extends CaseInfo with Product with Serializable

    Permalink
  7. type ClassTag[T] = scala.reflect.ClassTag[T]

    Permalink
    Definition Classes
    MacroCommons
  8. case class KnownSubtype(idx: Int, tpe: scala.reflect.macros.Universe.Type, instance: scala.reflect.macros.Universe.Tree) extends Product with Serializable

    Permalink

    Contains metadata extracted from one of the case subtypes in a sealed hierarchy.

    Contains metadata extracted from one of the case subtypes in a sealed hierarchy.

    tpe

    the case subtype itself

    instance

    tree that evaluates to type class instance for this subtype

    Definition Classes
    TypeClassDerivation
  9. case class LitOrDefault[T](default: T)(implicit evidence$4: ClassTag[T]) extends Product with Serializable

    Permalink
    Definition Classes
    MacroCommons
  10. case class TypeKey(tpe: scala.reflect.macros.Universe.Type) extends Product with Serializable

    Permalink

    Wrapper over Type that implements equals/hashCode consistent with type equivalence (=:=)

    Wrapper over Type that implements equals/hashCode consistent with type equivalence (=:=)

    Definition Classes
    MacroCommons
  11. class treeOps[T <: scala.reflect.macros.Universe.Tree] extends AnyRef

    Permalink
    Definition Classes
    MacroCommons

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. val AllowImplicitMacroCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    TypeClassDerivation
  5. val AllowImplicitMacroObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    TypeClassDerivation
  6. final val AnnotationAggregateType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  7. final val AnnotationTpe: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  8. object AnonPartialFunction

    Permalink
    Definition Classes
    MacroCommons
  9. final val BIndexedSeqClass: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  10. final val BIndexedSeqTpe: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  11. final val BIterableClass: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  12. final val BIterableTpe: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  13. final val BMapCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  14. object BooleanLiteral

    Permalink
    Definition Classes
    MacroCommons
  15. final val ClassCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  16. final val CollectionPkg: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  17. final val CommonsPkg: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  18. final val DefaultCaseAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  19. final val DefaultCaseField: String("_case")

    Permalink
    Definition Classes
    CodecMacroCommons
  20. object DefaultValueMethod

    Permalink
    Definition Classes
    MacroCommons
  21. final val DefaultsToNameAT: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  22. val DeferredInstanceCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    TypeClassDerivation
  23. object ExistentialSingleton

    Permalink
    Definition Classes
    MacroCommons
  24. final val FlattenAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  25. final val FutureSym: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  26. final val GenCodecCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  27. final val GenCodecObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  28. final val GeneratedAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  29. final val ImplicitNotFoundAT: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  30. final val ImplicitNotFoundCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  31. final val ImplicitNotFoundSym: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  32. final val ImplicitsObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  33. final val InferAT: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  34. final val IntCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  35. final val JListCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  36. final val JListObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  37. final val JavaInteropObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  38. final val JavaLangPkg: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  39. final val ListBufferCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  40. final val ListCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  41. final val ListObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  42. object Lit

    Permalink
    Definition Classes
    MacroCommons
  43. final val MapCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  44. final val MapObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  45. final val MapSym: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  46. object MaybeApply

    Permalink
    Definition Classes
    MacroCommons
  47. object MaybeTypeApply

    Permalink
    Definition Classes
    MacroCommons
  48. object MaybeTyped

    Permalink
    Definition Classes
    MacroCommons
  49. object MultiApply

    Permalink
    Definition Classes
    MacroCommons
  50. final val NOptCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  51. final val NOptObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  52. final val NameAnnotNameSym: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    CodecMacroCommons
  53. final val NameAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  54. final val NilObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  55. final val NoneObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  56. final val NotInheritedFromSealedTypes: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  57. final val NothingCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  58. final val NothingTpe: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  59. final val OptCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  60. final val OptObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  61. final val OptionClass: scala.reflect.macros.Universe.ClassSymbol

    Permalink
    Definition Classes
    MacroCommons
  62. final val OptionCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  63. final val OptionObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  64. final val OutOfOrderAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  65. final val PartialFunctionClass: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  66. final val PositionedAT: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  67. final val PredefObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  68. final val ProductTpe: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  69. val RecursiveImplicitMarkerObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    TypeClassDerivation
  70. final val ScalaPkg: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  71. final val SeqCompanionSym: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  72. final val SerializationPkg: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    CodecMacroCommons
  73. final val SetCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  74. final val SetObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  75. object SingleParamList

    Permalink
    Definition Classes
    MacroCommons
  76. final val SomeObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  77. final val StringCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  78. object StringLiteral

    Permalink
    Definition Classes
    MacroCommons
  79. final val StringPFTpe: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  80. final val TransientDefaultAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  81. final val TransparentAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  82. final val TryCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  83. final val TryObj: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  84. final val UnitCls: scala.reflect.macros.Universe.Select

    Permalink
    Definition Classes
    MacroCommons
  85. final val WhenAbsentAnnotType: scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    CodecMacroCommons
  86. object WrappedImplicitSearchResult

    Permalink
    Definition Classes
    MacroCommons
  87. def abort(msg: String): Nothing

    Permalink
    Definition Classes
    MacroCommons
  88. def abortAt(message: String, pos: scala.reflect.macros.Universe.Position): Nothing

    Permalink
    Definition Classes
    MacroCommons
  89. def abortOnTypecheckException[T](expr: ⇒ T): T

    Permalink
    Definition Classes
    MacroCommons
  90. def accessorFor(cparam: scala.reflect.macros.Universe.Symbol): Option[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroCommons
  91. def actualParamType(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  92. def actualParamType(param: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  93. def allAnnotations(s: scala.reflect.macros.Universe.Symbol, tpeFilter: scala.reflect.macros.Universe.Type, seenFrom: scala.reflect.macros.Universe.Type = NoType, withInherited: Boolean = true, fallback: List[scala.reflect.macros.Universe.Tree] = Nil): List[Annot]

    Permalink
    Definition Classes
    MacroCommons
  94. def allCurrentlyKnownSubclasses(sym: scala.reflect.macros.Universe.Symbol): Set[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroCommons
  95. def alternatives(sym: scala.reflect.macros.Universe.Symbol): List[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroCommons
  96. def applyUnapplyCodec[T](implicit arg0: scala.reflect.macros.Universe.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
  97. def applyUnapplyFor(tpe: scala.reflect.macros.Universe.Type, typedCompanion: scala.reflect.macros.Universe.Tree): Option[ApplyUnapply]

    Permalink
    Definition Classes
    MacroCommons
  98. def applyUnapplyFor(tpe: scala.reflect.macros.Universe.Type): Option[ApplyUnapply]

    Permalink
    Definition Classes
    MacroCommons
  99. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  100. val c: Context

    Permalink
    Definition Classes
    AbstractMacroCommonsMacroCommons
  101. def cachedImplicitDeclarations: List[scala.reflect.macros.Universe.Tree]

    Permalink
    Definition Classes
    MacroCommons
  102. def caseAccessorFor(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    CodecMacroCommons
  103. final def classTag[T](implicit arg0: ClassTag[T]): ClassTag[T]

    Permalink
    Definition Classes
    MacroCommons
  104. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  105. lazy val companionReplacement: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  106. final val companionReplacementName: scala.reflect.macros.Universe.TermName

    Permalink
    Definition Classes
    MacroCommons
  107. def containsInaccessibleThises(tree: scala.reflect.macros.Universe.Tree): Boolean

    Permalink
    Definition Classes
    MacroCommons
  108. def debug(msg: ⇒ String): Unit

    Permalink
    Definition Classes
    MacroCommons
  109. final val debugEnabled: Boolean

    Permalink
    Definition Classes
    MacroCommons
  110. def defaultValueMethod(param: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  111. def dependency(depTpe: scala.reflect.macros.Universe.Type, tcTpe: scala.reflect.macros.Universe.Type, param: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    TypeClassDerivation
  112. def determineTypeParams(undetTpe: scala.reflect.macros.Universe.Type, detTpe: scala.reflect.macros.Universe.Type, typeParams: List[scala.reflect.macros.Universe.Symbol]): Option[List[scala.reflect.macros.Universe.Type]]

    Permalink
    Definition Classes
    MacroCommons
  113. def echo(msg: String): Unit

    Permalink
    Definition Classes
    MacroCommons
  114. final lazy val enclosingClasses: List[scala.reflect.macros.blackbox.Context.Symbol]

    Permalink
    Definition Classes
    MacroCommons
  115. def enclosingConstructorCompanion: scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  116. def ensure(condition: Boolean, msg: String): Unit

    Permalink
    Definition Classes
    MacroCommons
  117. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  118. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  119. def error(msg: String): Unit

    Permalink
    Definition Classes
    MacroCommons
  120. def errorAt(message: String, pos: scala.reflect.macros.Universe.Position): Unit

    Permalink
    Definition Classes
    MacroCommons
  121. def existentialSingletonToValDef(sym: scala.reflect.macros.Universe.Symbol, name: scala.reflect.macros.Universe.TermName, tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.ValDef

    Permalink
    Definition Classes
    MacroCommons
  122. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  123. def findAnnotation(s: scala.reflect.macros.Universe.Symbol, tpe: scala.reflect.macros.Universe.Type, seenFrom: scala.reflect.macros.Universe.Type = NoType, withInherited: Boolean = true, fallback: List[scala.reflect.macros.Universe.Tree] = Nil): Option[Annot]

    Permalink
    Definition Classes
    MacroCommons
  124. def flatForSealedHierarchy(tpe: scala.reflect.macros.Universe.Type, caseFieldName: String): scala.reflect.macros.Universe.Tree

    Permalink
  125. def forApplyUnapply(tpe: scala.reflect.macros.Universe.Type, companion: scala.reflect.macros.Universe.Tree, apply: scala.reflect.macros.Universe.Symbol, unapply: scala.reflect.macros.Universe.Symbol, applyParams: List[ApplyParam]): scala.reflect.macros.Universe.Tree

    Permalink
  126. def forApplyUnapply(tpe: scala.reflect.macros.Universe.Type, apply: scala.reflect.macros.Universe.Symbol, unapply: scala.reflect.macros.Universe.Symbol, params: List[ApplyParam]): scala.reflect.macros.Universe.Tree

    Permalink

    Derives type class instance for record type.

    Derives type class instance for record type. Record type is a class/trait whose companion object has matching apply and unapply methods. In particular, every case class is a proper record type.

    tpe

    the record type

    apply

    symbol of the apply method in companion object

    unapply

    symbol of the unapply method in companion object

    params

    metadata for parameters of apply method

    Definition Classes
    GenCodecMacrosTypeClassDerivation
  127. def forSealedEnum[T](implicit arg0: scala.reflect.macros.Universe.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
  128. def forSealedHierarchy(tpe: scala.reflect.macros.Universe.Type, subtypes: List[KnownSubtype]): scala.reflect.macros.Universe.Tree

    Permalink

    Derives type class instance for union type (sealed hierarchy in which every non-abstract subtype has the type class instance of its own or can also be automatically derived).

    Derives type class instance for union type (sealed hierarchy in which every non-abstract subtype has the type class instance of its own or can also be automatically derived).

    tpe

    type of the sealed class/trait

    subtypes

    metadata for all direct non-abstract subtypes of this sealed class/trait

    Definition Classes
    GenCodecMacrosTypeClassDerivation
  129. def forSingleton(tpe: scala.reflect.macros.Universe.Type, singleValueTree: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Tree

    Permalink

    Derives type class instance for singleton type (i.e.

    Derives type class instance for singleton type (i.e. an object or this)

    tpe

    the singleton type

    singleValueTree

    a tree that evaluates to the sole value of the singleton type

    Definition Classes
    GenCodecMacrosTypeClassDerivation
  130. def forUnknown(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    Permalink

    Derives type class instance for arbitrary type which is neither a singleton, record nor union type.

    Derives type class instance for arbitrary type which is neither a singleton, record nor union type. Usually, you want to throw a TypecheckException to indicate that type class instance cannot be derived for this type. You can use typecheckException method for this.

    Definition Classes
    GenCodecMacrosTypeClassDerivation
  131. def fromApplyUnapplyProvider[T](applyUnapplyProvider: scala.reflect.macros.Universe.Tree)(implicit arg0: scala.reflect.macros.Universe.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
  132. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  133. def getType(typeTree: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  134. def getterSymbolToValDef(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.ValDef

    Permalink
    Definition Classes
    MacroCommons
  135. def hasAnnotation(sym: scala.reflect.macros.Universe.Symbol, annotTpe: scala.reflect.macros.Universe.Type): Boolean

    Permalink
    Definition Classes
    CodecMacroCommons
  136. def hasMemberWithSig(tpe: scala.reflect.macros.Universe.Type, name: scala.reflect.macros.Universe.Name, suchThat: (scala.reflect.macros.Universe.Type) ⇒ Boolean): Boolean

    Permalink
    Definition Classes
    MacroCommons
  137. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  138. def implementDeferredInstance(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    Permalink

    Returns tree that instantiates a "deferred instance" of this type class.

    Returns tree that instantiates a "deferred instance" of this type class. Deferred instance is a special implementation of the type class which implements the com.avsystem.commons.derivation.DeferredInstance trait and wraps an another, actual instance of the type class and delegates all operations to that wrapped instance. The wrapped instance itself is supplied later, by assigning a var available on the deferred instance.

    This is all necessary to handle automatic derivation for recursively-defined types like:

    case class Tree(children: List[Tree])

    EXAMPLE:

    Let's assume a type class Traverser defined like this:

    trait Traverser[T] {
      def traverse(value: T): Unit
    }
    object Traverser {
      class Deferred[T] extends DeferredInstance[Traverser[T]] with Traverser[T] {
        def traverse(value: T) = underlying.traverse(value)
      }
    
      implicit def forList[T](implicit forElement: Traverser[T]): Traverser[List[T]] =
        new Traverser[List[T]] {
          def traverse(value: List[T]) = value.foreach(forElement.traverse)
        }
    }

    Automatically derived type class instance for Tree would then look somewhat like this:

    val tcTree: Traverser[Tree] = {
      val deferred: DeferredInstance[Traverser[Tree]] with Traverser[Tree] = new Traverser.Deferred[T]
      deferred.underlying = new Traverser[Tree] {
        val forChildren = Traverser.forList[Tree](deferred)
        def traverse(value: Tree) = value.children.foreach(forChildren.traverse)
      }
      deferred.underlying
    }
    Definition Classes
    GenCodecMacrosTypeClassDerivation
  139. def implicitNotFoundMsg(tpe: scala.reflect.macros.Universe.Type): String

    Permalink
    Definition Classes
    MacroCommons
  140. def indent(str: String, indent: String): String

    Permalink
    Definition Classes
    MacroCommons
  141. def inferCachedImplicit(tpe: scala.reflect.macros.Universe.Type, errorClue: String, errorPos: scala.reflect.macros.Universe.Position): scala.reflect.macros.Universe.TermName

    Permalink
    Definition Classes
    MacroCommons
  142. def isCorrectUnapply(unapplyResultType: scala.reflect.macros.Universe.Type, applyParams: List[scala.reflect.macros.Universe.Symbol], elemAdjust: (scala.reflect.macros.Universe.Type) ⇒ scala.reflect.macros.Universe.Type = identity): Boolean

    Permalink
    Definition Classes
    MacroCommons
  143. def isFirstListVarargs(meth: scala.reflect.macros.Universe.Symbol): Boolean

    Permalink
    Definition Classes
    MacroCommons
  144. def isGenerated(sym: scala.reflect.macros.Universe.Symbol): Boolean

    Permalink
    Definition Classes
    CodecMacroCommons
  145. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  146. def isOutOfOrder(sym: scala.reflect.macros.Universe.Symbol): Boolean

    Permalink
  147. def isParameterless(signature: scala.reflect.macros.Universe.Type): Boolean

    Permalink
    Definition Classes
    MacroCommons
  148. def isRepeated(param: scala.reflect.macros.Universe.Symbol): Boolean

    Permalink
    Definition Classes
    MacroCommons
  149. final lazy val isScalaJs: Boolean

    Permalink
    Definition Classes
    MacroCommons
  150. def isSealedHierarchyRoot(sym: scala.reflect.macros.Universe.Symbol): Boolean

    Permalink
    Definition Classes
    MacroCommons
  151. def isTransientDefault(param: ApplyParam): Boolean

    Permalink
  152. def isTransparent(sym: scala.reflect.macros.Universe.Symbol): Boolean

    Permalink
    Definition Classes
    CodecMacroCommons
  153. def isTuple(sym: scala.reflect.macros.Universe.Symbol): Boolean

    Permalink
    Definition Classes
    MacroCommons
  154. def isTypeTree(tree: scala.reflect.macros.Universe.Tree): Boolean

    Permalink
    Definition Classes
    MacroCommons
  155. def knownNonAbstractSubclasses(sym: scala.reflect.macros.Universe.Symbol): Set[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroCommons
  156. def knownSubtypes(tpe: scala.reflect.macros.Universe.Type, ordered: Boolean = false): Option[List[scala.reflect.macros.Universe.Type]]

    Permalink
    Definition Classes
    MacroCommons
  157. def matchingApplyUnapply(tpe: scala.reflect.macros.Universe.Type, applySig: scala.reflect.macros.Universe.Type, unapplySig: scala.reflect.macros.Universe.Type): Boolean

    Permalink
    Definition Classes
    MacroCommons
  158. def materialize[T](implicit arg0: scala.reflect.macros.blackbox.Context.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    TypeClassDerivation
  159. def materializeFor(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    GenCodecMacrosTypeClassDerivation
  160. def materializeImplicitly[T](allow: scala.reflect.macros.Universe.Tree)(implicit arg0: scala.reflect.macros.blackbox.Context.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    TypeClassDerivation
  161. def materializeMacroGenerated[T](implicit arg0: scala.reflect.macros.blackbox.Context.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    TypeClassDerivation
  162. def materializeRecursively[T](implicit arg0: scala.reflect.macros.Universe.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
  163. def methodSymbolToDefDef(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.DefDef

    Permalink
    Definition Classes
    MacroCommons
  164. def mkMacroGenerated(companionTpe: scala.reflect.macros.Universe.Type, tpe: scala.reflect.macros.Universe.Type, baseMaterialize: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    MacroCommons
  165. def mkTupleCodec[T](elementCodecs: scala.reflect.macros.Universe.Tree*)(implicit arg0: scala.reflect.macros.Universe.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree

    Permalink
  166. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  167. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  168. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  169. final lazy val ownerChain: List[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroCommons
  170. def ownersOf(sym: scala.reflect.macros.Universe.Symbol): List[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroCommons
  171. def paramIndex(param: scala.reflect.macros.Universe.Symbol): Int

    Permalink
    Definition Classes
    MacroCommons
  172. def paramSymbolToValDef(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.ValDef

    Permalink
    Definition Classes
    MacroCommons
  173. def pathTo(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    MacroCommons
  174. def posInfo(pos: scala.reflect.macros.Universe.Position): String

    Permalink
    Definition Classes
    MacroCommons
  175. def positionPoint(sym: scala.reflect.macros.Universe.Symbol): Int

    Permalink
    Definition Classes
    MacroCommons
  176. def primaryConstructorOf(tpe: scala.reflect.macros.Universe.Type, problemClue: ⇒ String = ""): scala.reflect.macros.Universe.Symbol

    Permalink
    Definition Classes
    MacroCommons
  177. def registerImplicit(tpe: scala.reflect.macros.Universe.Type, name: scala.reflect.macros.Universe.TermName): Unit

    Permalink
    Definition Classes
    MacroCommons
  178. def registerImplicitImport(importTree: scala.reflect.macros.Universe.Tree): Unit

    Permalink
    Definition Classes
    MacroCommons
  179. def replaceCompanion(typedTree: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    MacroCommons
  180. def select(pre: scala.reflect.macros.Universe.Tree, name: scala.reflect.macros.Universe.Name): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    MacroCommons
  181. def singleValueFor(tpe: scala.reflect.macros.Universe.Type): Option[scala.reflect.macros.Universe.Tree]

    Permalink
    Definition Classes
    MacroCommons
  182. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  183. def targetName(sym: scala.reflect.macros.Universe.Symbol): String

    Permalink
    Definition Classes
    CodecMacroCommons
  184. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  185. def treeAsSeenFrom(tree: scala.reflect.macros.Universe.Tree, seenFrom: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    MacroCommons
  186. def treeForType(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    Permalink

    Returns a Tree that should typecheck to the type passed as argument (without using TypeTree).

    Returns a Tree that should typecheck to the type passed as argument (without using TypeTree).

    Definition Classes
    MacroCommons
  187. def tryInferCachedImplicit(tpe: scala.reflect.macros.Universe.Type): Option[scala.reflect.macros.Universe.TermName]

    Permalink
    Definition Classes
    MacroCommons
  188. def tupleGet(i: Int): scala.reflect.macros.Universe.TermName

    Permalink
    Definition Classes
    CodecMacroCommons
  189. def typeClass: scala.reflect.macros.Universe.Select

    Permalink

    A tree that represents type constructor of the type class to be derived.

    A tree that represents type constructor of the type class to be derived.

    Definition Classes
    GenCodecMacrosTypeClassDerivation
  190. def typeClassInstance(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    TypeClassDerivation
  191. def typeClassName: String

    Permalink

    Human-friendly name of the type class.

    Human-friendly name of the type class. Used in error messages.

    Definition Classes
    GenCodecMacrosTypeClassDerivation
  192. def typeOfCachedImplicit(name: scala.reflect.macros.Universe.TermName): scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  193. def typeOfTypeSymbol(sym: scala.reflect.macros.Universe.TypeSymbol): scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  194. def typeSymbolToTypeDef(sym: scala.reflect.macros.Universe.Symbol, forMethod: Boolean = false): scala.reflect.macros.Universe.TypeDef

    Permalink
    Definition Classes
    MacroCommons
  195. def typecheckException(msg: String): Nothing

    Permalink
    Definition Classes
    MacroCommons
  196. def typedCompanionOf(tpe: scala.reflect.macros.Universe.Type): Option[scala.reflect.macros.Universe.Tree]

    Permalink
    Definition Classes
    MacroCommons
  197. def unwrapNullaryMt(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Type

    Permalink
    Definition Classes
    MacroCommons
  198. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  199. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  200. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  201. def warning(msg: String): Unit

    Permalink
    Definition Classes
    MacroCommons
  202. def withAccessed(sym: scala.reflect.macros.Universe.Symbol): List[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    CodecMacroCommons
  203. def withRecursiveImplicitGuard(targetTpe: scala.reflect.macros.Universe.Type, unguarded: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Tree

    Permalink
    Definition Classes
    TypeClassDerivation
  204. def withSuperSymbols(s: scala.reflect.macros.Universe.Symbol): Iterator[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroCommons

Inherited from TypeClassDerivation

Inherited from CodecMacroCommons

Inherited from AbstractMacroCommons

Inherited from MacroCommons

Inherited from AnyRef

Inherited from Any

Ungrouped