Макро-аннотации Scala не расширяются (макро-рай) - PullRequest
2 голосов
/ 01 апреля 2019

Я пытаюсь включить макроаннотации в свой проект. Следуя документации , я попытался реализовать их пример.

Мне известно, что макромодуль должен быть скомпилирован перед модулем ядра (ядро - это модуль, содержащий код, который использует аннотации макросов). Для этого я создал следующий build.sbt (версия 1.2.8):

name := "test"

lazy val commonSettings = Seq(
  version := "0.1",
  scalaVersion := "2.12.8"
)

lazy val macros = (project in file("macros")).settings(
  commonSettings,
  libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value
)

lazy val core = (project in file("core")).settings(
  commonSettings
) dependsOn macros

Структура моего проекта следующая:

+-- .idea
+-- core
|   +-- src
|   |   +-- java
|   |   +-- scala
|   |   |   +-- Test.scala
+-- macros
|   +-- src
|   |   +-- java
|   |   +-- scala
|   |   |   +-- identity.scala
...

Однако, когда я использую аннотацию @identity в классе Test, я все равно получаю сообщение о том, что аннотация макроса не расширена (из-за @compileTimeOnly("enable macro paradise to expand macro annotations")). Есть идеи, почему?

1 Ответ

0 голосов
/ 01 апреля 2019

Добавить

addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.1" cross CrossVersion.full)

до commonSettings.

...