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 7d095843..6d7c6d3d 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt @@ -35,7 +35,7 @@ class Occurrence(val constraint: Constraint, val arguments: List<*>, override val evidence: Evidence, private val justifications: Justifications, - val sourceRule: Rule.Tag? = null): + val source: Rule?): ConstraintOccurrence, Justified, Reactivatable { @@ -51,8 +51,6 @@ class Occurrence(val constraint: Constraint, override fun logicalContext(): LogicalContext = logicalContext - override fun sourceRule(): Rule.Tag? = sourceRule - override fun justifications(): Justifications = justifications override fun reactivate(controller: Controller) = doReactivate(controller) @@ -100,5 +98,5 @@ fun Constraint.occurrence(arguments: List<*>, evidence: Evidence, justifications: Justifications, logicalContext: LogicalContext, - ruleUniqueTag: Rule.Tag? = null): Occurrence = - Occurrence(this, logicalContext, arguments, evidence, justifications, ruleUniqueTag) + rule: Rule? = null): Occurrence = + Occurrence(this, logicalContext, arguments, evidence, justifications, rule) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatchEx.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatchEx.kt index 77c90a8b..7b02818f 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatchEx.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatchEx.kt @@ -32,6 +32,7 @@ interface RuleMatchEx : RuleMatch { /** * Returns an array of matched constraint occurrences wrapped in [Id]. */ + @Deprecated(message = "unused") fun signature(): ArrayList?> fun signatureArray(): IntArray diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ConstraintsProcessing.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ConstraintsProcessing.kt index bee26cd7..7c88bd40 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ConstraintsProcessing.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ConstraintsProcessing.kt @@ -161,7 +161,7 @@ internal class ConstraintsProcessing( fun Constraint.occurrence( arguments: List<*>, logicalContext: LogicalContext, - ruleUniqueTag: Rule.Tag? = null + rule: Rule? ): Occurrence { // By default share justifications (as a small optimization) @@ -170,7 +170,7 @@ internal class ConstraintsProcessing( return Occurrence( this, logicalContext, arguments, evidence, - justifications, ruleUniqueTag + justifications, rule ) } } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt index ff20c2a3..546aa098 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt @@ -104,7 +104,7 @@ internal class ControllerImpl ( .then { processGuard(match, it) } private fun checkMatchPreconditions(match: RuleMatchEx, inStatus: FeedbackStatus) : FeedbackStatus { - val context = Context(inStatus, true, match.logicalContext(), match.rule().uniqueTag(), trace) + val context = Context(inStatus, true, match.logicalContext(), match.rule(), trace) // invoke matched pattern predicates for (prd in match.patternPredicates()) { @@ -116,7 +116,7 @@ internal class ControllerImpl ( } private fun processGuard(match: RuleMatchEx, inStatus: FeedbackStatus) : FeedbackStatus { - val context = Context(inStatus, match.logicalContext(), match.rule().uniqueTag(), trace) + val context = Context(inStatus, match.logicalContext(), match.rule(), trace) // check guard for (gprd in match.rule().guard()) { @@ -127,7 +127,7 @@ internal class ControllerImpl ( } override fun processBody(match: RuleMatchEx, inStatus: FeedbackStatus) : FeedbackStatus { - val context = Context(inStatus, match.logicalContext(), match.rule().uniqueTag(), trace) + val context = Context(inStatus, match.logicalContext(), match.rule(), trace) val altIt = match.rule().bodyAlternation().iterator() while (altIt.hasNext()) { @@ -230,7 +230,7 @@ internal class ControllerImpl ( profiler.profile("activate_${constraint.symbol()}") { with(creator) { - constraint.occurrence(args, context.logicalContext, context.ruleUniqueTag).let { occ -> + constraint.occurrence(args, context.logicalContext, context.rule).let { occ -> trace.activate(occ) processing.processActivated(this@ControllerImpl, occ, status) } @@ -277,7 +277,7 @@ internal class ControllerImpl ( inner private class Context(inStatus: FeedbackStatus, val checking: Boolean, val logicalContext: LogicalContext, - val ruleUniqueTag: Rule.Tag? = null, + val rule: Rule?, val trace: EvaluationTrace = EvaluationTrace.NULL) : InvocationContext { @@ -285,9 +285,9 @@ internal class ControllerImpl ( constructor(inStatus: FeedbackStatus, logicalContext: LogicalContext, - ruleUniqueTag: Rule.Tag? = null, + rule: Rule? = null, trace: EvaluationTrace = EvaluationTrace.NULL) : - this(inStatus, false, logicalContext, ruleUniqueTag, trace) { } + this(inStatus, false, logicalContext, rule, trace) { } fun currentStatus(): FeedbackStatus = status diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java index 4dff8718..1994dd46 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java @@ -36,8 +36,4 @@ public interface ConstraintOccurrence { LogicalContext logicalContext(); - default Rule.Tag sourceRule() { - return null; - } - } diff --git a/reactor/Test/src/program/MockConstraint.kt b/reactor/Test/src/program/MockConstraint.kt index 24fbe0e7..b51f3106 100644 --- a/reactor/Test/src/program/MockConstraint.kt +++ b/reactor/Test/src/program/MockConstraint.kt @@ -8,11 +8,11 @@ import jetbrains.mps.logic.reactor.program.Predicate * @author Fedor Isakov */ -data class MockConstraint(val symbol: ConstraintSymbol, val arguments: List, val principal: Boolean = false) : Constraint { +data class MockConstraint(val symbol: ConstraintSymbol, val arguments: List) : Constraint { constructor(symbol: ConstraintSymbol, vararg args: Any) : this(symbol, listOf(* args)) {} - constructor(symbol: ConstraintSymbol, principal: Boolean, vararg args: Any) : this(symbol, listOf(* args), principal) {} + constructor(symbol: ConstraintSymbol, principal: Boolean, vararg args: Any) : this(symbol, listOf(* args)) {} override fun arguments(): List = arguments @@ -22,8 +22,6 @@ data class MockConstraint(val symbol: ConstraintSymbol, val arguments: List override fun argumentTypes(): List> = arguments.map { arg -> arg.javaClass } - override fun isPrincipal(): Boolean = principal - override fun toString(): String = "${symbol()}(${arguments().joinToString()})" } diff --git a/reactor/Test/test/RulesHelper.kt b/reactor/Test/test/RulesHelper.kt index 8d266ce0..b659ad29 100644 --- a/reactor/Test/test/RulesHelper.kt +++ b/reactor/Test/test/RulesHelper.kt @@ -104,10 +104,6 @@ fun occurrence(id: String, vararg args: Any): Occurrence = MockConstraint(ConstraintSymbol.symbol(id, args.size)) .occurrence(listOf(* args), 0, justsOf(0), noLogicalContext) -fun taggedOccurrence(ruleUniqueTag: String, id: String, vararg args: Any): Occurrence = - MockConstraint(ConstraintSymbol.symbol(id, args.size)) - .occurrence(listOf(* args), 0, justsOf(0), noLogicalContext, Rule.Tag(ruleUniqueTag)) - fun justifiedOccurrence(id: String, evidence: Evidence, justifications: Justifications, principal: Boolean, vararg args: Any): Occurrence = MockConstraint(ConstraintSymbol.symbol(id, args.size), principal) .occurrence(listOf(* args), evidence, justifications, noLogicalContext)