diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournal.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournal.kt index b9cdc1b0..5b97d00d 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournal.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournal.kt @@ -38,7 +38,6 @@ interface MatchJournal : MutableIterable { fun resetPos() fun reset(pastPos: Pos) fun replay(controller: Controller, futurePos: Pos) - fun replayOccurrences(controller: Controller, occSpecs: Iterable) {} fun view(): View fun storeView(): StoreView @@ -164,7 +163,8 @@ internal open class MatchJournalImpl( if (currentPos() != futurePos) throw IllegalStateException() } -// override fun replayOccurrences(occSpecs: Iterable) {} + private fun replayOccurrences(controller: Controller, occSpecs: Iterable) = + occSpecs.forEach { if (it.isDiscarded) it.occ.terminate(controller) else it.occ.revive(controller) } override fun view() = MatchJournal.View(ArrayList(hist), nextChunkId) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt index d798fd24..f491c396 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt @@ -116,10 +116,6 @@ internal class ProcessingStateImpl(private var dispatchingFront: Dispatcher.Disp private data class ExecPos(val pos: MatchJournal.Pos, val activeOcc: Occurrence) - override fun replayOccurrences(controller: Controller, occSpecs: Iterable) = - occSpecs.forEach { if (it.isDiscarded) it.occ.terminate(controller) else it.occ.revive(controller) } - - // only for tests fun pushActivateFirstOccOf(ctr: Constraint): Boolean { val pos = currentPos() diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/StoreAwareJournal.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/StoreAwareJournal.kt index c86beeee..fed77a10 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/StoreAwareJournal.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/StoreAwareJournal.kt @@ -16,7 +16,6 @@ package jetbrains.mps.logic.reactor.core.internal -import jetbrains.mps.logic.reactor.core.Dispatcher import jetbrains.mps.logic.reactor.core.ProcessingState import java.lang.IllegalArgumentException diff --git a/reactor/Test/test/TestIncrementalProgram.kt b/reactor/Test/test/TestIncrementalProgram.kt index e0863ee5..0a7a6dd1 100644 --- a/reactor/Test/test/TestIncrementalProgram.kt +++ b/reactor/Test/test/TestIncrementalProgram.kt @@ -1,9 +1,9 @@ import jetbrains.mps.logic.reactor.core.IncrementalProgramSpec +import jetbrains.mps.logic.reactor.core.Occurrence import jetbrains.mps.logic.reactor.core.ReactorLifecycle import jetbrains.mps.logic.reactor.core.SessionToken import jetbrains.mps.logic.reactor.evaluation.EvaluationResult import jetbrains.mps.logic.reactor.evaluation.EvaluationSession -import jetbrains.mps.logic.reactor.evaluation.StoreView import jetbrains.mps.logic.reactor.program.Constraint import jetbrains.mps.logic.reactor.program.ConstraintSymbol import jetbrains.mps.logic.reactor.program.Rule as CRule @@ -147,10 +147,13 @@ class TestIncrementalProgram { ) ).relaunch("test1", progSpec, evalRes.token()) { result -> result.storeView().constraintSymbols() shouldBe setOf(sym0("foo"), sym0("bar"), sym0("baz")) + result.token().journalView.chunks.last().activated().constraintSymbols() shouldBe listOf(sym0("baz")) } } } + private fun Iterable.constraintSymbols() = this.map { it.constraint.symbol() } + @Test fun addMatchAfterReplaced() { val progSpec = MockIncrProgSpec( @@ -370,6 +373,9 @@ class TestIncrementalProgram { }.also { (builder, evalRes) -> builder.programWithRules( rule("baz.lax", + headReplaced( + princConstraint("foo") + ), headKept( princConstraint("baz") ), @@ -378,7 +384,7 @@ class TestIncrementalProgram { ) ) ).relaunch("test2", progSpec, evalRes.token()) { result -> - result.storeView().constraintSymbols() shouldBe setOf(sym0("bar"), sym0("baz"), sym0("qux")) + result.storeView().constraintSymbols() shouldBe setOf(sym0("bar"), sym0("baz"), sym0("lax")) } } }