From 31ea3fab65219bd3fd9f9de02569d2cad685b75c Mon Sep 17 00:00:00 2001 From: Fedor Isakov Date: Thu, 13 Jun 2024 21:17:00 +0200 Subject: [PATCH] Minor fixes of inspection results and typos --- .../logic/reactor/core/CompositeFeedback.kt | 30 ++++++++----------- .../mps/logic/reactor/core/Controller.kt | 1 - .../logic/reactor/core/DetailedFeedback.kt | 2 -- .../mps/logic/reactor/core/Dispatcher.kt | 8 ++--- .../logic/reactor/core/EvaluationFailure.kt | 3 -- .../mps/logic/reactor/core/Feedback.kt | 1 - .../mps/logic/reactor/core/Justified.kt | 2 +- .../mps/logic/reactor/core/LogicalObserver.kt | 2 -- .../mps/logic/reactor/core/Occurrence.kt | 4 --- .../logic/reactor/core/OccurrenceMatcher.kt | 2 +- .../mps/logic/reactor/core/RuleIndex.kt | 23 +++++--------- .../mps/logic/reactor/core/RuleMatcher.kt | 6 ++-- .../reactor/core/internal/ControllerImpl.kt | 2 +- .../core/internal/EvaluationSessionImpl.kt | 17 +++-------- .../reactor/core/internal/LogicalImpl.kt | 15 ++++------ .../reactor/core/internal/MatchJournal.kt | 2 -- .../reactor/core/internal/MatchJournalImpl.kt | 12 ++++---- .../internal/PrincipalObserverDispatcher.kt | 4 --- .../core/internal/ReteRuleMatcherImpl.kt | 4 +-- .../reactor/core/internal/RuleMatchImpl.kt | 1 - .../logic/reactor/core/internal/TermWalker.kt | 2 -- .../evaluation/ConstraintOccurrence.java | 3 -- .../reactor/evaluation/DataProvider.java | 2 ++ .../reactor/evaluation/EvaluationResult.java | 14 ++------- .../reactor/evaluation/EvaluationSession.java | 2 -- .../reactor/evaluation/EvaluationTrace.java | 1 - .../reactor/evaluation/SessionToken.java | 1 - .../logic/reactor/logical/MetaLogical.java | 4 +-- .../logic/reactor/logical/MutableLogical.java | 2 +- .../mps/logic/reactor/program/Rule.java | 2 -- .../mps/logic/reactor/program/Symbol.java | 12 +++----- .../mps/logic/reactor/util/ArrayListStack.kt | 3 +- .../mps/logic/reactor/util/BitSet.kt | 4 +-- .../reactor/util/ClassicIndexedTermTrie.kt | 6 ++-- .../mps/logic/reactor/util/DexxCollections.kt | 4 +-- .../mps/logic/reactor/util/Profiler.kt | 2 +- .../mps/unification/Substitution.java | 12 ++++---- .../src/jetbrains/mps/unification/Term.java | 1 - .../mps/unification/TermGraphUnifier.kt | 4 +-- .../mps/unification/TermWrapper.java | 1 - .../jetbrains/mps/unification/Unification.kt | 10 ++----- 41 files changed, 74 insertions(+), 159 deletions(-) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/CompositeFeedback.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/CompositeFeedback.kt index 537157c4..9fa56ba1 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/CompositeFeedback.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/CompositeFeedback.kt @@ -16,22 +16,16 @@ package jetbrains.mps.logic.reactor.core -import jetbrains.mps.logic.reactor.evaluation.EvaluationFeedback import jetbrains.mps.logic.reactor.evaluation.RuleMatch import jetbrains.mps.logic.reactor.evaluation.Supervisor import java.util.ArrayList -import java.util.Arrays /** * @author Fedor Isakov */ class CompositeFeedback private constructor(private val elements: List) : Feedback() { - private val severity: EvaluationFeedback.Severity - - init { - this.severity = maxSeverity(elements) - } + private val severity: Severity = maxSeverity(elements) override fun handle(currentRuleMatch: RuleMatch, feedbackKey: Any, feedbackBasis: List, supervisor: Supervisor): Boolean { var unhandled = 0 @@ -55,7 +49,7 @@ class CompositeFeedback private constructor(private val elements: List } } - override fun getSeverity(): EvaluationFeedback.Severity { + override fun getSeverity(): Severity { return severity } @@ -109,23 +103,23 @@ class CompositeFeedback private constructor(private val elements: List left ?: right } else (left as? CompositeFeedback)?.composeRight(right) - ?: ((right as? CompositeFeedback)?.composeLeft(left) ?: CompositeFeedback(Arrays.asList(left, right))) + ?: ((right as? CompositeFeedback)?.composeLeft(left) ?: CompositeFeedback(listOf(left, right))) } - fun dropLast(mayberComposite: Feedback?): Feedback? = - if (mayberComposite == null || mayberComposite !is CompositeFeedback) { + fun dropLast(maybeComposite: Feedback?): Feedback? = + if (maybeComposite == null || maybeComposite !is CompositeFeedback) { null - } else if (mayberComposite.elements.size > 2) { - CompositeFeedback(mayberComposite.elements.dropLast(1)) - } else if (mayberComposite.elements.size == 2) { - mayberComposite.elements[0] + } else if (maybeComposite.elements.size > 2) { + CompositeFeedback(maybeComposite.elements.dropLast(1)) + } else if (maybeComposite.elements.size == 2) { + maybeComposite.elements[0] } else throw NoSuchElementException() - private fun maxSeverity(efs: List): EvaluationFeedback.Severity { - var sev: EvaluationFeedback.Severity = EvaluationFeedback.Severity.DEBUG + private fun maxSeverity(efs: List): Severity { + var sev: Severity = Severity.DEBUG for (ef in efs) { - if (ef.severity.compareTo(sev) > 0) { + if (ef.severity > sev) { sev = ef.severity } } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Controller.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Controller.kt index d3e610e3..46fa8da3 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Controller.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Controller.kt @@ -16,7 +16,6 @@ package jetbrains.mps.logic.reactor.core -import jetbrains.mps.logic.reactor.core.internal.ConstraintsProcessing import jetbrains.mps.logic.reactor.core.internal.FeedbackStatus import jetbrains.mps.logic.reactor.core.internal.MatchJournal import jetbrains.mps.logic.reactor.evaluation.PredicateInvocation diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/DetailedFeedback.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/DetailedFeedback.kt index cd2ba91c..975954c7 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/DetailedFeedback.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/DetailedFeedback.kt @@ -16,8 +16,6 @@ package jetbrains.mps.logic.reactor.core -import jetbrains.mps.logic.reactor.evaluation.EvaluationFeedback - /** * Encapsulates a detailed report to be provided by the code being evaluated. * Does not affect the evaluation flow. diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Dispatcher.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Dispatcher.kt index df95508b..a0f64f93 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Dispatcher.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Dispatcher.kt @@ -23,14 +23,12 @@ typealias DispatchingFrontState = Map internal fun emptyFrontState(): DispatchingFrontState = emptyMap() -internal fun DispatchingFrontState.resetLookup() = apply { values.forEach(RuleMatcher::resetRuleLookup) } - /** * A front-end interface to [RuleMatcher]. * * @author Fedor Isakov */ -class Dispatcher (val ruleIndex: RuleIndex, prevState: DispatchingFrontState = emptyFrontState()) { +class Dispatcher (val ruleIndex: RuleIndex) { private val ruletag2matcher = HashMap() @@ -105,9 +103,7 @@ class Dispatcher (val ruleIndex: RuleIndex, prevState: DispatchingFrontState = e * be excluded from any further "match" set returned by [matches]. */ internal fun consume(consumedMatch: RuleMatchEx): DispatchingFront { - ruletag2probe[consumedMatch.rule().uniqueTag()]?.let { - val probe = it.consume(consumedMatch) - } + ruletag2probe[consumedMatch.rule().uniqueTag()]?.consume(consumedMatch) return DispatchingFront(this) } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/EvaluationFailure.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/EvaluationFailure.kt index 641710bf..803cecdc 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/EvaluationFailure.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/EvaluationFailure.kt @@ -17,11 +17,8 @@ package jetbrains.mps.logic.reactor.core import jetbrains.mps.logic.reactor.evaluation.EvaluationFailureException -import jetbrains.mps.logic.reactor.evaluation.EvaluationFeedback import jetbrains.mps.logic.reactor.evaluation.Solver -import java.util.ArrayList - /** * * Possible kinds of failure: diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Feedback.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Feedback.kt index 1c8ae69c..ac6287ec 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Feedback.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Feedback.kt @@ -56,6 +56,5 @@ abstract class Feedback : EvaluationFeedback() { } typealias FeedbackKeySet = Set -typealias MutableFeedbackKeySet = MutableSet internal val RuleMatch.feedbackKey: Any get() = System.identityHashCode(this) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Justified.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Justified.kt index 4747ed51..6f7f2a63 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Justified.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Justified.kt @@ -39,7 +39,7 @@ fun justsCopy(other: Justifications): Justifications = TIntHashSet(other) /** * A logical entity whose existence is supported by some * facts (or premises, or evidences, or justifications). - * Hence it is said that its existence is justified by them. + * Hence, it is said that its existence is justified by them. * In its turn can serve as an evidence for other justified entities. */ interface Justified { diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/LogicalObserver.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/LogicalObserver.kt index ae7f67ff..520e60ea 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/LogicalObserver.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/LogicalObserver.kt @@ -16,8 +16,6 @@ package jetbrains.mps.logic.reactor.core -import jetbrains.mps.logic.reactor.core.internal.LogicalImpl -import jetbrains.mps.logic.reactor.core.internal.LogicalState import jetbrains.mps.logic.reactor.logical.Logical 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 e266f64f..ee22e976 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Occurrence.kt @@ -46,10 +46,6 @@ class Occurrence (observable: LogicalStateObservable, val identity = System.identityHashCode(this) - init { -// revive(observable) - } - override fun constraint(): Constraint = constraint override fun arguments(): List<*> = arguments diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/OccurrenceMatcher.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/OccurrenceMatcher.kt index b5d60fae..2927db4e 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/OccurrenceMatcher.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/OccurrenceMatcher.kt @@ -24,7 +24,7 @@ import jetbrains.mps.logic.reactor.util.PersMap /** * Abstracts an algorithm for recursive matching of a [Constraint] and a [ConstraintOccurrence] - * or a pattern [Term] against a [Term] in a constraint occurrence's arguments. + * or a pattern [jetbrains.mps.unification.Term] against a [jetbrains.mps.unification.Term] in a constraint occurrence's arguments. * * @author Fedor Isakov */ diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt index a09a432f..2e03a993 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt @@ -38,16 +38,7 @@ fun ruleBitsOf() = indexMaskOf() */ class RuleIndex(): Iterable, RuleLookup { - private class IndexedRule { - - constructor(idx: Int, rule: Rule) { - this.idx = idx - this.rule = rule - } - - var idx: Int - val rule: Rule - } + private class IndexedRule(var idx: Int, val rule: Rule) // Terminology: // ruleBit - rule's index in the rules list @@ -193,7 +184,7 @@ class RuleIndex(): Iterable, RuleLookup * The mask tells whether or not a particular constraint occurrence can match * any of the rule's constraints. */ - private class SlotMask() { + private class SlotMask { val symbol2mask = HashMap() @@ -259,7 +250,7 @@ class RuleIndex(): Iterable, RuleLookup is Term -> termSelectors[argIdx].remove(arg, ruleBit, headPos) is Any -> - value2indices.get(arg)?.remove(ruleBit to headPos) + value2indices[arg]?.remove(ruleBit to headPos) else -> throw NullPointerException() // never happens } @@ -333,12 +324,12 @@ class RuleIndex(): Iterable, RuleLookup } } - if (!refined) { + return if (!refined) { // no arguments or all arguments are wildcards - return symbolSelector to slotMasks - + symbolSelector to slotMasks + } else { - return selectedRuleBits to slotMasks + selectedRuleBits to slotMasks } } } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatcher.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatcher.kt index 77c42e44..6eaff3c5 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatcher.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleMatcher.kt @@ -38,9 +38,9 @@ interface RuleMatcher { fun probe(): RuleMatchingProbe - fun setRuleLookup(ruleLookup: RuleLookup): Unit + fun setRuleLookup(ruleLookup: RuleLookup) - fun resetRuleLookup(): Unit + fun resetRuleLookup() } @@ -49,8 +49,6 @@ fun createRuleMatcher(lookup: RuleLookup, tag: Any): RuleMatcher = ReteRuleMatch // Trove stuff typealias Signature = TIntList -fun noSignature(): Signature = TIntArrayList(0) - fun Signature.copy() = TIntArrayList(this) fun IntArray.toSignature() = TIntArrayList(this) 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 52527605..c92c2fc1 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 @@ -337,7 +337,7 @@ internal class ControllerImpl ( try { block().let { if (!it.isOk()) { - failure = EvaluationFailure(it); + failure = EvaluationFailure(it) } } 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 020f8767..7b463f52 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 @@ -27,11 +27,6 @@ import java.util.* * @author Fedor Isakov */ - -internal typealias OccurrenceStore = Collection - -internal fun emptyStore(): OccurrenceStore = emptyList() - /** * Handles creation of the first and following sessions, * properly ending sessions and getting their results. @@ -83,7 +78,7 @@ internal class EvaluationSessionImpl private constructor ( val params: Map, *>?) : EvaluationSession() { @Suppress("UNCHECKED_CAST") - override fun parameter(key: ParameterKey): T? = params ?.get(key) as T + override fun parameter(key: ParameterKey): T = params ?.get(key) as T private fun launch(token: SessionToken?, main: Constraint): EvaluationResult { val sessionProcessing: DefaultProcessingSession = DefaultProcessingSession() @@ -122,7 +117,7 @@ internal class EvaluationSessionImpl private constructor ( val status = run(main) controller.shutDown() val newToken = endSession(session) - return EvaluationResultImpl(newToken, status, emptySet(), emptyList()) + return EvaluationResultImpl(newToken, status) } protected fun SessionParts.run(main: Constraint): FeedbackStatus = controller.activate(main) @@ -189,11 +184,11 @@ internal class EvaluationSessionImpl private constructor ( val ourBackend = Backend() fun init() { - EvaluationSession.setBackend(ourBackend) + setBackend(ourBackend) } fun deinit() { - EvaluationSession.clearBackend(ourBackend) + clearBackend(ourBackend) } } @@ -202,14 +197,10 @@ internal class EvaluationSessionImpl private constructor ( private class EvaluationResultImpl( val token: SessionToken, val status: FeedbackStatus, - val invalidFeedbackKeys: FeedbackKeySet, - val invalidRules: Collection ): EvaluationResult { override fun token() = token override fun storeView(): StoreView = token.storeView override fun feedback(): EvaluationFeedback? = if (status is FAILED) status.failure else null - override fun invalidFeedbackKeys(): Collection = invalidFeedbackKeys - override fun invalidRules(): Collection = invalidRules } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/LogicalImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/LogicalImpl.kt index c68433d6..98b585e4 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/LogicalImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/LogicalImpl.kt @@ -17,7 +17,6 @@ package jetbrains.mps.logic.reactor.core.internal import jetbrains.mps.logic.reactor.core.LogicalObserver -import jetbrains.mps.logic.reactor.logical.LogicalOwner import jetbrains.mps.logic.reactor.logical.MutableLogical import jetbrains.mps.logic.reactor.logical.MetaLogical import java.util.ArrayList @@ -38,26 +37,24 @@ internal class LogicalImpl : MutableLogical { var rank = 0 - var usagesCount = 0 - val valueObservers = ArrayList, LogicalObserver>>() val parentObservers = ArrayList, LogicalObserver>>() constructor(value: T) { this.name = "$${++lastIdx}" - this.metaLogical = DefaultMetaLogical(name) + this.metaLogical = DefaultMetaLogical(name) this._value = value } constructor(name: String) { this.name = "${name}_${++lastIdx}" - this.metaLogical = DefaultMetaLogical(name) + this.metaLogical = DefaultMetaLogical(name) } constructor(name: String, value: T) { this.name = "${name}_${++lastIdx}" - this.metaLogical = DefaultMetaLogical(name) + this.metaLogical = DefaultMetaLogical(name) this._value = value } @@ -122,19 +119,19 @@ internal class LogicalImpl : MutableLogical { // first copy the value if (thisVal == null && otherVal != null) { // var ground - thisRepr.setValue(otherVal); + thisRepr.setValue(otherVal) // TODO: clear the value in the "other" logical after union } else if (thisVal != null && otherVal == null) { // ground var // TODO: no need to copy the value - otherRepr.setValue(thisVal); + otherRepr.setValue(thisVal) } // reconcile the values/merge value observers if (thisVal == null && otherVal == null) { // var var - thisRepr.mergeValueObservers(otherRepr); + thisRepr.mergeValueObservers(otherRepr) } else if (thisVal != null && otherVal != null) { // ground ground 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 8dc355b9..1bd6518c 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 @@ -20,8 +20,6 @@ import gnu.trove.TIntObjectHashMap import jetbrains.mps.logic.reactor.core.* import jetbrains.mps.logic.reactor.evaluation.* import jetbrains.mps.logic.reactor.program.* -import jetbrains.mps.logic.reactor.util.Id -import java.util.* typealias ChunkIndex = TIntObjectHashMap diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournalImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournalImpl.kt index 681cd491..0a016498 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournalImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/MatchJournalImpl.kt @@ -167,11 +167,11 @@ internal open class MatchJournalImpl( override fun initialChunk(): MatchChunk = initialChunk - override fun parentChunk(): MatchChunk = ancestorChunksStack.peek()!! + override fun parentChunk(): MatchChunk = ancestorChunksStack.peek() - override fun currentPos(): MatchJournal.Pos = __cursor.currentPos() + override fun currentPos(): Pos = __cursor.currentPos() - override fun reset(pastPos: MatchJournal.Pos) { + override fun reset(pastPos: Pos) { __cursor.moveToPastRemoving(pastPos) { popParentChunk() resetOccurrences(it.entries()) @@ -189,7 +189,7 @@ internal open class MatchJournalImpl( } // Note: returns View for the whole history regardless of current posPtr - override fun view() = MatchJournal.View(ArrayList(hist), evidenceSeed) + override fun view() = View(ArrayList(hist), evidenceSeed) override fun storeView(): StoreView = StoreViewImpl(allOccurrences()) @@ -260,7 +260,7 @@ internal open class MatchJournalImpl( } } - internal infix fun ChunkIterator.assertAt(pos: MatchJournal.Pos) { + internal infix fun ChunkIterator.assertAt(pos: Pos) { if (!(this at pos)) throw IllegalStateException("Position wasn't found in journal: $pos") } @@ -373,7 +373,7 @@ internal open class MatchJournalImpl( object EmptyRule : Rule() { override fun kind(): Kind = Kind.PROPAGATION - override fun uniqueTag(): Tag = Rule.Tag("__initial_rule__") + override fun uniqueTag(): Tag = Tag("__initial_rule__") override fun headKept(): Iterable = emptyList() override fun headReplaced(): Iterable = emptyList() override fun guard(): Iterable = emptyList() diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/PrincipalObserverDispatcher.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/PrincipalObserverDispatcher.kt index 5f8d382f..df046219 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/PrincipalObserverDispatcher.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/PrincipalObserverDispatcher.kt @@ -16,12 +16,8 @@ package jetbrains.mps.logic.reactor.core.internal -import jetbrains.mps.logic.reactor.core.Controller -import jetbrains.mps.logic.reactor.core.ForwardingLogicalObserver import jetbrains.mps.logic.reactor.core.LogicalStateObservable import jetbrains.mps.logic.reactor.core.Occurrence -import jetbrains.mps.logic.reactor.logical.Logical -import jetbrains.mps.unification.Term typealias ObserverTriggeredHandler = (Occurrence) -> Boolean 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 022083f9..d94f2c29 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 @@ -30,7 +30,7 @@ import kotlin.collections.ArrayList * * Loosely based on "Rete network" algorithm. * - * The implementation of [RuleMatchingProbe] returned from [probe] method is not a persistent object, it's rather + * The implementation of [RuleMatchingProbe] returned from [ReteRuleMatcherImpl.probe] method is not a persistent object, it's rather * a mutable object which updates its state through usual update methods that all return the same object. * * @author Fedor Isakov @@ -42,8 +42,6 @@ fun trailOf(): Trail = TIntHashSet() fun Signature.toTrail() = TIntHashSet(this) -typealias SignatureIndex = TIntObjectHashMap> - fun signatureIndexOf() = TIntObjectHashMap>() internal class ReteRuleMatcherImpl(private var ruleLookup: RuleLookup?, diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/RuleMatchImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/RuleMatchImpl.kt index 3abf65e7..029b8261 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/RuleMatchImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/RuleMatchImpl.kt @@ -19,7 +19,6 @@ package jetbrains.mps.logic.reactor.core.internal import jetbrains.mps.logic.reactor.core.Occurrence import jetbrains.mps.logic.reactor.core.RuleMatchEx import jetbrains.mps.logic.reactor.core.Subst -import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence import jetbrains.mps.logic.reactor.logical.Logical import jetbrains.mps.logic.reactor.logical.LogicalContext import jetbrains.mps.logic.reactor.logical.LogicalOwner diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/TermWalker.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/TermWalker.kt index 2d5fe8a6..392a5fba 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/TermWalker.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/TermWalker.kt @@ -83,8 +83,6 @@ class TermWalker(vararg visitors: TermVisitor) { } } -internal fun Term.unboundLogicals(): Collection> = logicalsWhere { !it.isBound } - internal inline fun Term.logicalsWhere(crossinline where: (Logical<*>) -> Boolean): Collection> { val collected = arrayListOf>() 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 c2e45e35..4dff8718 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java @@ -17,12 +17,9 @@ package jetbrains.mps.logic.reactor.evaluation; -import gnu.trove.set.TIntSet; -import gnu.trove.set.hash.TIntHashSet; import jetbrains.mps.logic.reactor.logical.LogicalContext; import jetbrains.mps.logic.reactor.program.Constraint; import jetbrains.mps.logic.reactor.program.Rule; -import org.jetbrains.annotations.NotNull; import java.util.List; diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/DataProvider.java b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/DataProvider.java index 042958b3..a0f908da 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/DataProvider.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/DataProvider.java @@ -19,6 +19,8 @@ package jetbrains.mps.logic.reactor.evaluation; import java.util.function.Supplier; /** + * Used in implementation. + * * @author Fedor Isakov */ public interface DataProvider { diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationResult.java b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationResult.java index 17e14c3d..b5bb8788 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationResult.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationResult.java @@ -16,23 +16,15 @@ package jetbrains.mps.logic.reactor.evaluation; -import java.util.Collection; - /** * @author Fedor Isakov */ public interface EvaluationResult { - public SessionToken token(); + SessionToken token(); - public StoreView storeView(); + StoreView storeView(); - public EvaluationFeedback feedback(); - - @Deprecated(forRemoval = true) - public Collection invalidFeedbackKeys(); - - @Deprecated(forRemoval = true) - public Collection invalidRules(); + EvaluationFeedback feedback(); } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java index d050737d..6725ae9e 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java @@ -20,8 +20,6 @@ package jetbrains.mps.logic.reactor.evaluation; import jetbrains.mps.logic.reactor.program.Program; import jetbrains.mps.logic.reactor.util.Profiler; -import java.util.Collection; - /** * The starting point to evaluate a program. *

diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationTrace.java b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationTrace.java index 903aa67d..006a4127 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationTrace.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationTrace.java @@ -17,7 +17,6 @@ package jetbrains.mps.logic.reactor.evaluation; -import jetbrains.mps.logic.reactor.core.EvaluationFailure; import jetbrains.mps.logic.reactor.program.Rule; /** diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/SessionToken.java b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/SessionToken.java index 950ea317..060ff857 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/SessionToken.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/SessionToken.java @@ -18,7 +18,6 @@ package jetbrains.mps.logic.reactor.evaluation; import jetbrains.mps.logic.reactor.program.Rule; import org.jetbrains.annotations.NotNull; -import java.util.Collection; public interface SessionToken { @NotNull diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MetaLogical.java b/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MetaLogical.java index 0c79d6b4..f89e71f6 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MetaLogical.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MetaLogical.java @@ -27,8 +27,8 @@ package jetbrains.mps.logic.reactor.logical; public class MetaLogical implements VarSymbol { private static final String WILDCARD = "_"; - private String name; - private Class type; + private final String name; + private final Class type; private boolean wildcard = false; public MetaLogical(String name, Class type) { diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MutableLogical.java b/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MutableLogical.java index c841a740..9335d0c7 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MutableLogical.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/logical/MutableLogical.java @@ -39,7 +39,7 @@ public interface MutableLogical extends Logical { void union(MutableLogical other, MutableLogical.ValueReconciler reconciler); /** - * Calls {@link MutableLogical#union(MutableLogical , MutableLogical.ValueReconciler) } with the default value reconciler. + * Calls {@link #union(MutableLogical, MutableLogical.ValueReconciler) } with the default value reconciler. * The default reconciler throws {@link java.lang.IllegalArgumentException } if the two values are not equal. */ void union(MutableLogical other); diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Rule.java b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Rule.java index a8a43057..df25c0e6 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Rule.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Rule.java @@ -63,8 +63,6 @@ public abstract class Rule { /** * * @param groupName template that created this rule - * @param tagName - * @param uniquePart */ public Tag(String groupName, String tagName, Object uniquePart) { this.group = groupName; diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Symbol.java b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Symbol.java index fdf31804..6df5ec15 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Symbol.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Symbol.java @@ -24,8 +24,8 @@ package jetbrains.mps.logic.reactor.program; */ public abstract class Symbol { - private String id; - private int arity; + private final String id; + private final int arity; protected Symbol(String id, int arity) { this.id = id; @@ -43,7 +43,7 @@ public abstract class Symbol { @Override public int hashCode() { int result = 17; - result = 43 * result + ((id != null ? String.valueOf(id).hashCode() : 0)); + result = 43 * result + ((id != null ? id.hashCode() : 0)); result = 31 * result + 37 * arity; return result; } @@ -61,10 +61,6 @@ public abstract class Symbol { if ((id != null ? !(id.equals(that.id())) : that.id != null)) { return false; } - if (arity != that.arity) { - return false; - } - - return true; + return arity == that.arity; } } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/util/ArrayListStack.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/util/ArrayListStack.kt index 131322aa..9130c2db 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/util/ArrayListStack.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/util/ArrayListStack.kt @@ -16,14 +16,13 @@ package jetbrains.mps.logic.reactor.util -import java.util.* import kotlin.collections.ArrayList /** * @author Fedor Isakov */ -fun ArrayList.push (element: T): Unit { add(element) } +fun ArrayList.push (element: T) { add(element) } fun ArrayList.pop (): T = removeAt(size - 1) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/util/BitSet.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/util/BitSet.kt index f311a938..0ec16eca 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/util/BitSet.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/util/BitSet.kt @@ -44,9 +44,9 @@ fun BitSet.clearBit(bit: Int): BitSet = fun BitSet.allSetBits(): TIntIterator = object : TIntIterator { - var next = nextSetBit(0); + var next = nextSetBit(0) - override fun hasNext(): Boolean = next != -1; + override fun hasNext(): Boolean = next != -1 override fun next(): Int = if (next != -1) { diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/util/ClassicIndexedTermTrie.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/util/ClassicIndexedTermTrie.kt index 17e033f8..cc0333b0 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/util/ClassicIndexedTermTrie.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/util/ClassicIndexedTermTrie.kt @@ -208,7 +208,7 @@ class ClassicIndexedTermTrie : IndexedTermTrie { WILDCARD } else { - term.symbol() ?: throw NullPointerException("term symbol can't be null") + term.symbol() } } @@ -419,9 +419,7 @@ class ClassicIndexedTermTrie : IndexedTermTrie { if (existing != null) { return existing } else { - val default = default(symbol) - next[symbol] = default - return default + return default(symbol).also { next[symbol] = it } } } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/util/DexxCollections.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/util/DexxCollections.kt index dda37bb7..d8d2ad1e 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/util/DexxCollections.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/util/DexxCollections.kt @@ -46,8 +46,8 @@ fun Set.put(t: T) = add(t) fun Set.without(t: T) = remove(t) -fun Map.assoc(k: K, v: V) = put(k, v) +fun Map.assoc(k: K, v: V) = put(k, v) -fun Map.without(k: K) = remove(k) +fun Map.without(k: K) = remove(k) fun Pair.getValue(): V = component2() \ No newline at end of file diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt index 4360dee7..2531cbea 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt @@ -30,7 +30,7 @@ class Profiler { private val tokenStack = LinkedList() - constructor() { + init { tokenStack.push(Token("_", ++lastTokenId)) } diff --git a/reactor/Core/src/jetbrains/mps/unification/Substitution.java b/reactor/Core/src/jetbrains/mps/unification/Substitution.java index b45b282d..8b889d88 100644 --- a/reactor/Core/src/jetbrains/mps/unification/Substitution.java +++ b/reactor/Core/src/jetbrains/mps/unification/Substitution.java @@ -29,7 +29,7 @@ import java.util.Collections; */ public class Substitution { - private boolean mySuccessful; + private final boolean mySuccessful; private Failure myFailure; @@ -64,7 +64,7 @@ public class Substitution { } public String toString() { - return myFailure != null ? "[" + String.valueOf(myFailure) + "]" : "[FAILED_SUBSTITUTION]"; + return myFailure != null ? "[" + myFailure + "]" : "[FAILED_SUBSTITUTION]"; } /** @@ -73,9 +73,9 @@ public class Substitution { */ public static class Binding { - private Term myVar; + private final Term myVar; - private Term myTerm; + private final Term myTerm; public Binding(Term myVar, Term myTerm) { this.myVar = myVar; @@ -94,7 +94,7 @@ public class Substitution { public static class Failure { - private FailureCause myCause; + private final FailureCause myCause; private Object[] myDetails; @@ -127,7 +127,7 @@ public class Substitution { SYMBOL_CLASH("symbol clash"), UKNOWN("uknown"); - private String myMessage; + private final String myMessage; FailureCause(String message) { myMessage = message; diff --git a/reactor/Core/src/jetbrains/mps/unification/Term.java b/reactor/Core/src/jetbrains/mps/unification/Term.java index 340689c6..7cfd6eb6 100644 --- a/reactor/Core/src/jetbrains/mps/unification/Term.java +++ b/reactor/Core/src/jetbrains/mps/unification/Term.java @@ -24,7 +24,6 @@ import java.util.Collection; * Represents a node in a term graph. The graph may contain cycles. A node in a term * graph can be of three kinds: a variable, a function (possibly constant) and a reference. * A reference must point to either a function term or a variable. - * * A term must implement {@link java.lang.Comparable}, but this is only really used for * comparing the variables. * diff --git a/reactor/Core/src/jetbrains/mps/unification/TermGraphUnifier.kt b/reactor/Core/src/jetbrains/mps/unification/TermGraphUnifier.kt index 6485414a..13d823c0 100644 --- a/reactor/Core/src/jetbrains/mps/unification/TermGraphUnifier.kt +++ b/reactor/Core/src/jetbrains/mps/unification/TermGraphUnifier.kt @@ -63,7 +63,7 @@ class TermGraphUnifier(private val wrapper: TermWrapper = TermWrapper.ID, constructor(trivialBindings: Boolean) : this(TermWrapper.ID, trivialBindings) {} companion object { - val EMPTY_LIST = TIntArrayList.wrap(kotlin.IntArray(0)) + val EMPTY_LIST = TIntArrayList.wrap(IntArray(0)) } fun unify(a: Term, b: Term): Substitution { @@ -114,7 +114,7 @@ class TermGraphUnifier(private val wrapper: TermWrapper = TermWrapper.ID, setAcyclic(z) // avoid unnecessary instatiation - val success = if (subs is SuccessfulSubstitution) subs as SuccessfulSubstitution + val success = if (subs is SuccessfulSubstitution) subs else SuccessfulSubstitution(subs) if (vars != null) { diff --git a/reactor/Core/src/jetbrains/mps/unification/TermWrapper.java b/reactor/Core/src/jetbrains/mps/unification/TermWrapper.java index 035795a5..4cf80061 100644 --- a/reactor/Core/src/jetbrains/mps/unification/TermWrapper.java +++ b/reactor/Core/src/jetbrains/mps/unification/TermWrapper.java @@ -18,7 +18,6 @@ package jetbrains.mps.unification; /** * Used by the unifier to wrap original terms in order to alter the unification behaviour. - * * For example, one might want to represent a (term) variable as a constant in order to avoid unwanted matches. * * @author Fedor Isakov diff --git a/reactor/Core/src/jetbrains/mps/unification/Unification.kt b/reactor/Core/src/jetbrains/mps/unification/Unification.kt index d51aa5d4..260410af 100644 --- a/reactor/Core/src/jetbrains/mps/unification/Unification.kt +++ b/reactor/Core/src/jetbrains/mps/unification/Unification.kt @@ -74,13 +74,9 @@ object Unification { class SuccessfulSubstitution(substitution: Substitution) : Substitution(true) { - private val myBindings: LinkedList + private val myBindings: LinkedList = LinkedList(substitution.bindings()) - init { - this.myBindings = LinkedList(substitution.bindings()) - } - - override fun bindings(): Collection { + override fun bindings(): Collection { return Collections.unmodifiableCollection(myBindings) } @@ -96,7 +92,7 @@ object Unification { } fun addBinding(v: Term, n: Term) { - myBindings.addFirst(Substitution.Binding(v, n)) + myBindings.addFirst(Binding(v, n)) } }