Scala 宏类型参数自省 Case Class

Scala Macro Type Args Introspection on Case Class

我有一个库可以在编译时为案例 类 生成映射,它工作得很好,除非我传入一个泛型类型,例如:Foo[Bar](请参阅 https://github.com/outr/fabric/blob/master/core/shared/src/main/scala-2/fabric/rw/RWMacros.scala#L32).当我用 caseClass[Foo[Baz]] 调用宏时,typeSignature 表示 Bar,而不是 Baz。我可以在 tpe 中看到在编译时它是 Foo[Baz],但我不知道如何从 Bar 泛型映射到 BaztypeArgs 列表中。

感谢@zygfryd Gitter.im!他将我指向 asSeenFrom,我能够使用 val returnType = tpe.decl(name).typeSignature.asSeenFrom(tpe, tpe.typeSymbol.asClass) 更新代码,现在它正确解析为通用类型。