diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt index 4a56c17e..e266f64f 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt @@ -65,11 +65,9 @@ class Occurrence (observable: LogicalStateObservable, override fun parentUpdated(logical: Logical<*>, controller: Controller) = doReactivate(controller) fun terminate(observable: LogicalStateObservable) { - if (alive) { - for (a in arguments) { - if (a is Logical<*>) { - observable.removeForwardingObserver(a, this) - } + for (a in arguments) { + if (a is Logical<*>) { + observable.removeForwardingObserver(a, this) } } alive = false diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt index 5730fad5..54ea9e40 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt @@ -211,10 +211,10 @@ internal class EvaluationSessionImpl private constructor ( val outputOccurrences = histView.filterOccurrences(inputStore) // todo: make output store in other processing strategies? + outputOccurrences.forEach{ it.terminate(logicalState) } processing.resetStore() // clear observers // todo: need clearing occurrenceContractObservers? (MPSCR-66) logicalState.reset() - outputOccurrences.forEach{ it.terminate(logicalState) } val rules = ruleIndex.toRules().filter(preambleInfo::inPreamble)