Получите ToolBox
, используйте его для проверки типа value
и запросите аннотированное дерево для его типа.
import scala.runtime.reflect.currentMirror
val toolbox = currentMirror.mkToolBox()
val tpe = TypeTree(toolbox.typecheck(value).tpe)
Код, который вы написали, утверждает, что вы делаете это во время выполнения.Вариант использования, который вы указали в своем комментарии, создает впечатление, что вы находитесь в макросе времени компиляции.В этом случае используйте аналогичный метод typecheck
в вашем Context
.В противном случае он не будет проверяться;value
будет Tree
от неправильного Universe
, представляя тот факт, что новый экземпляр компилятора, созданный ToolBox
, работает в контексте текущей программы (которая оказывается компилятором), а отражениеContext
- это весь будущий контекст кода, которым манипулирует содержащийся компилятор.