我有一个scala.js项目。在那里我对Scala.Meta和Binding.scala有一种奇怪的行为。
我想从案例类创建一个案例类:
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])
)它可以工作。
在这里您可以找到整个项目:scala-adapters-form
答案 0 :(得分:1)
不推荐使用宏注释(请参阅https://github.com/scalameta/scalameta/issues/1182)
您可以创建基于Scala Meta的sbt插件。请参阅https://github.com/ThoughtWorksInc/sbt-example/作为实现此类插件的示例。
为避免版本不兼容,您应该使用sbt内置的Scala Meta,版本为1.7.0。