scala.meta.Lit.type не принимает параметры

Когда я запускаю следующее:

import scala.meta._

class Test {
  val x = q"1"
}

Я получаю, что scala.meta.Lit.type не принимает параметры val x = q "1"

масштаб_2.11:1.8.0

рай_2.11.8:3.0.0-M7

Я пытаюсь заставить работать некоторые основные примеры макросов, в частности пример «Hello», найденный здесь:

https://www.beyondthelines.net/computing/generating-protobuf-formats-with-scala-meta-macros/

Где я получаю ту же ошибку в строке "val hello ...."

Буду очень признателен за любые мысли/предложения - я очень рад поиграть с макросами!


person user2682459    schedule 23.04.2018    source источник


Ответы (1)


Вы должны обернуть свой код inline и meta, как в вашем примере.

Если вы просто хотите проанализировать, что делает мета, вы можете ввести <code>.parse[Type / Stat]

person dveim    schedule 23.04.2018
comment
Это не работает. Может быть, я недостаточно ясно выразился в вопросе, но это также не работает для примера с веб-сайта. - person user2682459; 23.04.2018
comment
Вы установили плагин компилятора «рай»? - person dveim; 24.04.2018
comment
Я так считаю; есть ли простой способ проверить, что это произошло правильно? - person user2682459; 24.04.2018
comment
У вас должно быть что-то вроде определения sbt (если вы используете sbt) addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full) - person dveim; 24.04.2018
comment
Нет, к сожалению, мне нужно использовать gradle вместо SBT. Я считаю, что рай включен, но я не уверен, как проверить, что все было правильно применено... Есть ли что-нибудь программно, что я могу сделать, чтобы проверить, есть ли рай? - person user2682459; 24.04.2018
comment
Я добавил -Xplugin-require:macroparadise в tasks.withType(ScalaCompile); если я напишу макрорай с ошибкой, то сборка завершится ошибкой с разумной ошибкой, которая предполагает, что в противном случае плагин добавляется - person user2682459; 24.04.2018
comment
К сожалению, я не знаком с Gradle. Этот проект, https://github.com/vergenzt/rtm-scala, использует рай для макросов, поэтому вы можете клонировать его, проверить, работают ли макросы, а затем добавить свои материалы. - person dveim; 25.04.2018