Skip to content

Commit 38f114f

Browse files
committed
Don't forget to execute pending interrupt requests when shutting down the presentation compiler.(cherry picked from commit 0d70c22)
1 parent 6891caa commit 38f114f

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

src/compiler/scala/tools/nsc/interactive/Global.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,10 @@ class Global(settings: Settings, reporter: Reporter, projectName: String = "")
352352
case item: WorkItem => Some(item.raiseMissing())
353353
case _ => Some(())
354354
}
355+
356+
// don't forget to service interrupt requests
357+
val iqs = scheduler.dequeueAllInterrupts(_.execute())
358+
355359
debugLog("ShutdownReq: cleaning work queue (%d items)".format(units.size))
356360
debugLog("Cleanup up responses (%d loadedType pending, %d parsedEntered pending)"
357361
.format(waitLoadedTypeResponses.size, getParsedEnteredResponses.size))

src/compiler/scala/tools/nsc/util/WorkScheduler.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ class WorkScheduler {
3030
todo.dequeueAll(a => f(a).isDefined).map(a => f(a).get)
3131
}
3232

33+
def dequeueAllInterrupts(f: InterruptReq => Unit): Unit = synchronized {
34+
interruptReqs.dequeueAll { iq => f(iq); true }
35+
}
36+
3337
/** Called from server: return optional exception posted by client
3438
* Reset to no exception.
3539
*/

0 commit comments

Comments
 (0)