From 65f7b493bec11b097821f8d5ce411d1e3cf3bc5d Mon Sep 17 00:00:00 2001 From: Fedor Isakov Date: Sun, 24 Nov 2019 13:34:07 +0100 Subject: [PATCH] Revert "Add ReactivateBlock in Rete Matcher to correctly handle reactivation. Fixes MPSCR-17" This reverts commit f96155496f651cd9d4612a0cb3e29f3bd8cb4655. I need to revert this commit to avoid merging problems. Going to reapply it later if necessary. --- .../core/internal/ReteRuleMatcherImpl.kt | 28 ++----------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ReteRuleMatcherImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ReteRuleMatcherImpl.kt index 05c192fe..d2f3a28e 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ReteRuleMatcherImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ReteRuleMatcherImpl.kt @@ -291,24 +291,6 @@ internal class ReteRuleMatcherImpl(private var ruleLookup: RuleLookup, occurrence !== occ && from.containsOccurrence(occ) // reference neq! } - inner class ReactivateBlock (occurrence: Occurrence, val from: Layer) : DelayedBlock(occurrence) { - - override fun proto(): Layer? = null - - override fun complete(droppedFootprint: Footprint?, sink: (ReteNode) -> Unit) { - if (droppedFootprint?.contains(occurrence.identity) ?: false) return - - for (n in from.allNodes(droppedFootprint)) { - if (n.containsOccurrence(occurrence)) { - sink(n) - } - } - } - - override fun containsOccurrence(occ: Occurrence): Boolean = - occurrence === occ || from.containsOccurrence(occ) // reference eq! - } - /** * Collection of [Layer] instances. * The new layers are prepended to the [layers] list. @@ -333,18 +315,14 @@ internal class ReteRuleMatcherImpl(private var ruleLookup: RuleLookup, var lastLayer: Layer? = null for (currLayer in layers) { - // `!reactivated` is to avoid adding new IntroBlock for InitialNode-s on reactivated - if (!currLayer.final && !reactivated) { + if (!currLayer.final) { newLayers.add(Layer( currLayer.vacancies - 1, IntroBlock(occurrence, headPosMask, currLayer), lastLayer)) - } else if (currLayer.final && reactivated) { - newLayers.add(Layer( - currLayer.vacancies, // == 0 - ReactivateBlock(occurrence, currLayer), - lastLayer)) + } else if (reactivated) { + newLayers.add(currLayer) } lastLayer = currLayer