我有以下代码:
@mymacro @imports
val _1 = { import scala.collection.mutable.ListBuffer }
@mymacro
val _2 = { val yy: ListBuffer[Int] = ListBuffer.empty }
@mymacro
是一个 scala 宏,用于检查它是否已被@imports
注解。部分实现如下:
case (cc@q"${mods: Modifiers} val $tname: ${tpt: Tree} = ${expr: Tree}") :: Nil =>
if (tname.toString().startsWith("_"))
if (checkImports(mods, expr)) {
q"import scala.collection.mutable.ListBuffer"
}
else
q"{$expr}"
目前宏能够将整个val _1 = ...
语句转换为import scala.collection.mutable.ListBuffer
(没有 {} 括号!)但是当编译继续时,我不断收到not found: type ListBuffer
编译错误。现在我想知道是否有可能以某种方式修复此错误,而不必在文件顶部定义导入语句。
我正在使用 Scala 2.10 宏天堂插件