diff --git a/main/src/main/scala/sbt/internal/Load.scala b/main/src/main/scala/sbt/internal/Load.scala index 1bf7e4490..c89185e48 100755 --- a/main/src/main/scala/sbt/internal/Load.scala +++ b/main/src/main/scala/sbt/internal/Load.scala @@ -668,6 +668,7 @@ private[sbt] object Load { do ref match case LocalAggregate => () + case ThisProject => () case _ => val ProjectRef(refURI, refID) = Scope.resolveProjectRef(uri, rootProject, ref) val loadedUnit = builds(refURI) @@ -714,6 +715,7 @@ private[sbt] object Load { val resolve: Project => ResolvedProject = (p: Project) => p.resolve: case LocalAggregate => resolveAutoAggregate(uri, p, ps) + case ThisProject => Vector(ProjectRef(uri, p.id)) case ref => Vector(Scope.resolveProjectRef(uri, rootProject, ref)) LoadedBuildUnit( unit.unit, diff --git a/sbt-app/src/sbt-test/project/thisProject-aggregate/build.sbt b/sbt-app/src/sbt-test/project/thisProject-aggregate/build.sbt new file mode 100644 index 000000000..7240e2882 --- /dev/null +++ b/sbt-app/src/sbt-test/project/thisProject-aggregate/build.sbt @@ -0,0 +1,15 @@ +ThisBuild / scalaVersion := "2.13.16" + +lazy val root = project + .in(file(".")) + .aggregate(ThisProject) + .settings( + name := "root-project" + ) + +lazy val check = taskKey[Unit]("Verify ThisProject in aggregate works") + +root / check := { + val n = (root / name).value + assert(n == "root-project", s"Expected 'root-project' but got '$n'") +} diff --git a/sbt-app/src/sbt-test/project/thisProject-aggregate/test b/sbt-app/src/sbt-test/project/thisProject-aggregate/test new file mode 100644 index 000000000..788d07bc3 --- /dev/null +++ b/sbt-app/src/sbt-test/project/thisProject-aggregate/test @@ -0,0 +1,3 @@ +# Verify that ThisProject in aggregate doesn't cause runtime error +# This tests the fix for https://github.com/sbt/sbt/issues/3616 +> check