diff --git a/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala b/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala index 4bec6e63d..c29b0f6ec 100644 --- a/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala +++ b/core-macros/src/main/scala/sbt/internal/util/appmacro/ContextUtil.scala @@ -312,6 +312,17 @@ final class ContextUtil[C <: blackbox.Context](val ctx: C) { case Converted.Failure(p, m) => ctx.abort(p, m) case _: Converted.NotApplicable[_] => super.transform(tree) } + // try to workaround https://github.com/scala/bug/issues/12112 by removing raw Ident(_) in blocks + case Block(stats0, expr0) => + val stats = stats0 flatMap { stat0 => + val stat = super.transform(stat0) + stat match { + case Typed(ident @ Ident(_), _) if ident.symbol.isSynthetic => None + case _ => Some(stat) + } + } + val expr = super.transform(expr0) + Block(stats, expr).setType(expr.tpe) case _ => super.transform(tree) } } diff --git a/sbt/src/sbt-test/project/setting-macro/project/PureExpressionPlugin.scala b/sbt/src/sbt-test/project/setting-macro/project/PureExpressionPlugin.scala new file mode 100644 index 000000000..f0eea984b --- /dev/null +++ b/sbt/src/sbt-test/project/setting-macro/project/PureExpressionPlugin.scala @@ -0,0 +1,15 @@ +package pkgtest + +import sbt._, Keys._ + +// https://github.com/scala/bug/issues/12112 +object PureExpressionPlugin extends AutoPlugin { + lazy val testPureExpression = taskKey[Unit]("") + override def projectSettings: Seq[Setting[_]] = { + testPureExpression := { + updateFull.value + (Compile / compile).value + (Test / test).value + } + } +} diff --git a/sbt/src/sbt-test/project/setting-macro/project/plugins.sbt b/sbt/src/sbt-test/project/setting-macro/project/plugins.sbt new file mode 100644 index 000000000..9674e9d5f --- /dev/null +++ b/sbt/src/sbt-test/project/setting-macro/project/plugins.sbt @@ -0,0 +1 @@ +Compile / scalacOptions += "-Xfatal-warnings"