diff --git a/main/Load.scala b/main/Load.scala index bc6bbc39f..7f7bc5f69 100644 --- a/main/Load.scala +++ b/main/Load.scala @@ -533,13 +533,18 @@ object Load } } + def initialSession(structure: BuildStructure, rootEval: () => Eval, s: State): SessionSettings = { + val current = s get Keys.sessionSettings map (_.currentProject) + new SessionSettings(structure.root, projectMap(structure.units, current), structure.settings, Map.empty, Nil, rootEval) + } + def initialSession(structure: BuildStructure, rootEval: () => Eval): SessionSettings = - new SessionSettings(structure.root, rootProjectMap(structure.units), structure.settings, Map.empty, Nil, rootEval) + new SessionSettings(structure.root, projectMap(structure.units, None), structure.settings, Map.empty, Nil, rootEval) - def rootProjectMap(units: Map[URI, LoadedBuildUnit]): Map[URI, String] = + def projectMap(units: Map[URI, LoadedBuildUnit], current: Option[Map[URI, String]]): Map[URI, String] = { val getRoot = getRootProject(units) - units.keys.map(uri => (uri, getRoot(uri))).toMap + units.keys.map(uri => (uri, current.flatMap(_ get uri) getOrElse getRoot(uri))).toMap } def defaultEvalOptions: Seq[String] = Nil diff --git a/main/Main.scala b/main/Main.scala index 70d67ce5a..475e5db7c 100644 --- a/main/Main.scala +++ b/main/Main.scala @@ -335,8 +335,8 @@ object BuiltinCommands val (s, base) = Project.loadAction(SessionVar.clear(s0), action) IO.createDirectory(base) val (eval, structure) = Load.defaultLoad(s, base, logger(s)) - val session = Load.initialSession(structure, eval) + val session = Load.initialSession(structure, eval, s0) SessionSettings.checkSession(session, s) Project.setProject(session, structure, s) } -} \ No newline at end of file +} diff --git a/sbt/src/sbt-test/actions/reload/project/TestProject.scala b/sbt/src/sbt-test/actions/reload/project/TestProject.scala new file mode 100755 index 000000000..a3e374fdd --- /dev/null +++ b/sbt/src/sbt-test/actions/reload/project/TestProject.scala @@ -0,0 +1,11 @@ +import sbt._ + +object TestBuild extends Build +{ + lazy val root = Project("root", file("."), aggregate = Seq(sub)) settings( + TaskKey[Unit]("f") := error("f") + ) + lazy val sub = Project("sub", file("sub")) settings( + TaskKey[Unit]("f") := {} + ) +} diff --git a/sbt/src/sbt-test/actions/reload/test b/sbt/src/sbt-test/actions/reload/test new file mode 100755 index 000000000..ff2855d59 --- /dev/null +++ b/sbt/src/sbt-test/actions/reload/test @@ -0,0 +1,5 @@ +-> f +> project sub +> f +> reload +> f \ No newline at end of file