From 906f919e165f494298ed4b51b84c987d4367f103 Mon Sep 17 00:00:00 2001 From: Grigorii Kirgizov Date: Wed, 31 Jul 2019 14:29:50 +0300 Subject: [PATCH] Run coderules program analyses at generation stage. Extend Rule with basetag(). Adjust how rule_tag is generated for reuse in generator. basetag() returns name of ConstraintRule without node id. Check on whether Rule is principal are now done through basetag(), it's sufficient. Add part of future analysis: CallerTableBuilder. --- build.xml | 56 +- .../generator/template/main@generator.mps | 2062 ++++++++++++++--- .../jetbrains.mps.lang.coderules.eval.mps | 277 ++- ...ns.mps.lang.coderules.program.analysis.mps | 240 +- .../models/jetbrains.mps.coderules.build.mps | 19 +- ...ins.mps.coderules.incrementality@tests.mps | 230 +- .../jetbrains.mps.lang.coderules.template.msd | 2 + .../jetbrains.mps.lang.coderules.template.mps | 52 + .../reactor/core/internal/MatchJournalImpl.kt | 1 + .../mps/logic/reactor/program/Rule.java | 7 +- reactor/Test/src/program/MockProgram.kt | 2 + 11 files changed, 2438 insertions(+), 510 deletions(-) diff --git a/build.xml b/build.xml index d5438f6a..d940621d 100644 --- a/build.xml +++ b/build.xml @@ -511,6 +511,7 @@ + @@ -643,6 +644,7 @@ + @@ -2548,6 +2550,7 @@ + @@ -2680,6 +2683,7 @@ + @@ -3964,7 +3968,7 @@ - + @@ -4118,7 +4122,6 @@ - @@ -5514,7 +5517,48 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5555,11 +5599,12 @@ + - + @@ -5588,7 +5633,6 @@ - @@ -5602,6 +5646,7 @@ + @@ -6046,7 +6091,6 @@ - diff --git a/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps b/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps index 608de56b..20e438d6 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps @@ -5,18 +5,19 @@ - + - + - + + @@ -48,6 +49,10 @@ + + + + @@ -131,6 +136,10 @@ + + + + @@ -321,6 +330,7 @@ + @@ -398,6 +408,12 @@ + + + + + + @@ -480,6 +496,9 @@ + + + @@ -566,6 +585,7 @@ + @@ -680,6 +700,10 @@ + + + + @@ -687,17 +711,37 @@ + + + + + + + + + + + + + + + + + + + + @@ -707,7 +751,14 @@ + + + + + + + @@ -760,6 +811,11 @@ + + + + + @@ -1539,55 +1595,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -1681,55 +1691,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -3176,7 +3140,25 @@ - + + + + + + + + + + + + + + + + + + + @@ -3368,6 +3350,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3389,6 +3433,13 @@ + + + + + + + @@ -6788,57 +6839,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -6940,57 +6948,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -7208,55 +7173,13 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - @@ -10683,6 +10606,21 @@ + + + + + + + + + + + + + + + @@ -10751,21 +10689,6 @@ - - - - - - - - - - - - - - - @@ -14078,6 +14001,12 @@ + + + + + + @@ -15177,6 +15106,23 @@ + + + + + + + + + + + + + + + + + @@ -15201,23 +15147,6 @@ - - - - - - - - - - - - - - - - - @@ -15395,6 +15324,23 @@ + + + + + + + + + + + + + + + + + @@ -15435,23 +15381,6 @@ - - - - - - - - - - - - - - - - - @@ -15579,13 +15508,16 @@ - + + + + @@ -15619,9 +15551,6 @@ - - - @@ -16091,5 +16020,1542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps index 9b2f184a..3c14670f 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps @@ -113,6 +113,9 @@ + + + @@ -5068,6 +5071,21 @@ + + + + + + + + + + + + + + + @@ -5118,7 +5136,16 @@ - + + + + + + + + + + @@ -5190,6 +5217,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5261,6 +5336,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5294,6 +5433,14 @@ + + + + + + + + @@ -5565,9 +5712,23 @@ - - - + + + + + + + + + + + + + + + + + @@ -5866,67 +6027,83 @@ - - - - - - + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + - - + + - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.analysis.mps b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.analysis.mps index 72802572..053ca99b 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.analysis.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.analysis.mps @@ -66,6 +66,9 @@ + + + @@ -157,6 +160,9 @@ + + + @@ -182,7 +188,9 @@ - + + + @@ -312,6 +320,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -438,6 +470,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -446,6 +519,20 @@ + + + + + + + + + + + + + + @@ -1678,6 +1765,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2700,6 +2882,9 @@ + + + @@ -2890,7 +3075,7 @@ - + @@ -2970,6 +3155,9 @@ + + + @@ -2996,6 +3184,9 @@ + + + @@ -3213,8 +3404,8 @@ - - + + @@ -3245,5 +3436,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps b/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps index a176ff89..c6240f53 100644 --- a/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps +++ b/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps @@ -2,13 +2,13 @@ - - - - - - - + + + + + + + @@ -1710,6 +1710,11 @@ + + + + + diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.incrementality@tests.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.incrementality@tests.mps index b9462204..525f0f72 100644 --- a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.incrementality@tests.mps +++ b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.incrementality@tests.mps @@ -101,6 +101,7 @@ + @@ -115,6 +116,7 @@ + @@ -316,22 +318,11 @@ - - - - - - - - - - - @@ -354,6 +345,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -745,14 +775,6 @@ - - - - - - - - @@ -855,21 +877,6 @@ - - - - - - - - - - - - - - - @@ -894,82 +901,22 @@ - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + @@ -977,41 +924,43 @@ - - - + + + - + - + - + - + - + - - - - + + + + - - - - - + + + + + + + - + @@ -1041,19 +990,21 @@ - - - - + + + + - - - - - + + + + + + + - + @@ -1061,15 +1012,6 @@ - - - - - - - - - diff --git a/coderules/solutions/jetbrains.mps.lang.coderules.template/jetbrains.mps.lang.coderules.template.msd b/coderules/solutions/jetbrains.mps.lang.coderules.template/jetbrains.mps.lang.coderules.template.msd index 39d34249..403f4b96 100644 --- a/coderules/solutions/jetbrains.mps.lang.coderules.template/jetbrains.mps.lang.coderules.template.msd +++ b/coderules/solutions/jetbrains.mps.lang.coderules.template/jetbrains.mps.lang.coderules.template.msd @@ -13,6 +13,7 @@ 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK) da80355b-a098-4248-9ec8-70d10dd7e9af(jetbrains.mps.reporting.runtime) bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor) + 26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime) @@ -33,6 +34,7 @@ + diff --git a/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps b/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps index 90c3d0df..7dc5c8a0 100644 --- a/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps +++ b/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps @@ -25,6 +25,7 @@ + @@ -392,6 +393,16 @@ + + + + + + + + + + @@ -2680,6 +2691,9 @@ + + + @@ -2694,6 +2708,10 @@ + + + + @@ -2713,6 +2731,19 @@ + + + + + + + + + + + + + @@ -4199,6 +4230,22 @@ + + + + + + + + + + + + + + + + @@ -4427,6 +4474,11 @@ + + + + + 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 2cd58d9d..7b6be627 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 @@ -215,6 +215,7 @@ internal open class MatchJournalImpl( override fun kind(): Kind = Kind.PROPAGATION override fun uniqueTag(): Any = tag().hashCode() override fun tag(): String = "initialrule${"initialrule".hashCode()}" + override fun basetag(): String = tag() 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/program/Rule.java b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Rule.java index f4e1a8bf..af50b3f2 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/program/Rule.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/program/Rule.java @@ -32,10 +32,15 @@ public abstract class Rule { public abstract Object uniqueTag(); /** - * A human-readable identifier, not guaranteed to be unique + * Human-readable identifier, not guaranteed to be unique. */ public abstract String tag(); + /** + * Human-readable identifier shared by all rules produced from the same template. + */ + public abstract String basetag(); + /** * An origin serves as justification for all constraints affected by this rule. */ diff --git a/reactor/Test/src/program/MockProgram.kt b/reactor/Test/src/program/MockProgram.kt index feb84633..39a9cf5d 100644 --- a/reactor/Test/src/program/MockProgram.kt +++ b/reactor/Test/src/program/MockProgram.kt @@ -85,6 +85,8 @@ class MockRule( override fun tag(): String = tag + override fun basetag(): String = tag + override fun headKept(): Iterable = kept override fun headReplaced(): Iterable = replaced