diff --git a/.gitignore b/.gitignore index ae118ef9..e4c0960f 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,5 @@ project/plugins/project/ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +.vscode \ No newline at end of file diff --git a/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/DbInspector.scala b/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/DbInspector.scala index 8550b1f5..554f3bd2 100644 --- a/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/DbInspector.scala +++ b/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/DbInspector.scala @@ -29,9 +29,9 @@ abstract class DbInspector(protected val shift: Int) extends InspectorBase { val allbases = tpeBases(i).filter(!_._takesTypeArgs) val targetRef = { val tpef = i.dealias.simplified._resultType - inspector.makeNameReferenceFromSymbol(tpef.typeSymbol) + inspector.makeNameReferenceFromType(tpef) } - allbases.map(b => (targetRef, inspector.makeNameReferenceFromSymbol(b.typeSymbol))) + allbases.map(b => (targetRef, inspector.makeNameReferenceFromType(b))) } baseclassReferences diff --git a/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspect.scala b/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspect.scala index 80fe95d5..e23cc27b 100644 --- a/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspect.scala +++ b/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspect.scala @@ -34,6 +34,7 @@ object Inspect { println(s"${SubtypeDBs(res.basesdb, res.idb)} => ${strDbs.size} bytes, ${string2hex(strDbs)}") println(strDbs) } + '{ LightTypeTag.parse(${Expr(hashCodeRef)}, ${Expr(strRef)}, ${Expr(strDbs)}, ${Expr(LightTypeTag.currentBinaryFormatVersion)}) } } } diff --git a/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspector.scala b/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspector.scala index 0a03ad14..494cf919 100644 --- a/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspector.scala +++ b/izumi-reflect/izumi-reflect/src/main/scala_3/izumi/reflect/dottyreflection/Inspector.scala @@ -189,7 +189,7 @@ abstract class Inspector(protected val shift: Int) extends InspectorBase { orTypeTags ++ otherTypeTags } - private def makeNameReferenceFromType(t: TypeRepr): NameReference = { + private[dottyreflection] def makeNameReferenceFromType(t: TypeRepr): NameReference = { t match { case ref: TypeRef => makeNameReferenceFromSymbol(ref.typeSymbol) @@ -197,6 +197,8 @@ abstract class Inspector(protected val shift: Int) extends InspectorBase { makeNameReferenceFromSymbol(term.termSymbol) case t: ParamRef => NameReference(tpeName = t.binder.asInstanceOf[{ def paramNames: List[Object] }].paramNames(t.paramNum).toString) + case ref => + makeNameReferenceFromSymbol(ref.typeSymbol) } } diff --git a/izumi-reflect/izumi-reflect/src/test/scala/izumi/reflect/test/SharedTagTest.scala b/izumi-reflect/izumi-reflect/src/test/scala/izumi/reflect/test/SharedTagTest.scala index ee6fee9d..0bf08374 100644 --- a/izumi-reflect/izumi-reflect/src/test/scala/izumi/reflect/test/SharedTagTest.scala +++ b/izumi-reflect/izumi-reflect/src/test/scala/izumi/reflect/test/SharedTagTest.scala @@ -20,6 +20,9 @@ object ID { type Identity[+A] = A } +trait Clock +object ClockLive extends Clock + trait ZY extends Assertions { type T type U = T @@ -55,7 +58,7 @@ final case class testTag2[T: Tag]() { trait T2[A, B, C[_[_], _], D[_], E] -abstract class SharedTagTest extends AnyWordSpec with XY[String] { +abstract class SharedTagTest extends AnyWordSpec with XY[String] with TagAssertions { type Swap[A, B] = Either[B, A] type SwapF2[F[_, _], A, B] = F[B, A] @@ -198,6 +201,9 @@ abstract class SharedTagTest extends AnyWordSpec with XY[String] { assert(TagTK[Id1].tag != TagK[Id].tag) } + "handle singleton types" in { + assertChild(Tag[ClockLive.type].tag, Tag[Clock].tag) + } } }