宏支持IntelliJ的想法

时间:2017-02-21 05:39:22

标签: scala macros

我正在阅读关于scala宏代码生成的本教程

http://www.michaelpollmeier.com/2016/12/01/scalameta-code-generation-tutorial

基于此,我编写了我的宏类

class Foo extends StaticAnnotation {
  inline def apply(defn: Any) : Any = meta {
     val q"..$mods class $tName (..$params) extends $template" = defn
     q"""
     ..$mods class $tName(..$params) {
     def sayMyName() : String = "Hello"
     }
     """
  }
}

现在我使用新属性

修饰了我的类
package com.abhi
object Models {
  @Foo case class Bar(...)
  @Foo case class Baz(...)
}

如果我写下以下两行

val x = Bar("test")
println(x.sayMyName())

然后使用sbt sbt macros/compile root/compilesbt run进行编译,代码运行正常,我看到Hello已打印出来。

然而,相同的代码不会在intelliJ idea中编译。 (终极2016.3.3)

0 个答案:

没有答案