Packages

c

com.avsystem.commons.macros

AbstractTypeClassDerivation

abstract class AbstractTypeClassDerivation extends AbstractMacroCommons with TypeClassDerivation

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AbstractTypeClassDerivation
  2. TypeClassDerivation
  3. AbstractMacroCommons
  4. MacroCommons
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new AbstractTypeClassDerivation(c: Context)

Type Members

  1. 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
    Definition Classes
    MacroCommons
  2. case class TypeKey(tpe: scala.reflect.macros.Universe.Type) extends Product with Serializable
    Definition Classes
    MacroCommons
  3. implicit class treeOps[T <: scala.reflect.macros.Universe.Tree] extends AnyRef
    Definition Classes
    MacroCommons
  4. 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

    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
  5. case class KnownSubtype(idx: Int, tpe: scala.reflect.macros.Universe.Type, instance: scala.reflect.macros.Universe.Tree) extends Product with Serializable

    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

Abstract Value Members

  1. abstract 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

    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
    TypeClassDerivation
  2. abstract def forSealedHierarchy(tpe: scala.reflect.macros.Universe.Type, subtypes: List[KnownSubtype]): scala.reflect.macros.Universe.Tree

    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
    TypeClassDerivation
  3. abstract def forSingleton(tpe: scala.reflect.macros.Universe.Type, singleValueTree: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Tree

    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
    TypeClassDerivation
  4. abstract def forUnknown(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    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
    TypeClassDerivation
  5. abstract def implementDeferredInstance(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    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
    TypeClassDerivation
  6. abstract def typeClass: scala.reflect.macros.Universe.Tree

    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
    TypeClassDerivation
  7. abstract def typeClassName: String

    Human-friendly name of the type class.

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

    Definition Classes
    TypeClassDerivation
  8. abstract def wrapInAuto(tree: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Tree

    Wraps the tree that evaluates to some instance of the type class into a tree that evaluates to an "auto" version of this type class.

    Wraps the tree that evaluates to some instance of the type class into a tree that evaluates to an "auto" version of this type class.

    Definition Classes
    TypeClassDerivation

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val AllowImplicitMacroCls: scala.reflect.macros.Universe.Select
    Definition Classes
    TypeClassDerivation
  5. val AllowImplicitMacroObj: scala.reflect.macros.Universe.Select
    Definition Classes
    TypeClassDerivation
  6. final val AnnotationAggregateType: scala.reflect.macros.Universe.Type
    Definition Classes
    MacroCommons
  7. final val ClassCls: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  8. final val CollectionPkg: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  9. final val CommonsPackage: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  10. val DeferredInstanceCls: scala.reflect.macros.Universe.Select
    Definition Classes
    TypeClassDerivation
  11. final val FutureSym: scala.reflect.macros.Universe.Symbol
    Definition Classes
    MacroCommons
  12. final val ImplicitsObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  13. final val ListCls: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  14. final val ListObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  15. final val MapObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  16. final val MaterializedCls: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  17. final val NilObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  18. final val NoneObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  19. final val OptionClass: scala.reflect.macros.Universe.ClassSymbol
    Definition Classes
    MacroCommons
  20. final val OptionCls: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  21. final val OptionObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  22. val RecursiveImplicitMarkerObj: scala.reflect.macros.Universe.Select
    Definition Classes
    TypeClassDerivation
  23. final val ScalaPkg: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  24. final val SetCls: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  25. final val SetObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  26. final val SomeObj: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  27. final val StringCls: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  28. final val UnitCls: scala.reflect.macros.Universe.Select
    Definition Classes
    MacroCommons
  29. def abort(msg: String): Nothing
    Definition Classes
    MacroCommons
  30. def abortOnTypecheckException[T](expr: ⇒ T): T
    Definition Classes
    MacroCommons
  31. def aggregatedAnnotations(s: scala.reflect.macros.Universe.Symbol): List[scala.reflect.macros.Universe.Annotation]
    Definition Classes
    MacroCommons
  32. def allAnnotations(s: scala.reflect.macros.Universe.Symbol): List[scala.reflect.macros.Universe.Annotation]
    Definition Classes
    MacroCommons
  33. def allCurrentlyKnownSubclasses(sym: scala.reflect.macros.Universe.Symbol): Set[scala.reflect.macros.Universe.Symbol]
    Definition Classes
    MacroCommons
  34. def alternatives(sym: scala.reflect.macros.Universe.Symbol): List[scala.reflect.macros.Universe.Symbol]
    Definition Classes
    MacroCommons
  35. def applyUnapplyFor(tpe: scala.reflect.macros.Universe.Type, companion: scala.reflect.macros.Universe.Tree): Option[ApplyUnapply]
    Definition Classes
    MacroCommons
  36. def applyUnapplyFor(tpe: scala.reflect.macros.Universe.Type): Option[ApplyUnapply]
    Definition Classes
    MacroCommons
  37. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  38. val c: Context
    Definition Classes
    AbstractMacroCommons → MacroCommons
  39. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  40. def dependency(depTpe: scala.reflect.macros.Universe.Type, tcTpe: scala.reflect.macros.Universe.Type, hint: String, allowImplicitMacro: Boolean = false): scala.reflect.macros.Universe.Tree
    Definition Classes
    TypeClassDerivation
  41. 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]]
    Definition Classes
    MacroCommons
  42. def echo(msg: String): Unit
    Definition Classes
    MacroCommons
  43. final lazy val enclosingClasses: List[scala.reflect.macros.blackbox.Context.Symbol]
    Definition Classes
    MacroCommons
  44. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  45. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  46. def error(msg: String): Unit
    Definition Classes
    MacroCommons
  47. 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
    Definition Classes
    MacroCommons
  48. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  49. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  50. def getType(typeTree: scala.reflect.macros.Universe.Tree): scala.reflect.macros.Universe.Type
    Definition Classes
    MacroCommons
  51. def getterSymbolToValDef(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.ValDef
    Definition Classes
    MacroCommons
  52. def hasMemberWithSig(tpe: scala.reflect.macros.Universe.Type, name: scala.reflect.macros.Universe.Name, suchThat: (scala.reflect.macros.Universe.Type) ⇒ Boolean): Boolean
    Definition Classes
    MacroCommons
  53. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  54. 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
    Definition Classes
    MacroCommons
  55. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  56. def isParameterless(signature: scala.reflect.macros.Universe.Type): Boolean
    Definition Classes
    MacroCommons
  57. final lazy val isScalaJs: Boolean
    Definition Classes
    MacroCommons
  58. def isSealedHierarchyRoot(sym: scala.reflect.macros.Universe.Symbol): Boolean
    Definition Classes
    MacroCommons
  59. def isTuple(sym: scala.reflect.macros.Universe.Symbol): Boolean
    Definition Classes
    MacroCommons
  60. def isTypeTree(tree: scala.reflect.macros.Universe.Tree): Boolean
    Definition Classes
    MacroCommons
  61. def isVarargs(meth: scala.reflect.macros.Universe.Symbol): Boolean
    Definition Classes
    MacroCommons
  62. def knownNonAbstractSubclasses(sym: scala.reflect.macros.Universe.Symbol): Set[scala.reflect.macros.Universe.Symbol]
    Definition Classes
    MacroCommons
  63. def knownSubtypes(tpe: scala.reflect.macros.Universe.Type): Option[List[scala.reflect.macros.Universe.Type]]
    Definition Classes
    MacroCommons
  64. def matchingApplyUnapply(tpe: scala.reflect.macros.Universe.Type, applySig: scala.reflect.macros.Universe.Type, unapplySig: scala.reflect.macros.Universe.Type): Boolean
    Definition Classes
    MacroCommons
  65. def materialize[T](implicit arg0: scala.reflect.macros.blackbox.Context.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree
    Definition Classes
    TypeClassDerivation
  66. def materializeAuto[T](implicit arg0: scala.reflect.macros.blackbox.Context.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree
    Definition Classes
    TypeClassDerivation
  67. def materializeFor(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree
    Definition Classes
    TypeClassDerivation
  68. def materializeImplicitly[T](allow: scala.reflect.macros.Universe.Tree)(implicit arg0: scala.reflect.macros.blackbox.Context.WeakTypeTag[T]): scala.reflect.macros.Universe.Tree
    Definition Classes
    TypeClassDerivation
  69. def methodSymbolToDefDef(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.DefDef
    Definition Classes
    MacroCommons
  70. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  71. def nonRepeatedType(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Type
    Definition Classes
    MacroCommons
  72. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  73. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  74. final lazy val ownerChain: List[scala.reflect.macros.Universe.Symbol]
    Definition Classes
    MacroCommons
  75. def paramSymbolToValDef(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.ValDef
    Definition Classes
    MacroCommons
  76. def pathTo(sym: scala.reflect.macros.Universe.Symbol): scala.reflect.macros.Universe.Tree
    Definition Classes
    MacroCommons
  77. def select(pre: scala.reflect.macros.Universe.Tree, name: scala.reflect.macros.Universe.Name): scala.reflect.macros.Universe.Tree
    Definition Classes
    MacroCommons
  78. def singleValueFor(tpe: scala.reflect.macros.Universe.Type): Option[scala.reflect.macros.Universe.Tree]
    Definition Classes
    MacroCommons
  79. def superSymbols(s: scala.reflect.macros.Universe.Symbol): List[scala.reflect.macros.Universe.Symbol]
    Definition Classes
    MacroCommons
  80. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  81. def toString(): String
    Definition Classes
    AnyRef → Any
  82. def treeForType(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    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
  83. def typeClassInstance(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Type
    Definition Classes
    TypeClassDerivation
  84. def typeOfTypeSymbol(sym: scala.reflect.macros.Universe.TypeSymbol): scala.reflect.macros.Universe.Type
    Definition Classes
    MacroCommons
  85. def typeSymbolToTypeDef(sym: scala.reflect.macros.Universe.Symbol, forMethod: Boolean = false): scala.reflect.macros.Universe.TypeDef
    Definition Classes
    MacroCommons
  86. def typecheckException(msg: String): Nothing
    Definition Classes
    MacroCommons
  87. def unwrapNullaryMt(tpe: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Type
    Definition Classes
    MacroCommons
  88. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  89. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  90. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  91. def warning(msg: String): Unit
    Definition Classes
    MacroCommons
  92. object AnonPartialFunction
    Definition Classes
    MacroCommons
  93. object BooleanLiteral
    Definition Classes
    MacroCommons
  94. object ExistentialSingleton
    Definition Classes
    MacroCommons
  95. object SingleParamList
    Definition Classes
    MacroCommons
  96. object StringLiteral
    Definition Classes
    MacroCommons

Inherited from TypeClassDerivation

Inherited from AbstractMacroCommons

Inherited from MacroCommons

Inherited from AnyRef

Inherited from Any

Ungrouped