scala quasiquotes将Tree转换为AppliedType

时间:2014-05-05 04:39:55

标签: scala scala-macros scala-quasiquotes scala-macro-paradise

我想推断出AppliedType的隐含价值,这就是我所做的

val valueType = accessorTree.returnType
val encoderType = tq"DatumEncoder[$valueType]" // returns a Tree
val encoder = c.inferImplicitValue(encoderType) // require a Type

tq会返回Tree

  

如何将其转换为类型

1 个答案:

答案 0 :(得分:3)

link包含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)