我正在阅读关于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/compile
和sbt run
进行编译,代码运行正常,我看到Hello已打印出来。
然而,相同的代码不会在intelliJ idea中编译。 (终极2016.3.3)