Вызов функции с неявным параметром из квазицитата

По какой-то причине каждый раз, когда я пытаюсь вызвать функцию с неявным параметром из квазицитат, происходит сбой с Can't unquote x.universe.Tree, consider providing an implicit instance of Liftable[x.universe.Tree]

Что в этом плохого? Разве мне не разрешено это делать? Я не мог найти где-нибудь, где это говорит, что я не могу сделать это

import scala.language.experimental.macros
import scala.reflect.macros.whitebox

object Foo {
  def foo: Unit = macro fooImpl

  def fooImpl(c: whitebox.Context): c.Expr[Unit] = {
    import c.universe._
    implicit val x = c      

    val res = q"$sysoutFQN"
    c.Expr(res)
  }

  def sysoutFQN(implicit c: whitebox.Context): c.universe.Tree = {
    import c.universe._
    q"java.lang.System.out.println()"
  }
}

1 ответ

Решение

Потому что путь зависит так c.universe.Tree != x.universe.Tree

так что вам нужно написать тип х

implicit val x: c.type = c
Другие вопросы по тегам