Packages

p

izumi

reflect

package reflect

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. reflect
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. trait AnyTag extends AnyRef
  2. trait HKTag[T] extends AnyTag

    Internal unsafe API representing a poly-kinded, higher-kinded type tag.

    Internal unsafe API representing a poly-kinded, higher-kinded type tag.

    To create a Tag* implicit for an arbitrary kind use the following syntax:

    type TagK5[K[_, _, _, _, _]] = HKTag[ { type Arg[A, B, C, D, E] = K[A, B, C, D, E] } ]

    As an argument to HKTag, you should specify the type variables your type parameter will take and apply them to it, in order.

    type TagFGC[K[_[_, _], _[_], _[_[_], _, _, _]] = HKTag[ { type Arg[A[_, _], B[_], C[_[_], _, _, _]] = K[A, B, C] } ]

    A convenience macro Tag.auto.T is available to automatically create a type lambda for a type of any kind:

    def x[K[_[_, _], _[_], _[_[_], _, _, _]: Tag.auto.T]: Tag.auto.T[K] = implicitly[Tag.auto.T[K]]
  3. final class HKTagMaterializer[T] extends AnyVal

    Force eager expansion for all recursive implicit searches inside TagMacro by introducing a proxy implicit to display better error messages

    Force eager expansion for all recursive implicit searches inside TagMacro by introducing a proxy implicit to display better error messages

    See also

    test ResourceEffectBindingsTest."Display tag macro stack trace when ResourceTag is not found"

  4. trait Tag[T] extends AnyTag

    Like scala.reflect.api.TypeTags.TypeTag, but supports higher-kinded type tags via TagK type class.

    Like scala.reflect.api.TypeTags.TypeTag, but supports higher-kinded type tags via TagK type class.

    In context of DI this lets you define modules parameterized by higher-kinded type parameters. This is especially helpful for applying tagless final style

    Example:

    import distage.ModuleDef
    
    class MyModule[F[_]: Monad: TagK] extends ModuleDef {
      make[MyService[F]]
      make[F[Int]].named("lucky-number").from(Monad[F].pure(7))
    }

    Without a TagK constraint above, this example would fail with no TypeTag available for MyService[F] error

    Currently some limitations apply as to when a Tag will be correctly constructed: * Type Parameters do not yet resolve inside structural refinements, e.g. T in

    Tag[{ def x: T}]

    * TagK* does not resolve for constructors with bounded parameters, e.g. S in

    class Abc[S <: String]; TagK[Abc]

    (You can still have a bound in partial application: e.g.

    class Abc[S <: String, A]; TagK[Abc["hi", ?]]

    * Further details at https://github.com/7mind/izumi/issues/374

    Annotations
    @implicitNotFound( ... )
    See also

    "Lightweight Scala Reflection and why Dotty needs TypeTags reimplemented" https://blog.7mind.io/lightweight-reflection.html

  5. type TagK[K[_]] = HKTag[AnyRef { type Arg[A] = K[A] }]

    TagK is like a scala.reflect.api.TypeTags.TypeTag but for higher-kinded types.

    TagK is like a scala.reflect.api.TypeTags.TypeTag but for higher-kinded types.

    Example:

    def containerTypesEqual[F[_]: TagK, K[_]: TagK]): Boolean = TagK[F].tag.tpe =:= TagK[K].tag.tpe
    
    containerTypesEqual[Set, collection.immutable.Set] == true
    containerTypesEqual[Array, List] == false
  6. type TagK10[K[_, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9] }]
  7. type TagK11[K[_, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10] }]
  8. type TagK12[K[_, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11] }]
  9. type TagK13[K[_, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12] }]
  10. type TagK14[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13] }]
  11. type TagK15[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14] }]
  12. type TagK16[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15] }]
  13. type TagK17[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16] }]
  14. type TagK18[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17] }]
  15. type TagK19[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18] }]
  16. type TagK20[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19] }]
  17. type TagK21[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20] }]
  18. type TagK22[K[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,A21] }]
  19. type TagK3[K[_, _, _]] = HKTag[AnyRef { type Arg[A, B, C] = K[A,B,C] }]
  20. type TagK4[K[_, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3] = K[A0,A1,A2,A3] }]
  21. type TagK5[K[_, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4] = K[A0,A1,A2,A3,A4] }]
  22. type TagK6[K[_, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5] = K[A0,A1,A2,A3,A4,A5] }]
  23. type TagK7[K[_, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6] = K[A0,A1,A2,A3,A4,A5,A6] }]
  24. type TagK8[K[_, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7] = K[A0,A1,A2,A3,A4,A5,A6,A7] }]
  25. type TagK9[K[_, _, _, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6, A7, A8] = K[A0,A1,A2,A3,A4,A5,A6,A7,A8] }]
  26. type TagKK[K[_, _]] = HKTag[AnyRef { type Arg[A, B] = K[A,B] }]
  27. class TagLambdaMacro extends TagMacro
    Annotations
    @silent( "deprecated" )
  28. class TagMacro extends AnyRef
    Annotations
    @silent( "deprecated" )
  29. type TagT[K[_[_]]] = HKTag[AnyRef { type Arg[A[_]] = K[A] }]
  30. type TagTK[K[_[_], _]] = HKTag[AnyRef { type Arg[A[_], B] = K[A,B] }]
  31. type TagTK3[K[_[_], _, _, _]] = HKTag[AnyRef { type Arg[A[_], B, C, D] = K[A,B,C,D] }]
  32. type TagTKK[K[_[_], _, _]] = HKTag[AnyRef { type Arg[A[_], B, C] = K[A,B,C] }]
  33. trait WeakTag[T] extends AnyTag
  34. trait WeakTagInstances1 extends AnyRef

Value Members

  1. object DebugProperties

    Java properties and macro settings that control behavior and debug output of Lightweight Reflection macros

    Java properties and macro settings that control behavior and debug output of Lightweight Reflection macros

    See also

    DebugProperties

  2. object HKTag
  3. object HKTagMaterializer
  4. object Tag
  5. object TagK
  6. object TagK3
  7. object TagKK
  8. object TagT
  9. object TagTK
  10. object TagTK3
  11. object TagTKK
  12. object WeakTag extends WeakTagInstances1

Inherited from AnyRef

Inherited from Any

Ungrouped