使用scala宏生成import语句

时间:2017-05-20 15:09:40

标签: scala scala-macros scala-macro-paradise

我有以下代码:

@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编译错误。现在我想知道是否有可能以某种方式修复此错误没有必须在文件顶部定义import语句。

我正在使用Scala 2.10宏天堂插件

0 个答案:

没有答案