Создайте класс case с Binding.scala Vars, используя Scala.meta, выдает исключение
У меня есть проект scala.js. Там у меня странное поведение со Scala.Meta и Binding.scala.
Я хочу создать класс case из класса case:
case class SimpleCaseClass(i: Int, s: String, list: Seq[String])
должен генерировать для:
SimpleCaseClassFormData(Var[Int], Var[String], Vars[String])
как только у меня Vars
Я получаю следующую ошибку:
A method defined in a JavaScript raw type of a Scala.js library has been called. This is most likely because you tried to run Scala.js binaries on the JVM. Make sure you are using the JVM version of the libraries.
java.lang.Error: A method defined in a JavaScript raw type of a Scala.js library has been called. This is most likely because you tried to run Scala.js binaries on the JVM. Make sure you are using the JVM version of the libraries.
at scala.scalajs.js.package$.native(package.scala:134)
at scala.scalajs.js.Array.push(Array.scala:106)
at scala.scalajs.js.JSConverters$JSRichGenTraversableOnce$.$anonfun$toJSArray$1(JSConverters.scala:60)
Без (например SimpleCaseClassFormData(Var[Int], Var[String])
) оно работает.
Здесь вы найдете весь проект: https://github.com/pme123/scala-adapters-form
1 ответ
Решение
Макроаннотация устарела (см. https://github.com/scalameta/scalameta/issues/1182)
Вместо этого вы можете создать плагин sbt, основанный на Scala Meta. См. https://github.com/ThoughtWorksInc/sbt-example/ в качестве примера для реализации такого плагина.
Чтобы избежать несовместимых версий, вы должны использовать встроенную в Scala Meta версию sbt, которая является версией 1.7.0.