diff --git a/compile/interface/src/main/scala/xsbt/Dependency.scala b/compile/interface/src/main/scala/xsbt/Dependency.scala index b8a55c8a9..77dd9355f 100644 --- a/compile/interface/src/main/scala/xsbt/Dependency.scala +++ b/compile/interface/src/main/scala/xsbt/Dependency.scala @@ -146,7 +146,12 @@ final class Dependency(val global: CallbackGlobal) extends LocateClassFile deps.foreach(addDependency) case Template(parents, self, body) => traverseTrees(body) - case MacroExpansionOf(original) => + /* + * Some macros appear to contain themselves as original tree + * In this case, we don't need to inspect the original tree because + * we already inspected its expansion, which is equal. + */ + case MacroExpansionOf(original) if original != tree => this.traverse(original) case other => () } diff --git a/compile/interface/src/main/scala/xsbt/ExtractUsedNames.scala b/compile/interface/src/main/scala/xsbt/ExtractUsedNames.scala index 6ab01c9eb..1bcaf125f 100644 --- a/compile/interface/src/main/scala/xsbt/ExtractUsedNames.scala +++ b/compile/interface/src/main/scala/xsbt/ExtractUsedNames.scala @@ -55,7 +55,13 @@ class ExtractUsedNames[GlobalType <: CallbackGlobal](val global: GlobalType) ext } def handleTreeNode(node: Tree): Unit = { - def handleMacroExpansion(original: Tree): Unit = original.foreach(handleTreeNode) + def handleMacroExpansion(original: Tree): Unit = { + // Some macros seem to have themselves registered as original tree. + // In this case, we only need to handle the children of the original tree, + // because we already handled the expanded tree. + if(original == node) original.children.foreach(handleTreeNode) + else original.foreach(handleTreeNode) + } def handleClassicTreeNode(node: Tree): Unit = node match { case _: DefTree | _: Template => () diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/pending b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/test similarity index 100% rename from sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/pending rename to sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/test diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/pending b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/test similarity index 100% rename from sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/pending rename to sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/test