Что случилось с API макросов в Scala 2.11?

Я пытаюсь перенести макрос из Scala 2.10 в 2.11.0-M7:

import scala.reflect.macros.Context

object Format {
  def apply[A]: Unit = macro applyImpl[A]

  def applyImpl[A: c.WeakTypeTag](c: Context): c.Expr[Unit] = ???
}

Должно быть, что-то изменилось, потому что компилятор говорит, что scala.reflect.macros.Context не существует.

Мой файл сборки выглядит так:

scalaVersion := "2.11.0-M7"

resolvers += Resolver.sonatypeRepo("snapshots")

addCompilerPlugin("org.scala-lang.plugins" % "macro-paradise" % "2.0.0-SNAPSHOT"
  cross CrossVersion.full)

Любые подсказки?


person 0__    schedule 10.12.2013    source источник


Ответы (1)


Теперь нужно явно добавить scala-reflect:

libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value

Context устарел, но компилируется.

person 0__    schedule 10.12.2013
comment
Я думаю, всегда было необходимо явно зависеть от scala-reflect. - person Eugene Burmako; 10.12.2013
comment
@EugeneBurmako - на самом деле нет, моя библиотека компилировала без явное отражение в 2.10; в любом случае ничего страшного, теперь работает :) - person 0__; 10.12.2013