我想推断 an 的隐含值AppliedType
,这就是我所做的
val valueType = accessorTree.returnType
val encoderType = tq"DatumEncoder[$valueType]" // returns a Tree
val encoder = c.inferImplicitValue(encoderType) // require a Type
但是tq
返回一个Tree
如何将其转换为类型
我想推断 an 的隐含值AppliedType
,这就是我所做的
val valueType = accessorTree.returnType
val encoderType = tq"DatumEncoder[$valueType]" // returns a Tree
val encoder = c.inferImplicitValue(encoderType) // require a Type
但是tq
返回一个Tree
如何将其转换为类型
此链接包含tq
类型插值器的详细响应。
你可以这样做:encoderType.tpe
或者你可以:
import reflect.runtime.currentMirror
import tools.reflect.ToolBox
val toolbox = currentMirror.mkToolBox()
def typecheckType(tree: Tree): Type = toolbox.typecheck(tree, toolbox.TYPEmode).tpe
typecheckType(encoderType)