From ba70e9d604d06058f469b2c53d5aacc65ea40df6 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 24 Sep 2011 21:18:24 -0400 Subject: [PATCH] fix time at which task session state gets cleared --- main/Main.scala | 2 +- main/Project.scala | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/main/Main.scala b/main/Main.scala index 45adf7bdf..a291092d4 100644 --- a/main/Main.scala +++ b/main/Main.scala @@ -443,7 +443,7 @@ object BuiltinCommands def loadProject = Command(LoadProject, LoadProjectBrief, LoadProjectDetailed)(_ => matched(Project.loadActionParser)) { (s,arg) => loadProjectCommands(arg) ::: s } def loadProjectImpl = Command(LoadProjectImpl)(_ => Project.loadActionParser) { (s0, action) => - val (s, base) = Project.loadAction(s0, action) + 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) diff --git a/main/Project.scala b/main/Project.scala index 0e6a695ea..c83826097 100644 --- a/main/Project.scala +++ b/main/Project.scala @@ -164,7 +164,7 @@ object Project extends Init[Scope] with ProjectExtra { val unloaded = runUnloadHooks(s) val (onLoad, onUnload) = getHooks(structure.data) - val newAttrs = unloaded.attributes.put(stateBuildStructure, structure).put(sessionSettings, session).put(Keys.onUnload.key, onUnload).put(sessionVars, SessionVar.emptyMap) + val newAttrs = unloaded.attributes.put(stateBuildStructure, structure).put(sessionSettings, session).put(Keys.onUnload.key, onUnload) val newState = unloaded.copy(attributes = newAttrs) onLoad(updateCurrent( newState )) } @@ -379,6 +379,8 @@ object SessionVar Operations.write(s.binary(DefaultDataID), value)(f) ) + def clear(s: State): State = s.put(sessionVars, SessionVar.emptyMap) + def get[T](key: ScopedKey[Task[T]], state: State): Option[T] = orEmpty(state get sessionVars) get key def set[T](key: ScopedKey[Task[T]], state: State, value: T): State = state.update(sessionVars)(om => orEmpty(om) put (key, value))