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 71754beb79..1bc60d5631 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 @@ -71,10 +71,15 @@ trait ContextUtil[C <: Quotes & scala.Singleton](val qctx: C, val valStart: Int) override def toString: String = s"Input($tpe, $qual, $term, $name)" - def isCacheInput: Boolean = - Option(qual.tpe.termSymbol) match - case Some(x) => !x.hasAnnotation(cacheOptOutSym) - case None => !qual.symbol.hasAnnotation(cacheOptOutSym) + def isCacheInput: Boolean = isCacheInput(qual) + private def isCacheInput(tree: Term): Boolean = + tree match + case Inlined(_, _, tree) => isCacheInput(tree) + case Apply(_, List(arg)) => isCacheInput(arg) + case _ => + Option(tree.tpe.termSymbol) match + case Some(x) => !x.hasAnnotation(cacheOptOutSym) + case None => !tree.symbol.hasAnnotation(cacheOptOutSym) /** * Represents an output expression via Def.declareOutput diff --git a/util-cache-resolver/src/main/scala/sbt/util/ActionCache.scala b/util-cache-resolver/src/main/scala/sbt/util/ActionCache.scala index 26e4f12443..ee378d88f6 100644 --- a/util-cache-resolver/src/main/scala/sbt/util/ActionCache.scala +++ b/util-cache-resolver/src/main/scala/sbt/util/ActionCache.scala @@ -1,7 +1,7 @@ package sbt.util import scala.reflect.ClassTag -import scala.annotation.StaticAnnotation +import scala.annotation.{ meta, StaticAnnotation } import sjsonnew.{ HashWriter, JsonFormat } import sjsonnew.support.murmurhash.Hasher import xsbti.VirtualFile @@ -33,4 +33,5 @@ class CacheConfiguration( val outputDirectory: Path, ) -class cacheOptOut() extends StaticAnnotation +@meta.getter +class cacheOptOut(reason: String = "") extends StaticAnnotation