Неявные макросы не найдены в Scala 2.10.1?

Похоже, что ключевое слово implicit не работает при применении к макросу defs.

Например, возьмите следующий код:

// 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] = ???, компиляция завершится успешно.

Это баг или ошибка пользователя?


person emchristiansen    schedule 07.04.2013    source источник


Ответы (1)


Это вызвано https://issues.scala-lang.org/browse/SI-5923, который исправлен в основной версии (2.11.0-SNAPSHOT) и который я планирую перенести в версию 2.10.2. См. дополнительную информацию (включая потенциальные проблемы, которые могут помешать мне сделать это вовремя для версии 2.10.2) на вышеупомянутой странице JIRA.

person Eugene Burmako    schedule 08.04.2013