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 f362a08c..97195e76 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt @@ -39,11 +39,6 @@ class RuleIndex(handlers: Iterable) : Iterable { private val tag2rule = LinkedHashMap() init { - for (h in handlers) { - for (r in h.rules()) { - tag2rule[r.tag()] = r - } - } buildIndex(handlers) } @@ -64,6 +59,10 @@ class RuleIndex(handlers: Iterable) : Iterable { for (h in handlers) { val primSymbols = h.primarySymbols().toSet() for (r in h.rules()) { + if (tag2rule.containsKey(r.tag())) { + throw IllegalStateException("duplicate rule tag ${r.tag()}") + } + tag2rule[r.tag()] = r for (c in (r.headKept() + r.headReplaced())) { val symbol = c.symbol() if (symbol in primSymbols) {