Похоже, что ключевое слово implicit
не работает при применении к макросу def
s.
Например, возьмите следующий код:
// Compilation unit A:
case class Foo[A]
// end A.
// Compilation unit B:
implicit def implicitFoo[A]: Foo[A] = macro implicitFoo_impl[A]
def implicitFoo_impl[A](c: Context): c.Expr[Foo[A]] =
c.universe.reify(Foo[A])
// end B.
// Compilation unit C:
implicitly[Foo[Int]] // Fails with "could not find implicit value for parameter e: Foo[Int]
// end C.
implicitly[Foo[Int]]
терпит неудачу, но не должен; если я заменю implicit def implicitFoo[A]: Foo[A] = macro implicitFoo_impl[A]
на implicit def implicitFoo[A]: Foo[A] = ???
, компиляция завершится успешно.
Это баг или ошибка пользователя?