diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps index ceba6dc2..14941d92 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps @@ -457,7 +457,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -658,7 +658,7 @@ - + @@ -1573,7 +1573,7 @@ - + @@ -1711,7 +1711,7 @@ - + @@ -1784,7 +1784,7 @@ - + @@ -1955,7 +1955,7 @@ - + @@ -1965,13 +1965,13 @@ - + - + @@ -4246,7 +4246,7 @@ - + @@ -4276,7 +4276,7 @@ - + @@ -4461,13 +4461,13 @@ - + - + @@ -4913,7 +4913,7 @@ - + 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 79ad8ae3..c903f564 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt @@ -34,7 +34,7 @@ import kotlin.collections.HashMap * FIXME handler to be renamed to RulesList * @author Fedor Isakov */ -class RuleIndex(handlers: Iterable) : Iterable, RuleLookup { +class RuleIndex(handlers: Iterable) : Iterable, RuleLookup { private val symbol2index = HashMap() @@ -73,7 +73,7 @@ class RuleIndex(handlers: Iterable) : Iterable, RuleLookup { override fun iterator(): Iterator = rulesList.iterator() - private fun buildIndex(handlers: Iterable) { + private fun buildIndex(handlers: Iterable) { var ruleBit = 0 for (h in handlers) { for (rule in h.rules()) { diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Program.java b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Program.java index 49ba78e5..7dae7eb4 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Program.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Program.java @@ -17,11 +17,6 @@ package jetbrains.mps.logic.reactor.program; -import jetbrains.mps.logic.reactor.evaluation.InvocationContext; -import jetbrains.mps.logic.reactor.logical.LogicalContext; - -import java.util.List; - /** * A collection of handlers that constitute a constraint rules program. * @@ -32,6 +27,6 @@ public abstract class Program { public abstract String name(); - public abstract Iterable handlers(); + public abstract Iterable handlers(); } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Handler.java b/reactor/Core/src/jetbrains/mps/logic/reactor/program/RulesList.java similarity index 87% rename from reactor/Core/src/jetbrains/mps/logic/reactor/program/Handler.java rename to reactor/Core/src/jetbrains/mps/logic/reactor/program/RulesList.java index 625fef21..c2169f3f 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Handler.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/program/RulesList.java @@ -17,12 +17,11 @@ package jetbrains.mps.logic.reactor.program; /** - * A handler is a container of rules. - *

- * FIXME to be renamed to RulesList + * A container for rules. + * * @author Fedor Isakov */ -public abstract class Handler { +public abstract class RulesList { public abstract String name(); diff --git a/reactor/Test/src/program/MockProgram.kt b/reactor/Test/src/program/MockProgram.kt index dc61a41b..22b44da3 100644 --- a/reactor/Test/src/program/MockProgram.kt +++ b/reactor/Test/src/program/MockProgram.kt @@ -2,7 +2,6 @@ * @author Fedor Isakov */ -import jetbrains.mps.logic.reactor.evaluation.EvaluationFeedback import jetbrains.mps.logic.reactor.evaluation.InvocationContext import jetbrains.mps.logic.reactor.evaluation.Supervisor import jetbrains.mps.logic.reactor.logical.LogicalContext @@ -14,13 +13,13 @@ import kotlin.collections.LinkedHashMap class ProgramBuilder(val registry: MockConstraintRegistry) { - fun program(name: String, handlers: List): Program { - for (h in handlers) { + fun program(name: String, rulesLists: List): Program { + for (h in rulesLists) { for (r in h.rules()) { registry.update(r) } } - return MockProgram(name, handlers, registry) + return MockProgram(name, rulesLists, registry) } } @@ -29,8 +28,8 @@ class HandlerBuilder(val name: String) { val rules = LinkedHashMap() - constructor(name: String, handler: Handler) : this(name) { - for (r in handler.rules()) { + constructor(name: String, rulesList: RulesList) : this(name) { + for (r in rulesList.rules()) { appendRule(r) } } @@ -39,7 +38,7 @@ class HandlerBuilder(val name: String) { rules[rule.tag()] = rule } - fun toHandler(): Handler = MockHandler(name, rules.values.toList()) + fun toHandler(): RulesList = MockHandler(name, rules.values.toList()) } class RuleBuilder(val tag: String) { @@ -66,7 +65,7 @@ class RuleBuilder(val tag: String) { class MockHandler( val name: String, - val rules: List) : Handler() { + val rules: List) : RulesList() { override fun name(): String = name @@ -97,11 +96,11 @@ class MockRule( else (kept + replaced).map { it as AndItem } + guard + body.flatten() } -class MockProgram(val name: String, val handlers: List, val registry: MockConstraintRegistry) : Program() { +class MockProgram(val name: String, val rulesLists: List, val registry: MockConstraintRegistry) : Program() { override fun name(): String = name - override fun handlers(): Iterable = unmodifiableCollection(handlers) + override fun handlers(): Iterable = unmodifiableCollection(rulesLists) } diff --git a/reactor/Test/test/RulesHelper.kt b/reactor/Test/test/RulesHelper.kt index 5a3819d4..0a5e05a2 100644 --- a/reactor/Test/test/RulesHelper.kt +++ b/reactor/Test/test/RulesHelper.kt @@ -10,14 +10,14 @@ import kotlin.collections.HashMap * @author Fedor Isakov */ -class Builder(var handlers: List) : RuleLookup { +class Builder(var rulesLists: List) : RuleLookup { val tag2rule = HashMap() val programBuilder = ProgramBuilder(MockConstraintRegistry()) init { - handlers + rulesLists .flatMap { it.rules() } .forEach { r -> tag2rule[r.tag()] = r } } @@ -29,28 +29,28 @@ class Builder(var handlers: List) : RuleLookup { fun ruleMatcher(): RuleMatcher = createRuleMatcher(this, rules.first().tag()) - fun program(name: String): Program = programBuilder.program(name, handlers) + fun program(name: String): Program = programBuilder.program(name, rulesLists) } -private fun createBuilder(handlerBlocks: Array Handler>): Builder { - val handlers = ArrayList() - for (block in handlerBlocks) { +private fun createBuilder(rulesListBlocks: Array RulesList>): Builder { + val handlers = ArrayList() + for (block in rulesListBlocks) { handlers.add(block()) } return Builder(handlers) } -private fun updateBuilder(builder:Builder, handlerBlocks: Array Handler>): Builder { - val name2handler = HashMap(builder.handlers.map { it.name() to it }.toMap()) - for (block in handlerBlocks) { +private fun updateBuilder(builder:Builder, rulesListBlocks: Array RulesList>): Builder { + val name2handler = HashMap(builder.rulesLists.map { it.name() to it }.toMap()) + for (block in rulesListBlocks) { val h = block() name2handler[h.name()] = h } return Builder(name2handler.values.toList()) } -private fun createHandler(name: String, vararg ruleBlocks: () -> Rule): () -> Handler = { +private fun createHandler(name: String, vararg ruleBlocks: () -> Rule): () -> RulesList = { val hb = HandlerBuilder(name) for (block in ruleBlocks) { hb.appendRule(block()) @@ -58,8 +58,8 @@ private fun createHandler(name: String, vararg ruleBlocks: () -> Rule): () -> Ha hb.toHandler() } -private fun updateHandler(name: String, handler: Handler, vararg ruleBlocks: () -> Rule): () -> Handler = { - val hb = HandlerBuilder(name, handler) +private fun updateHandler(name: String, rulesList: RulesList, vararg ruleBlocks: () -> Rule): () -> RulesList = { + val hb = HandlerBuilder(name, rulesList) for (block in ruleBlocks) { hb.appendRule(block()) } @@ -72,7 +72,7 @@ fun programWithRules(vararg ruleBuilders: () -> Rule): Builder = createBuilder(arrayOf(createHandler("test", * ruleBuilders))) fun Builder.programWithRules(vararg ruleBuilders: () -> Rule): Builder = - updateBuilder(this, arrayOf(updateHandler("test", handlers.first(), * ruleBuilders))) + updateBuilder(this, arrayOf(updateHandler("test", rulesLists.first(), * ruleBuilders))) fun rule(tag: String, vararg component: RuleBuilder.() -> Unit): () -> Rule = { val rb = RuleBuilder(tag) diff --git a/reactor/Test/test/TestController.kt b/reactor/Test/test/TestController.kt index a5e02e26..6e0a89a1 100644 --- a/reactor/Test/test/TestController.kt +++ b/reactor/Test/test/TestController.kt @@ -58,22 +58,22 @@ class TestController { } private fun Builder.controller(vararg occurrences: ConstraintOccurrence): Controller { - val program = MockProgram("test", handlers, registry = MockConstraintRegistry()) + val program = MockProgram("test", rulesLists, registry = MockConstraintRegistry()) MockSession.init(program, MockSupervisor()) - val controller = createController(MockSupervisor(), RuleIndex(program.handlers), storeView = MockStoreView(listOf(* occurrences))) + val controller = createController(MockSupervisor(), RuleIndex(program.rulesLists), storeView = MockStoreView(listOf(* occurrences))) MockSession.ourBackend.session.controller = controller return controller } private fun Builder.controllerWithFeedback(feedbackHandler: (Rule, EvaluationFeedback) -> Boolean, vararg occurrences: ConstraintOccurrence): Controller { - val program = MockProgram("test", handlers, registry = MockConstraintRegistry()) + val program = MockProgram("test", rulesLists, registry = MockConstraintRegistry()) val supervisor = object : MockSupervisor() { override fun handleFeedback(rule: Rule, feedback: EvaluationFeedback): Boolean = feedbackHandler(rule, feedback) } MockSession.init(program, supervisor) - val controller = createController(supervisor, RuleIndex(program.handlers), storeView = MockStoreView(listOf(* occurrences))) + val controller = createController(supervisor, RuleIndex(program.rulesLists), storeView = MockStoreView(listOf(* occurrences))) MockSession.ourBackend.session.controller = controller return controller } diff --git a/reactor/Test/test/TestRuleMatcher.kt b/reactor/Test/test/TestRuleMatcher.kt index 6551f4dd..c55b44bc 100644 --- a/reactor/Test/test/TestRuleMatcher.kt +++ b/reactor/Test/test/TestRuleMatcher.kt @@ -545,7 +545,7 @@ class TestRuleMatcher { constraint("qux") )))) { - with(Dispatcher(RuleIndex(handlers)).front()) { + with(Dispatcher(RuleIndex(rulesLists)).front()) { expand(occurrence("foo")) }.apply { matches().count() shouldBe 0 }.run { @@ -587,7 +587,7 @@ class TestRuleMatcher { constraint("qux") )))) { - with(Dispatcher(RuleIndex(handlers)).front()) { + with(Dispatcher(RuleIndex(rulesLists)).front()) { expand(occurrence("foo")) }.apply { matches().count() shouldBe 0 }.run { @@ -656,7 +656,7 @@ class TestRuleMatcher { constraint("qux") )))) { - with(Dispatcher(RuleIndex(handlers)).front()) { + with(Dispatcher(RuleIndex(rulesLists)).front()) { expand(occurrence("blin")) }.apply { matches().count() shouldBe 0 }.run { @@ -706,7 +706,7 @@ class TestRuleMatcher { constraint("qux") )))) { - with(Dispatcher(RuleIndex(handlers)).front()) { + with(Dispatcher(RuleIndex(rulesLists)).front()) { expand(occurrence("foo")) }.apply { matches().count() shouldBe 0 }.run { @@ -759,7 +759,7 @@ class TestRuleMatcher { )))) { val bar = occurrence("bar") - with(Dispatcher(RuleIndex(handlers)).front()) { + with(Dispatcher(RuleIndex(rulesLists)).front()) { expand(occurrence("foo")) }.apply { matches().count() shouldBe 0 }.run {