diff --git a/main-actions/src/main/scala/sbt/compiler/Eval.scala b/main-actions/src/main/scala/sbt/compiler/Eval.scala index f1d408af0..461a8c727 100644 --- a/main-actions/src/main/scala/sbt/compiler/Eval.scala +++ b/main-actions/src/main/scala/sbt/compiler/Eval.scala @@ -161,8 +161,8 @@ final class Eval( case None => "" } } - val i = evalCommon(definitions.map(_._1), imports, Some(""), ev) - new EvalDefinitions(i.loader, i.generated, i.enclosingModule, i.extra) + val i: EvalIntermediate[Seq[String]] = evalCommon(definitions.map(_._1), imports, Some(""), ev) + new EvalDefinitions(i.loader, i.generated, i.enclosingModule, i.extra.reverse) } private[this] def evalCommon[T]( diff --git a/sbt/src/sbt-test/project/val-order/build.sbt b/sbt/src/sbt-test/project/val-order/build.sbt new file mode 100644 index 000000000..d34d36cdc --- /dev/null +++ b/sbt/src/sbt-test/project/val-order/build.sbt @@ -0,0 +1,36 @@ +ThisBuild / scalaVersion := "2.13.1" +ThisBuild / version := "0.1.0-SNAPSHOT" + +lazy val check = taskKey[Unit]("") +lazy val intTask = taskKey[Int]("int task") + +lazy val root = (project in file(".")) + .settings( + name := "val-ordering-test", + ThisBuild / organization := "root", + check := { + val o = (ThisBuild / organization).value + assert(o == "root.api.database.web", s"$o") + val x = (api / intTask).value + assert(x == 1, x.toString) + + }, + ) + +lazy val api = project + .settings( + intTask := 0, + ThisBuild / organization := (ThisBuild / organization).value + ".api", + ) + +lazy val database = project + .settings( + ThisBuild / organization := (ThisBuild / organization).value + ".database", + ) + +lazy val web = project + .dependsOn(api, database) + .settings( + api / intTask := 1, + ThisBuild / organization := (ThisBuild / organization).value + ".web", + ) diff --git a/sbt/src/sbt-test/project/val-order/test b/sbt/src/sbt-test/project/val-order/test new file mode 100644 index 000000000..15675b169 --- /dev/null +++ b/sbt/src/sbt-test/project/val-order/test @@ -0,0 +1 @@ +> check