Closed neko-kai closed 4 years ago
Addendum: Replace parameters in type projections: def x[A <: X: Tag] => A#Component
, including when prefix is a singleton: x[a.type] => a.Component // if
ais a static object, not a free term
Having TagKK[F[A, B]]
should provide us TagK[F[Something, ?]]
HKTag
resolving is fixed. The other enhancements are split into new issues:
https://github.com/7mind/izumi/issues/771 https://github.com/7mind/izumi/issues/772 https://github.com/7mind/izumi/issues/773
replace parameters in HKT:done[T: Tag] => Either[T, ?]
this means adding a macro case to HKTag and appropriate logic in TagMacro [i.e. extracting the real param from{ type Arg }
.{ def x: T ; type Y = G }
. Keep generating weak type tags for structural part, in runtime, mutate the symbols insideMemberScope
of a weak tag holding the structural with.setInfo
– set their types to resolved parameters fromTag
_ >: G <: T
. ( & existentials? steal code from shapeless)TagKUBound
work. In macro, replacekindOf
andKind
type with a more sophisticated check, also preserving type bounds so that we can summon the appropriate instance together with type bounds insummonTag
related #369 #350