Package

izumi

reflect

Permalink

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

    Permalink
  2. trait HKTag[T] extends AnyTag

    Permalink

    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

    Permalink

    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

    Permalink

    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

    izumi.reflect.macrortti.LTag.Weak - summoner for izumi.reflect.macrortti.LightTypeTag that does not resolve type parameters and allows unresolved ("weak") type parameters to be part of a tag

    izumi.reflect.macrortti.LTag - summoner for izumi.reflect.macrortti.LightTypeTag that does not resolve type parameters

    "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] }]

    Permalink

    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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  19. type TagK3[K[_, _, _]] = HKTag[AnyRef { type Arg[A, B, C] = K[A,B,C] }]

    Permalink
  20. type TagK4[K[_, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3] = K[A0,A1,A2,A3] }]

    Permalink
  21. type TagK5[K[_, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4] = K[A0,A1,A2,A3,A4] }]

    Permalink
  22. type TagK6[K[_, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5] = K[A0,A1,A2,A3,A4,A5] }]

    Permalink
  23. type TagK7[K[_, _, _, _, _, _, _]] = HKTag[AnyRef { type Arg[A0, A1, A2, A3, A4, A5, A6] = K[A0,A1,A2,A3,A4,A5,A6] }]

    Permalink
  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] }]

    Permalink
  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] }]

    Permalink
  26. type TagKK[K[_, _]] = HKTag[AnyRef { type Arg[A, B] = K[A,B] }]

    Permalink
  27. class TagLambdaMacro extends TagMacro

    Permalink
    Annotations
    @nowarn()
  28. class TagMacro extends AnyRef

    Permalink
    Annotations
    @nowarn()
  29. type TagT[K[_[_]]] = HKTag[AnyRef { type Arg[A[_]] = K[A] }]

    Permalink
  30. type TagTK[K[_[_], _]] = HKTag[AnyRef { type Arg[A[_], B] = K[A,B] }]

    Permalink
  31. type TagTK3[K[_[_], _, _, _]] = HKTag[AnyRef { type Arg[A[_], B, C, D] = K[A,B,C,D] }]

    Permalink
  32. type TagTKK[K[_[_], _, _]] = HKTag[AnyRef { type Arg[A[_], B, C] = K[A,B,C] }]

    Permalink
  33. trait WeakTag[T] extends AnyTag

    Permalink
  34. trait WeakTagInstances1 extends AnyRef

    Permalink

Value Members

  1. object DebugProperties

    Permalink

    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

    Permalink
  3. object HKTagMaterializer

    Permalink
  4. object Tag

    Permalink
  5. object TagK

    Permalink
  6. object TagK3

    Permalink
  7. object TagKK

    Permalink
  8. object TagT

    Permalink
  9. object TagTK

    Permalink
  10. object TagTK3

    Permalink
  11. object TagTKK

    Permalink
  12. object WeakTag extends WeakTagInstances1

    Permalink
  13. package macrortti

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped