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.
This commit is contained in:
Grigorii Kirgizov 2019-07-31 14:29:50 +03:00 committed by Fedor Isakov
parent b4a012c61b
commit 906f919e16
11 changed files with 2438 additions and 510 deletions

View File

@ -511,6 +511,7 @@
<language id="l:83888646-71ce-4f1c-9c53-c54016f6ad4f:jetbrains.mps.baseLanguage.collections" />
<language id="l:f2801650-65d5-424e-bb1b-463a8781b786:jetbrains.mps.baseLanguage.javadoc" />
<language id="l:96ee7a94-411d-4cf8-9b94-96cad7e52411:jetbrains.mps.baseLanguage.jdk7" />
<language id="l:c7d5b9dd-a05f-4be2-bc73-f2e16994cc67:jetbrains.mps.baseLanguage.lightweightdsl" />
<language id="l:760a0a8c-eabb-4521-8bfd-65db761a9ba3:jetbrains.mps.baseLanguage.logging" />
<language id="l:a247e09e-2435-45ba-b8d2-07e93feba96a:jetbrains.mps.baseLanguage.tuples" />
<language id="l:df345b11-b8c7-4213-ac66-48d2a9b75d88:jetbrains.mps.baseLanguageInternal" />
@ -643,6 +644,7 @@
<module ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)" kind="cl" />
<module ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)" kind="cl" />
<module ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" kind="cl" />
<module ref="26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime)" kind="cl" />
<module ref="bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)" kind="cl" />
<module ref="a5478664-6b44-4c62-a9f7-434f8aa57eee(jetbrains.mps.logic.runtime)" kind="cl" />
<module ref="da80355b-a098-4248-9ec8-70d10dd7e9af(jetbrains.mps.reporting.runtime)" kind="cl" />
@ -2548,6 +2550,7 @@
<language id="l:83888646-71ce-4f1c-9c53-c54016f6ad4f:jetbrains.mps.baseLanguage.collections" />
<language id="l:f2801650-65d5-424e-bb1b-463a8781b786:jetbrains.mps.baseLanguage.javadoc" />
<language id="l:96ee7a94-411d-4cf8-9b94-96cad7e52411:jetbrains.mps.baseLanguage.jdk7" />
<language id="l:c7d5b9dd-a05f-4be2-bc73-f2e16994cc67:jetbrains.mps.baseLanguage.lightweightdsl" />
<language id="l:760a0a8c-eabb-4521-8bfd-65db761a9ba3:jetbrains.mps.baseLanguage.logging" />
<language id="l:a247e09e-2435-45ba-b8d2-07e93feba96a:jetbrains.mps.baseLanguage.tuples" />
<language id="l:df345b11-b8c7-4213-ac66-48d2a9b75d88:jetbrains.mps.baseLanguageInternal" />
@ -2680,6 +2683,7 @@
<module ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)" kind="cl" />
<module ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)" kind="cl" />
<module ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" kind="cl" />
<module ref="26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime)" kind="cl" />
<module ref="bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)" kind="cl" />
<module ref="a5478664-6b44-4c62-a9f7-434f8aa57eee(jetbrains.mps.logic.runtime)" kind="cl" />
<module ref="da80355b-a098-4248-9ec8-70d10dd7e9af(jetbrains.mps.reporting.runtime)" kind="cl" />
@ -3964,7 +3968,7 @@
<delete dir="${build.layout}" />
</target>
<target name="compileJava" depends="java.compile.jetbrains.mps.coderules.build, java.compile.jetbrains.mps.logic.runtime, java.compile.jetbrains.mps.logic, java.compile.jetbrains.mps.logic#6626732309150416985, java.compile.jetbrains.mps.logic.test, java.compile.jetbrains.mps.lang.typechecking.runtime, java.compile.jetbrains.mps.lang.typechecking, java.compile.jetbrains.mps.lang.typechecking#01, java.compile.jetbrains.mps.coderules.typechecking, java.compile.jetbrains.mps.lang.smodel.types, java.compile.jetbrains.mps.lang.smodel.types#7345257067587611144, java.compile.jetbrains.mps.coderules.typechecking.ui, java.compile.jetbrains.mps.typechecking.annotation, java.compile.jetbrains.mps.typechecking.testlang, java.compile.jetbrains.mps.typechecking.testlang#3575255234175341581, java.compile.jetbrains.mps.coderules.typechecking.testlang.sandbox, java.compile.jetbrains.mps.coderules.typechecking.test, java.compile.jetbrains.mps.lang.controlflow.runtime, java.compile.jetbrains.mps.lang.controlflow, java.compile.jetbrains.mps.lang.controlflow#01, java.compile.jetbrains.mps.controlflow, java.compile.jetbrains.mps.controlflow.ui, java.compile.jetbrains.mps.lang.coderules, java.compile.jetbrains.mps.lang.coderules#4578927328670739933, java.compile.jetbrains.mps.lang.coderules.template, java.compile.jetbrains.mps.lang.coderules.runtime, java.compile.jetbrains.mps.coderules, java.compile.jetbrains.mps.coderules.ui, java.compile.jetbrains.mps.reporting.runtime, java.compile.jetbrains.mps.coderules.test" />
<target name="compileJava" depends="java.compile.jetbrains.mps.coderules.build, java.compile.jetbrains.mps.logic.runtime, java.compile.jetbrains.mps.logic, java.compile.jetbrains.mps.logic#6626732309150416985, java.compile.jetbrains.mps.logic.test, java.compile.jetbrains.mps.lang.typechecking.runtime, java.compile.jetbrains.mps.lang.typechecking, java.compile.jetbrains.mps.lang.typechecking#01, java.compile.jetbrains.mps.coderules.typechecking, java.compile.jetbrains.mps.lang.smodel.types, java.compile.jetbrains.mps.lang.smodel.types#7345257067587611144, java.compile.jetbrains.mps.coderules.typechecking.ui, java.compile.jetbrains.mps.typechecking.annotation, java.compile.jetbrains.mps.typechecking.testlang, java.compile.jetbrains.mps.typechecking.testlang#3575255234175341581, java.compile.jetbrains.mps.coderules.typechecking.testlang.sandbox, java.compile.jetbrains.mps.coderules.typechecking.test, java.compile.jetbrains.mps.lang.controlflow.runtime, java.compile.jetbrains.mps.lang.controlflow, java.compile.jetbrains.mps.lang.controlflow#01, java.compile.jetbrains.mps.controlflow, java.compile.jetbrains.mps.controlflow.ui, java.compile.jetbrains.mps.lang.coderules, java.compile.jetbrains.mps.lang.coderules#4578927328670739933, java.compile.java.modules.cycle.1, java.compile.jetbrains.mps.lang.coderules.template, java.compile.jetbrains.mps.lang.coderules.runtime, java.compile.jetbrains.mps.coderules, java.compile.jetbrains.mps.coderules.ui, java.compile.jetbrains.mps.reporting.runtime, java.compile.jetbrains.mps.coderules.test" />
<target name="processResources" />
@ -4118,7 +4122,6 @@
<module file="${basedir}/coderules/solutions/jetbrains.mps.controlflow/jetbrains.mps.controlflow.msd" />
<module file="${basedir}/coderules/solutions/jetbrains.mps.controlflow.ui/jetbrains.mps.controlflow.ui.msd" />
<module file="${basedir}/coderules/languages/jetbrains.mps.lang.coderules/jetbrains.mps.lang.coderules.mpl" />
<module file="${basedir}/coderules/languages/jetbrains.mps.lang.coderules/runtime/jetbrains.mps.lang.coderules.runtime.msd" />
<module file="${basedir}/coderules/languages/jetbrains.mps.lang.controlflow/jetbrains.mps.lang.controlflow.mpl" />
<module file="${basedir}/coderules/solutions/jetbrains.mps.lang.controlflow.runtime/jetbrains.mps.lang.controlflow.runtime.msd" />
<module file="${basedir}/coderules/languages/jetbrains.mps.lang.typechecking/jetbrains.mps.lang.typechecking.mpl" />
@ -5514,7 +5517,48 @@
</javac>
</target>
<target name="java.compile.jetbrains.mps.lang.coderules.template" depends="java.compile.jetbrains.mps.logic.runtime, java.compile.jetbrains.mps.reporting.runtime, fetchDependencies">
<target name="java.compile.java.modules.cycle.1" depends="java.compile.jetbrains.mps.logic.runtime, java.compile.jetbrains.mps.reporting.runtime, fetchDependencies">
<mkdir dir="${build.tmp}/java.modules.cycle.1" />
<javac destdir="${build.tmp}/java.modules.cycle.1" fork="true" encoding="utf8" nowarn="true" includeantruntime="false">
<compilerarg value="-Xlint:none" />
<src>
<path location="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.lang.coderules.template/source_gen" />
<path location="${mps.macro.coderules_home}/coderules/languages/jetbrains.mps.lang.coderules/runtime/source_gen" />
</src>
<classpath>
<fileset file="${artifacts.mps}/lib/mps-core.jar" />
<fileset file="${artifacts.mps}/lib/mps-annotations.jar" />
<fileset file="${artifacts.mps}/lib/mps-generator.jar" />
<fileset file="${artifacts.mps}/lib/mps-openapi.jar" />
<fileset file="${artifacts.mps}/lib/mps-logging.jar" />
<fileset file="${artifacts.mps}/lib/mps-closures.jar" />
<fileset file="${artifacts.mps}/lib/mps-collections.jar" />
<fileset file="${artifacts.mps}/lib/mps-tuples.jar" />
<fileset file="${artifacts.mps}/lib/mps-references.jar" />
<fileset file="${artifacts.mps}/lib/mps-behavior-api.jar" />
<fileset file="${artifacts.mps}/lib/mps-behavior-runtime.jar" />
<fileset file="${artifacts.mps}/lib/mps-messaging.jar" />
<fileset file="${artifacts.mps}/lib/mps-persistence.jar" />
<fileset file="${artifacts.mps}/lib/mps-project-check.jar" />
<fileset file="${artifacts.mps}/lib/mps-textgen.jar" />
<fileset file="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.logic.reactor/lib/collection-0.7.jar" />
<fileset file="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.logic.reactor/lib/trove4j-3.0.3.jar" />
<fileset file="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.logic.reactor/lib/conreactor-core-0.9.10.jar" />
<fileset file="${artifacts.mps}/lib/annotations.jar" />
<fileset file="${artifacts.mps}/lib/log4j.jar" />
<fileset file="${artifacts.mps}/lib/jdom.jar" />
<fileset file="${artifacts.mps}/lib/trove4j.jar" />
<fileset file="${artifacts.mps}/lib/ecj-4.10.jar" />
<fileset file="${artifacts.mps}/languages/baseLanguage/jetbrains.mps.baseLanguage.logging.runtime.jar" />
<fileset file="${artifacts.mps}/languages/baseLanguage/jetbrains.mps.baseLanguage.regexp.runtime.jar" />
<fileset file="${artifacts.mps}/languages/languageDesign/jetbrains.mps.lang.core.jar" />
<pathelement path="${build.tmp}/java/out/jetbrains.mps.logic.runtime" />
<pathelement path="${build.tmp}/java/out/jetbrains.mps.reporting.runtime" />
</classpath>
</javac>
</target>
<target name="java.compile.jetbrains.mps.lang.coderules.template" depends="java.compile.jetbrains.mps.logic.runtime, java.compile.jetbrains.mps.reporting.runtime, java.compile.java.modules.cycle.1, fetchDependencies">
<mkdir dir="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.lang.coderules.template/source_gen" />
<mkdir dir="${build.tmp}/java/out/jetbrains.mps.lang.coderules.template" />
<javac destdir="${build.tmp}/java/out/jetbrains.mps.lang.coderules.template" fork="true" encoding="utf8" includeantruntime="false" debug="true">
@ -5555,11 +5599,12 @@
<fileset file="${artifacts.mps}/lib/ecj-4.10.jar" />
<fileset file="${artifacts.mps}/languages/baseLanguage/jetbrains.mps.baseLanguage.logging.runtime.jar" />
<fileset file="${artifacts.mps}/languages/baseLanguage/jetbrains.mps.baseLanguage.regexp.runtime.jar" />
<pathelement path="${build.tmp}/java.modules.cycle.1" />
</classpath>
</javac>
</target>
<target name="java.compile.jetbrains.mps.lang.coderules.runtime" depends="java.compile.jetbrains.mps.lang.coderules.template, java.compile.jetbrains.mps.logic.runtime, java.compile.jetbrains.mps.reporting.runtime, fetchDependencies">
<target name="java.compile.jetbrains.mps.lang.coderules.runtime" depends="java.compile.jetbrains.mps.logic.runtime, java.compile.jetbrains.mps.reporting.runtime, java.compile.java.modules.cycle.1, fetchDependencies">
<mkdir dir="${mps.macro.coderules_home}/coderules/languages/jetbrains.mps.lang.coderules/runtime/source_gen" />
<mkdir dir="${build.tmp}/java/out/jetbrains.mps.lang.coderules.runtime" />
<javac destdir="${build.tmp}/java/out/jetbrains.mps.lang.coderules.runtime" fork="true" encoding="utf8" includeantruntime="false" debug="true">
@ -5588,7 +5633,6 @@
<fileset file="${artifacts.mps}/lib/mps-persistence.jar" />
<fileset file="${artifacts.mps}/lib/mps-project-check.jar" />
<fileset file="${artifacts.mps}/lib/mps-textgen.jar" />
<pathelement path="${build.tmp}/java/out/jetbrains.mps.lang.coderules.template" />
<pathelement path="${build.tmp}/java/out/jetbrains.mps.logic.runtime" />
<pathelement path="${build.tmp}/java/out/jetbrains.mps.reporting.runtime" />
<fileset file="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.logic.reactor/lib/collection-0.7.jar" />
@ -5602,6 +5646,7 @@
<fileset file="${artifacts.mps}/languages/baseLanguage/jetbrains.mps.baseLanguage.logging.runtime.jar" />
<fileset file="${artifacts.mps}/languages/baseLanguage/jetbrains.mps.baseLanguage.regexp.runtime.jar" />
<fileset file="${artifacts.mps}/languages/languageDesign/jetbrains.mps.lang.core.jar" />
<pathelement path="${build.tmp}/java.modules.cycle.1" />
</classpath>
</javac>
</target>
@ -6046,7 +6091,6 @@
<delete dir="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.controlflow.ui/source_gen" />
<delete dir="${mps.macro.coderules_home}/coderules/languages/jetbrains.mps.lang.coderules/source_gen" />
<delete dir="${mps.macro.coderules_home}/coderules/languages/jetbrains.mps.lang.coderules/generator/source_gen" />
<delete dir="${mps.macro.coderules_home}/coderules/languages/jetbrains.mps.lang.coderules/runtime/source_gen" />
<delete dir="${mps.macro.coderules_home}/coderules/languages/jetbrains.mps.lang.controlflow/source_gen" />
<delete dir="${mps.macro.coderules_home}/coderules/languages/jetbrains.mps.lang.controlflow/generator/source_gen" />
<delete dir="${mps.macro.coderules_home}/coderules/solutions/jetbrains.mps.lang.controlflow.runtime/source_gen" />

View File

@ -113,6 +113,9 @@
<child id="1081256993305" name="classType" index="2ZW6by" />
<child id="1081256993304" name="leftExpression" index="2ZW6bz" />
</concept>
<concept id="1070533707846" name="jetbrains.mps.baseLanguage.structure.StaticFieldReference" flags="nn" index="10M0yZ">
<reference id="1144433057691" name="classifier" index="1PxDUh" />
</concept>
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
<concept id="1070534370425" name="jetbrains.mps.baseLanguage.structure.IntegerType" flags="in" index="10Oyi0" />
<concept id="1070534644030" name="jetbrains.mps.baseLanguage.structure.BooleanType" flags="in" index="10P_77" />
@ -5068,6 +5071,21 @@
</node>
</node>
</node>
<node concept="2tJIrI" id="2WtKs4tZeNt" role="jymVt" />
<node concept="3clFb_" id="2WtKs4tZfgb" role="jymVt">
<property role="TrG5h" value="programSpec" />
<node concept="3clFbS" id="2WtKs4tZfge" role="3clF47">
<node concept="3clFbF" id="2WtKs4tZfSn" role="3cqZAp">
<node concept="37vLTw" id="2WtKs4tZfSm" role="3clFbG">
<ref role="3cqZAo" node="2WtKs4tZfH3" resolve="programSpec" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="2WtKs4tZf7R" role="1B3o_S" />
<node concept="3uibUv" id="2WtKs4tZffh" role="3clF45">
<ref role="3uigEE" to="av0y:~IncrementalProgramSpec" resolve="IncrementalProgramSpec" />
</node>
</node>
<node concept="2tJIrI" id="72RDgIN45M_" role="jymVt" />
<node concept="3clFb_" id="7DvO2M9VeMb" role="jymVt">
<property role="TrG5h" value="init" />
@ -5118,7 +5136,16 @@
</node>
</node>
</node>
<node concept="3clFbH" id="7P_FdVPGUJh" role="3cqZAp" />
<node concept="3cpWs8" id="2WtKs4u1jqB" role="3cqZAp">
<node concept="3cpWsn" id="2WtKs4u1jqC" role="3cpWs9">
<property role="TrG5h" value="mergedAnalysis" />
<node concept="3uibUv" id="2WtKs4u1jqD" role="1tU5fm">
<ref role="3uigEE" to="xnrr:1H_6AUSXnyk" resolve="ProgramAnalysis" />
</node>
<node concept="10Nm6u" id="2WtKs4u1jV7" role="33vP2m" />
</node>
</node>
<node concept="3clFbH" id="2WtKs4tZiYW" role="3cqZAp" />
<node concept="2Gpval" id="NKt6yoTa7y" role="3cqZAp">
<node concept="3clFbS" id="6UWSvq5d00n" role="2LFqv$">
<node concept="3cpWs8" id="7wfdmjRl1_C" role="3cqZAp">
@ -5190,6 +5217,54 @@
</node>
</node>
</node>
<node concept="3clFbH" id="2WtKs4u1jyY" role="3cqZAp" />
<node concept="3clFbJ" id="2WtKs4u1jzV" role="3cqZAp">
<node concept="3clFbS" id="2WtKs4u1jzX" role="3clFbx">
<node concept="3clFbF" id="2WtKs4u1kj3" role="3cqZAp">
<node concept="2OqwBi" id="2WtKs4u1kpF" role="3clFbG">
<node concept="37vLTw" id="2WtKs4u1kj2" role="2Oq$k0">
<ref role="3cqZAo" node="2WtKs4u1jqC" resolve="mergedAnalysis" />
</node>
<node concept="liA8E" id="2WtKs4u1kvN" role="2OqNvi">
<ref role="37wK5l" to="xnrr:2WtKs4tZgH_" resolve="merge" />
<node concept="2OqwBi" id="2WtKs4u1kCq" role="37wK5m">
<node concept="37vLTw" id="2WtKs4u1kxn" role="2Oq$k0">
<ref role="3cqZAo" node="7wfdmjRl43a" resolve="ruleManifest" />
</node>
<node concept="liA8E" id="2WtKs4u1kIK" role="2OqNvi">
<ref role="37wK5l" to="i348:2WtKs4tZlCC" resolve="analyses" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3y3z36" id="2WtKs4u1jSW" role="3clFbw">
<node concept="37vLTw" id="2WtKs4u1j_i" role="3uHU7B">
<ref role="3cqZAo" node="2WtKs4u1jqC" resolve="mergedAnalysis" />
</node>
<node concept="10Nm6u" id="2WtKs4u1jRd" role="3uHU7w" />
</node>
<node concept="9aQIb" id="2WtKs4u1jW_" role="9aQIa">
<node concept="3clFbS" id="2WtKs4u1jWA" role="9aQI4">
<node concept="3clFbF" id="2WtKs4u1jXs" role="3cqZAp">
<node concept="37vLTI" id="2WtKs4u1k3Z" role="3clFbG">
<node concept="2OqwBi" id="2WtKs4u1kaX" role="37vLTx">
<node concept="37vLTw" id="2WtKs4u1k5c" role="2Oq$k0">
<ref role="3cqZAo" node="7wfdmjRl43a" resolve="ruleManifest" />
</node>
<node concept="liA8E" id="2WtKs4u1kho" role="2OqNvi">
<ref role="37wK5l" to="i348:2WtKs4tZlCC" resolve="analyses" />
</node>
</node>
<node concept="37vLTw" id="2WtKs4u1jXr" role="37vLTJ">
<ref role="3cqZAo" node="2WtKs4u1jqC" resolve="mergedAnalysis" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3y3z36" id="7wfdmjRl4B5" role="3clFbw">
<node concept="10Nm6u" id="7wfdmjRl4Dc" role="3uHU7w" />
@ -5261,6 +5336,70 @@
</node>
</node>
</node>
<node concept="3clFbH" id="2WtKs4u1mzB" role="3cqZAp" />
<node concept="3clFbJ" id="2WtKs4u1nt5" role="3cqZAp">
<node concept="3clFbS" id="2WtKs4u1nt7" role="3clFbx">
<node concept="3clFbF" id="2WtKs4u1mLl" role="3cqZAp">
<node concept="37vLTI" id="2WtKs4u1nfd" role="3clFbG">
<node concept="2OqwBi" id="2WtKs4u1mXZ" role="37vLTJ">
<node concept="Xjq3P" id="2WtKs4u1mLj" role="2Oq$k0" />
<node concept="2OwXpG" id="2WtKs4u1n6f" role="2OqNvi">
<ref role="2Oxat5" node="2WtKs4tZfH3" resolve="programSpec" />
</node>
</node>
<node concept="2OqwBi" id="3L0F0kb7Bhp" role="37vLTx">
<node concept="1eOMI4" id="3L0F0kb7B9m" role="2Oq$k0">
<node concept="10QFUN" id="3L0F0kb7B9j" role="1eOMHV">
<node concept="3uibUv" id="3L0F0kb7Bb4" role="10QFUM">
<ref role="3uigEE" to="xnrr:2WtKs4u1ogK" resolve="SpecProvider" />
</node>
<node concept="37vLTw" id="3L0F0kb7B7O" role="10QFUP">
<ref role="3cqZAo" node="2WtKs4u1jqC" resolve="mergedAnalysis" />
</node>
</node>
</node>
<node concept="liA8E" id="3L0F0kb7BoQ" role="2OqNvi">
<ref role="37wK5l" to="xnrr:5Ud1wlIOa8f" resolve="getSpec" />
</node>
</node>
</node>
</node>
</node>
<node concept="1Wc70l" id="6xVZN2uRxRk" role="3clFbw">
<node concept="3y3z36" id="6xVZN2uRyeB" role="3uHU7B">
<node concept="10Nm6u" id="6xVZN2uRyg5" role="3uHU7w" />
<node concept="37vLTw" id="6xVZN2uRy6m" role="3uHU7B">
<ref role="3cqZAo" node="2WtKs4u1jqC" resolve="mergedAnalysis" />
</node>
</node>
<node concept="2ZW3vV" id="2WtKs4u1nVT" role="3uHU7w">
<node concept="3uibUv" id="3L0F0kb7A0K" role="2ZW6by">
<ref role="3uigEE" to="xnrr:2WtKs4u1ogK" resolve="SpecProvider" />
</node>
<node concept="37vLTw" id="2WtKs4u1n$7" role="2ZW6bz">
<ref role="3cqZAo" node="2WtKs4u1jqC" resolve="mergedAnalysis" />
</node>
</node>
</node>
<node concept="9aQIb" id="3L0F0kb7BrZ" role="9aQIa">
<node concept="3clFbS" id="3L0F0kb7Bs0" role="9aQI4">
<node concept="3clFbF" id="3L0F0kb7BuE" role="3cqZAp">
<node concept="37vLTI" id="3L0F0kb7BNQ" role="3clFbG">
<node concept="10M0yZ" id="3L0F0kb7BSR" role="37vLTx">
<ref role="3cqZAo" to="av0y:~IncrementalProgramSpec.DefaultSpec" resolve="DefaultSpec" />
<ref role="1PxDUh" to="av0y:~IncrementalProgramSpec" resolve="IncrementalProgramSpec" />
</node>
<node concept="2OqwBi" id="3L0F0kb7B$N" role="37vLTJ">
<node concept="Xjq3P" id="3L0F0kb7BuD" role="2Oq$k0" />
<node concept="2OwXpG" id="3L0F0kb7BFy" role="2OqNvi">
<ref role="2Oxat5" node="2WtKs4tZfH3" resolve="programSpec" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="6UWSvq5b6xS" role="jymVt" />
@ -5294,6 +5433,14 @@
<ref role="3uigEE" to="lui2:~SRepository" resolve="SRepository" />
</node>
</node>
<node concept="2tJIrI" id="2WtKs4tZfnT" role="jymVt" />
<node concept="312cEg" id="2WtKs4tZfH3" role="jymVt">
<property role="TrG5h" value="programSpec" />
<node concept="3Tm6S6" id="2WtKs4tZf$D" role="1B3o_S" />
<node concept="3uibUv" id="2WtKs4tZfG8" role="1tU5fm">
<ref role="3uigEE" to="av0y:~IncrementalProgramSpec" resolve="IncrementalProgramSpec" />
</node>
</node>
<node concept="2tJIrI" id="7P_FdVPFLhr" role="jymVt" />
<node concept="3Tm1VV" id="CGeqIk8WWV" role="1B3o_S" />
</node>
@ -5565,9 +5712,23 @@
<node concept="3clFb_" id="1H_6AUT8p2f" role="jymVt">
<property role="TrG5h" value="getProgramSpec" />
<node concept="3clFbS" id="1H_6AUT8p2i" role="3clF47">
<node concept="3clFbF" id="1H_6AUT8pBS" role="3cqZAp">
<node concept="37vLTw" id="1H_6AUT8pBR" role="3clFbG">
<ref role="3cqZAo" node="1H_6AUT4rkj" resolve="programSpec" />
<node concept="1X3_iC" id="3L0F0kb7I2W" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
<node concept="3clFbF" id="1H_6AUT8pBS" role="8Wnug">
<node concept="37vLTw" id="1H_6AUT8pBR" role="3clFbG">
<ref role="3cqZAo" node="1H_6AUT4rkj" resolve="programSpec" />
</node>
</node>
</node>
<node concept="3clFbF" id="3L0F0kb7I5C" role="3cqZAp">
<node concept="2OqwBi" id="3L0F0kb7IfV" role="3clFbG">
<node concept="37vLTw" id="3L0F0kb7I5A" role="2Oq$k0">
<ref role="3cqZAo" node="7WKNeR9bpBf" resolve="ruleProcessingSession" />
</node>
<node concept="liA8E" id="3L0F0kb7LCU" role="2OqNvi">
<ref role="37wK5l" node="2WtKs4tZfgb" resolve="programSpec" />
</node>
</node>
</node>
</node>
@ -5866,67 +6027,83 @@
</node>
</node>
<node concept="3clFbH" id="1H_6AUT4mqH" role="3cqZAp" />
<node concept="3clFbF" id="tyIfzBDnff" role="3cqZAp">
<node concept="37vLTI" id="tyIfzBDnIs" role="3clFbG">
<node concept="2OqwBi" id="tyIfzBDnqF" role="37vLTJ">
<node concept="Xjq3P" id="tyIfzBDnfd" role="2Oq$k0" />
<node concept="2OwXpG" id="tyIfzBDn_M" role="2OqNvi">
<ref role="2Oxat5" node="tyIfzBDjPX" resolve="programGenInfo" />
<node concept="1X3_iC" id="3L0F0kb7G9O" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
<node concept="3clFbF" id="tyIfzBDnff" role="8Wnug">
<node concept="37vLTI" id="tyIfzBDnIs" role="3clFbG">
<node concept="2OqwBi" id="tyIfzBDnqF" role="37vLTJ">
<node concept="Xjq3P" id="tyIfzBDnfd" role="2Oq$k0" />
<node concept="2OwXpG" id="tyIfzBDn_M" role="2OqNvi">
<ref role="2Oxat5" node="tyIfzBDjPX" resolve="programGenInfo" />
</node>
</node>
</node>
<node concept="2OqwBi" id="1H_6AUT4lei" role="37vLTx">
<node concept="37vLTw" id="1H_6AUT4l2S" role="2Oq$k0">
<ref role="3cqZAo" node="1H_6AUSGoq4" resolve="analysisInfoBuilder" />
</node>
<node concept="liA8E" id="1H_6AUT4lvB" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1H_6AUSUuKh" resolve="toInfo" />
<node concept="37vLTw" id="1H_6AUT4ly_" role="37wK5m">
<ref role="3cqZAo" node="1pPth$lE8Xs" resolve="program" />
<node concept="2OqwBi" id="1H_6AUT4lei" role="37vLTx">
<node concept="37vLTw" id="1H_6AUT4l2S" role="2Oq$k0">
<ref role="3cqZAo" node="1H_6AUSGoq4" resolve="analysisInfoBuilder" />
</node>
<node concept="liA8E" id="1H_6AUT4lvB" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1H_6AUSUuKh" resolve="toInfo" />
<node concept="37vLTw" id="1H_6AUT4ly_" role="37wK5m">
<ref role="3cqZAo" node="1pPth$lE8Xs" resolve="program" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="1H_6AUT4lKd" role="3cqZAp">
<node concept="3cpWsn" id="1H_6AUT4lKe" role="3cpWs9">
<property role="TrG5h" value="principalsAnalysis" />
<node concept="3uibUv" id="1H_6AUT4lKf" role="1tU5fm">
<ref role="3uigEE" to="xnrr:1H_6AUT0m_J" resolve="SimpleProgramAnalysis" />
</node>
<node concept="2ShNRf" id="1H_6AUT4lOu" role="33vP2m">
<node concept="1pGfFk" id="1H_6AUT4m0i" role="2ShVmc">
<ref role="37wK5l" to="xnrr:1H_6AUSTUb0" resolve="SimpleProgramAnalysis" />
<node concept="37vLTw" id="tyIfzBDnQl" role="37wK5m">
<ref role="3cqZAo" node="tyIfzBDjPX" resolve="programGenInfo" />
<node concept="1X3_iC" id="3L0F0kb7Gij" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
<node concept="3cpWs8" id="1H_6AUT4lKd" role="8Wnug">
<node concept="3cpWsn" id="1H_6AUT4lKe" role="3cpWs9">
<property role="TrG5h" value="principalsAnalysis" />
<node concept="3uibUv" id="1H_6AUT4lKf" role="1tU5fm">
<ref role="3uigEE" to="xnrr:1H_6AUT0m_J" resolve="SimpleProgramAnalysis" />
</node>
<node concept="2ShNRf" id="1H_6AUT4lOu" role="33vP2m">
<node concept="1pGfFk" id="1H_6AUT4m0i" role="2ShVmc">
<ref role="37wK5l" to="xnrr:1H_6AUSTUb0" resolve="SimpleProgramAnalysis" />
<node concept="37vLTw" id="tyIfzBDnQl" role="37wK5m">
<ref role="3cqZAo" node="tyIfzBDjPX" resolve="programGenInfo" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4VntlICmPDO" role="3cqZAp">
<node concept="2OqwBi" id="4VntlICmPYp" role="3clFbG">
<node concept="37vLTw" id="4VntlICmPDM" role="2Oq$k0">
<ref role="3cqZAo" node="1H_6AUT4lKe" resolve="principalsAnalysis" />
</node>
<node concept="liA8E" id="4VntlICmQjr" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1H_6AUSXuxC" resolve="run" />
</node>
</node>
</node>
<node concept="3clFbF" id="1H_6AUT4rSx" role="3cqZAp">
<node concept="37vLTI" id="1H_6AUT4sig" role="3clFbG">
<node concept="2OqwBi" id="1tFmpKdRMCJ" role="37vLTx">
<node concept="37vLTw" id="1tFmpKdRMp4" role="2Oq$k0">
<node concept="1X3_iC" id="3L0F0kb7GmY" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
<node concept="3clFbF" id="4VntlICmPDO" role="8Wnug">
<node concept="2OqwBi" id="4VntlICmPYp" role="3clFbG">
<node concept="37vLTw" id="4VntlICmPDM" role="2Oq$k0">
<ref role="3cqZAo" node="1H_6AUT4lKe" resolve="principalsAnalysis" />
</node>
<node concept="liA8E" id="1tFmpKdRMSx" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1tFmpKdQTMg" resolve="getSpec" />
<node concept="liA8E" id="4VntlICmQjr" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1H_6AUSXuxC" resolve="run" />
</node>
</node>
<node concept="2OqwBi" id="1H_6AUT4s3h" role="37vLTJ">
<node concept="Xjq3P" id="1H_6AUT4rSv" role="2Oq$k0" />
<node concept="2OwXpG" id="1H_6AUT4s9w" role="2OqNvi">
<ref role="2Oxat5" node="1H_6AUT4rkj" resolve="programSpec" />
</node>
</node>
<node concept="1X3_iC" id="3L0F0kb7GZE" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
<node concept="3clFbF" id="1H_6AUT4rSx" role="8Wnug">
<node concept="37vLTI" id="1H_6AUT4sig" role="3clFbG">
<node concept="2OqwBi" id="1tFmpKdRMCJ" role="37vLTx">
<node concept="37vLTw" id="1tFmpKdRMp4" role="2Oq$k0">
<ref role="3cqZAo" node="1H_6AUT4lKe" resolve="principalsAnalysis" />
</node>
<node concept="liA8E" id="1tFmpKdRMSx" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1tFmpKdQTMg" resolve="getSpec" />
</node>
</node>
<node concept="2OqwBi" id="1H_6AUT4s3h" role="37vLTJ">
<node concept="Xjq3P" id="1H_6AUT4rSv" role="2Oq$k0" />
<node concept="2OwXpG" id="1H_6AUT4s9w" role="2OqNvi">
<ref role="2Oxat5" node="1H_6AUT4rkj" resolve="programSpec" />
</node>
</node>
</node>
</node>

View File

@ -66,6 +66,9 @@
<concept id="1081236700937" name="jetbrains.mps.baseLanguage.structure.StaticMethodCall" flags="nn" index="2YIFZM">
<reference id="1144433194310" name="classConcept" index="1Pybhc" />
</concept>
<concept id="1164991038168" name="jetbrains.mps.baseLanguage.structure.ThrowStatement" flags="nn" index="YS8fn">
<child id="1164991057263" name="throwable" index="YScLw" />
</concept>
<concept id="1081256982272" name="jetbrains.mps.baseLanguage.structure.InstanceOfExpression" flags="nn" index="2ZW3vV">
<child id="1081256993305" name="classType" index="2ZW6by" />
<child id="1081256993304" name="leftExpression" index="2ZW6bz" />
@ -157,6 +160,9 @@
<concept id="1081516740877" name="jetbrains.mps.baseLanguage.structure.NotExpression" flags="nn" index="3fqX7Q">
<child id="1081516765348" name="expression" index="3fr31v" />
</concept>
<concept id="1154542696413" name="jetbrains.mps.baseLanguage.structure.ArrayCreatorWithInitializer" flags="nn" index="3g6Rrh">
<child id="1154542793668" name="componentType" index="3g7fb8" />
</concept>
<concept id="1204053956946" name="jetbrains.mps.baseLanguage.structure.IMethodCall" flags="ng" index="1ndlxa">
<reference id="1068499141037" name="baseMethodDeclaration" index="37wK5l" />
<child id="1068499141038" name="actualArgument" index="37wK5m" />
@ -182,7 +188,9 @@
<concept id="1178549954367" name="jetbrains.mps.baseLanguage.structure.IVisible" flags="ng" index="1B3ioH">
<child id="1178549979242" name="visibility" index="1B3o_S" />
</concept>
<concept id="1107796713796" name="jetbrains.mps.baseLanguage.structure.Interface" flags="ig" index="3HP615" />
<concept id="1107796713796" name="jetbrains.mps.baseLanguage.structure.Interface" flags="ig" index="3HP615">
<child id="1107797138135" name="extendedInterface" index="3HQHJm" />
</concept>
<concept id="1082113931046" name="jetbrains.mps.baseLanguage.structure.ContinueStatement" flags="nn" index="3N13vt" />
<concept id="6329021646629104954" name="jetbrains.mps.baseLanguage.structure.SingleLineComment" flags="nn" index="3SKdUt">
<child id="1350122676458893092" name="text" index="3ndbpf" />
@ -312,6 +320,30 @@
</node>
</node>
<node concept="2tJIrI" id="1H_6AUSXnCW" role="jymVt" />
<node concept="3clFbW" id="7m2UX3UItlq" role="jymVt">
<node concept="3cqZAl" id="7m2UX3UItls" role="3clF45" />
<node concept="3Tm1VV" id="7m2UX3UItlt" role="1B3o_S" />
<node concept="3clFbS" id="7m2UX3UItlu" role="3clF47">
<node concept="3clFbF" id="7m2UX3UIxzN" role="3cqZAp">
<node concept="37vLTI" id="7m2UX3UIya1" role="3clFbG">
<node concept="2ShNRf" id="7m2UX3UIyoU" role="37vLTx">
<node concept="3g6Rrh" id="7m2UX3UI_FU" role="2ShVmc">
<node concept="3uibUv" id="7m2UX3UI_8d" role="3g7fb8">
<ref role="3uigEE" node="1H_6AUSXnyk" resolve="ProgramAnalysis" />
</node>
</node>
</node>
<node concept="2OqwBi" id="7m2UX3UIxC9" role="37vLTJ">
<node concept="Xjq3P" id="7m2UX3UIxzM" role="2Oq$k0" />
<node concept="2OwXpG" id="7m2UX3UIxT8" role="2OqNvi">
<ref role="2Oxat5" node="1H_6AUSXtEt" resolve="deps" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="7m2UX3UIqI3" role="jymVt" />
<node concept="3clFbW" id="1H_6AUSXnzy" role="jymVt">
<node concept="37vLTG" id="1H_6AUSXnzW" role="3clF46">
<property role="TrG5h" value="deps" />
@ -438,6 +470,47 @@
<node concept="3Tm1VV" id="1H_6AUSXuvw" role="1B3o_S" />
<node concept="3cqZAl" id="1H_6AUSXuzU" role="3clF45" />
</node>
<node concept="2tJIrI" id="2WtKs4tZgpN" role="jymVt" />
<node concept="3clFb_" id="2WtKs4tZgH_" role="jymVt">
<property role="TrG5h" value="merge" />
<property role="DiZV1" value="true" />
<node concept="37vLTG" id="2WtKs4tZgNL" role="3clF46">
<property role="TrG5h" value="other" />
<node concept="3uibUv" id="2WtKs4tZgSA" role="1tU5fm">
<ref role="3uigEE" node="1H_6AUSXnyk" resolve="ProgramAnalysis" />
</node>
</node>
<node concept="3clFbS" id="2WtKs4tZgHC" role="3clF47">
<node concept="3clFbF" id="2WtKs4tZZOo" role="3cqZAp">
<node concept="1Wc70l" id="2WtKs4u00VF" role="3clFbG">
<node concept="1rXfSq" id="2WtKs4u011L" role="3uHU7w">
<ref role="37wK5l" node="2WtKs4tZha6" resolve="doMerge" />
<node concept="37vLTw" id="2WtKs4u0168" role="37wK5m">
<ref role="3cqZAo" node="2WtKs4tZgNL" resolve="other" />
</node>
</node>
<node concept="1Wc70l" id="2WtKs4u00ir" role="3uHU7B">
<node concept="2OqwBi" id="2WtKs4tZZZX" role="3uHU7B">
<node concept="Xjq3P" id="2WtKs4tZZOm" role="2Oq$k0" />
<node concept="liA8E" id="2WtKs4u00au" role="2OqNvi">
<ref role="37wK5l" node="1H_6AUSXudJ" resolve="isRun" />
</node>
</node>
<node concept="2OqwBi" id="2WtKs4u00tG" role="3uHU7w">
<node concept="37vLTw" id="2WtKs4u00n$" role="2Oq$k0">
<ref role="3cqZAo" node="2WtKs4tZgNL" resolve="other" />
</node>
<node concept="liA8E" id="2WtKs4u00CD" role="2OqNvi">
<ref role="37wK5l" node="1H_6AUSXudJ" resolve="isRun" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="2WtKs4tZgBm" role="1B3o_S" />
<node concept="10P_77" id="2WtKs4tZLsM" role="3clF45" />
</node>
<node concept="2tJIrI" id="1H_6AUSXuOE" role="jymVt" />
<node concept="3clFb_" id="1H_6AUSXuSf" role="jymVt">
<property role="1EzhhJ" value="true" />
@ -446,6 +519,20 @@
<node concept="3cqZAl" id="1H_6AUSXuWU" role="3clF45" />
<node concept="3Tmbuc" id="1H_6AUSXuYB" role="1B3o_S" />
</node>
<node concept="2tJIrI" id="2WtKs4tZgTU" role="jymVt" />
<node concept="3clFb_" id="2WtKs4tZha6" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="doMerge" />
<node concept="37vLTG" id="2WtKs4tZwEm" role="3clF46">
<property role="TrG5h" value="other" />
<node concept="3uibUv" id="2WtKs4tZwNY" role="1tU5fm">
<ref role="3uigEE" node="1H_6AUSXnyk" resolve="ProgramAnalysis" />
</node>
</node>
<node concept="3clFbS" id="2WtKs4tZha9" role="3clF47" />
<node concept="3Tmbuc" id="2WtKs4tZh3_" role="1B3o_S" />
<node concept="10P_77" id="2WtKs4tZLht" role="3clF45" />
</node>
<node concept="2tJIrI" id="1H_6AUSXu20" role="jymVt" />
<node concept="312cEg" id="1H_6AUSXu5x" role="jymVt">
<property role="TrG5h" value="isRun" />
@ -1678,6 +1765,101 @@
</node>
</node>
</node>
<node concept="2tJIrI" id="2WtKs4u0htF" role="jymVt" />
<node concept="3clFb_" id="2WtKs4tZtt5" role="jymVt">
<property role="TrG5h" value="doMerge" />
<node concept="37vLTG" id="2WtKs4tZv5Y" role="3clF46">
<property role="TrG5h" value="other" />
<node concept="3uibUv" id="2WtKs4tZwy2" role="1tU5fm">
<ref role="3uigEE" node="1H_6AUSXnyk" resolve="ProgramAnalysis" />
</node>
</node>
<node concept="3clFbS" id="2WtKs4tZtt8" role="3clF47">
<node concept="3clFbJ" id="2WtKs4tZypc" role="3cqZAp">
<node concept="3fqX7Q" id="2WtKs4tZyG0" role="3clFbw">
<node concept="2ZW3vV" id="2WtKs4tZyG2" role="3fr31v">
<node concept="3uibUv" id="2WtKs4u0E_K" role="2ZW6by">
<ref role="3uigEE" node="1H_6AUT0m_J" resolve="SimpleProgramAnalysis" />
</node>
<node concept="37vLTw" id="2WtKs4tZyG4" role="2ZW6bz">
<ref role="3cqZAo" node="2WtKs4tZv5Y" resolve="other" />
</node>
</node>
</node>
<node concept="3clFbS" id="2WtKs4tZype" role="3clFbx">
<node concept="YS8fn" id="2WtKs4tZyMt" role="3cqZAp">
<node concept="2ShNRf" id="2WtKs4tZyN2" role="YScLw">
<node concept="1pGfFk" id="2WtKs4tZzg0" role="2ShVmc">
<ref role="37wK5l" to="wyt6:~IllegalArgumentException.&lt;init&gt;()" resolve="IllegalArgumentException" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2WtKs4tZ_Si" role="3cqZAp">
<node concept="3cpWsn" id="2WtKs4tZ_Sj" role="3cpWs9">
<property role="TrG5h" value="otherAn" />
<node concept="3uibUv" id="2WtKs4u0EOm" role="1tU5fm">
<ref role="3uigEE" node="1H_6AUT0m_J" resolve="SimpleProgramAnalysis" />
</node>
<node concept="10QFUN" id="2WtKs4tZA8R" role="33vP2m">
<node concept="3uibUv" id="2WtKs4u0Gy1" role="10QFUM">
<ref role="3uigEE" node="1H_6AUT0m_J" resolve="SimpleProgramAnalysis" />
</node>
<node concept="37vLTw" id="2WtKs4tZA62" role="10QFUP">
<ref role="3cqZAo" node="2WtKs4tZv5Y" resolve="other" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2WtKs4tZB8s" role="3cqZAp" />
<node concept="3clFbF" id="2WtKs4tZzkc" role="3cqZAp">
<node concept="2OqwBi" id="2WtKs4tZ$0U" role="3clFbG">
<node concept="37vLTw" id="2WtKs4tZzka" role="2Oq$k0">
<ref role="3cqZAo" node="1H_6AUSWicQ" resolve="principalCtrs" />
</node>
<node concept="X8dFx" id="2WtKs4tZ$yH" role="2OqNvi">
<node concept="2OqwBi" id="2WtKs4tZEIy" role="25WWJ7">
<node concept="37vLTw" id="2WtKs4tZDPX" role="2Oq$k0">
<ref role="3cqZAo" node="2WtKs4tZ_Sj" resolve="otherAn" />
</node>
<node concept="2OwXpG" id="2WtKs4u0IGO" role="2OqNvi">
<ref role="2Oxat5" node="1H_6AUSWicQ" resolve="principalCtrs" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="2WtKs4tZHhV" role="3cqZAp">
<node concept="2OqwBi" id="2WtKs4tZIaI" role="3clFbG">
<node concept="37vLTw" id="2WtKs4tZHhT" role="2Oq$k0">
<ref role="3cqZAo" node="1TR62lz31TZ" resolve="principalRulesTags" />
</node>
<node concept="X8dFx" id="2WtKs4tZILh" role="2OqNvi">
<node concept="2OqwBi" id="2WtKs4tZJvP" role="25WWJ7">
<node concept="37vLTw" id="2WtKs4tZJaV" role="2Oq$k0">
<ref role="3cqZAo" node="2WtKs4tZ_Sj" resolve="otherAn" />
</node>
<node concept="2OwXpG" id="2WtKs4u0Jv$" role="2OqNvi">
<ref role="2Oxat5" node="1TR62lz31TZ" resolve="principalRulesTags" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2WtKs4tZRpw" role="3cqZAp" />
<node concept="3cpWs6" id="2WtKs4tZTeS" role="3cqZAp">
<node concept="3clFbT" id="2WtKs4tZXcv" role="3cqZAk">
<property role="3clFbU" value="true" />
</node>
</node>
</node>
<node concept="3Tmbuc" id="2WtKs4tZsdX" role="1B3o_S" />
<node concept="10P_77" id="2WtKs4tZNJw" role="3clF45" />
<node concept="2AHcQZ" id="2WtKs4tZx9n" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="1H_6AUSTS1B" role="jymVt" />
<node concept="3clFb_" id="1H_6AUSEEjh" role="jymVt">
<property role="TrG5h" value="doRun" />
@ -2700,6 +2882,9 @@
<node concept="3uibUv" id="1H_6AUT0mAj" role="1zkMxy">
<ref role="3uigEE" node="1H_6AUSXnyk" resolve="ProgramAnalysis" />
</node>
<node concept="3uibUv" id="3L0F0kb7jZx" role="EKbjA">
<ref role="3uigEE" node="2WtKs4u1ogK" resolve="SpecProvider" />
</node>
<node concept="3uibUv" id="1H_6AUT38lB" role="EKbjA">
<ref role="3uigEE" node="1H_6AUT33xC" resolve="PrincipalConstraintProvider" />
</node>
@ -2890,7 +3075,7 @@
</node>
<node concept="2tJIrI" id="1H_6AUT3la0" role="jymVt" />
<node concept="3clFb_" id="1H_6AUT3mkR" role="jymVt">
<property role="TrG5h" value="build" />
<property role="TrG5h" value="getSpec" />
<node concept="3clFbS" id="1H_6AUT3mkU" role="3clF47">
<node concept="3clFbJ" id="1H_6AUT3mz0" role="3cqZAp">
<node concept="2OqwBi" id="1H_6AUT3o4Q" role="3clFbw">
@ -2970,6 +3155,9 @@
<node concept="3uibUv" id="1H_6AUT3liW" role="3clF45">
<ref role="3uigEE" to="av0y:~IncrementalProgramSpec" resolve="IncrementalProgramSpec" />
</node>
<node concept="2AHcQZ" id="5Ud1wlIOa9K" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="1H_6AUT3jSL" role="jymVt" />
<node concept="312cEg" id="1H_6AUT3lJS" role="jymVt">
@ -2996,6 +3184,9 @@
<node concept="3Tm6S6" id="1H_6AUT3jUg" role="1B3o_S" />
</node>
<node concept="3Tm1VV" id="1H_6AUT30JF" role="1B3o_S" />
<node concept="3uibUv" id="5Ud1wlIO9Yw" role="EKbjA">
<ref role="3uigEE" node="2WtKs4u1ogK" resolve="SpecProvider" />
</node>
</node>
<node concept="312cEu" id="1H_6AUT30Sc">
<property role="TrG5h" value="ProgramChecker" />
@ -3213,8 +3404,8 @@
<node concept="37vLTw" id="1H_6AUT3yqA" role="2Oq$k0">
<ref role="3cqZAo" node="1H_6AUT3qxg" resolve="rule" />
</node>
<node concept="liA8E" id="1H_6AUT3yUY" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Rule.uniqueTag()" resolve="uniqueTag" />
<node concept="liA8E" id="6xVZN2uLgGx" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Rule.basetag()" resolve="basetag" />
</node>
</node>
</node>
@ -3245,5 +3436,46 @@
</node>
</node>
</node>
<node concept="3HP615" id="2WtKs4u1ogK">
<property role="TrG5h" value="SpecProvider" />
<node concept="3clFb_" id="5Ud1wlIOa8f" role="jymVt">
<property role="TrG5h" value="getSpec" />
<node concept="3clFbS" id="5Ud1wlIOa8i" role="3clF47" />
<node concept="3Tm1VV" id="5Ud1wlIOa8j" role="1B3o_S" />
<node concept="3uibUv" id="5Ud1wlIOa7U" role="3clF45">
<ref role="3uigEE" to="av0y:~IncrementalProgramSpec" resolve="IncrementalProgramSpec" />
</node>
</node>
<node concept="3Tm1VV" id="2WtKs4u1ogL" role="1B3o_S" />
</node>
<node concept="3HP615" id="2PLbMk5NJ$E">
<property role="TrG5h" value="BasicProgramAnalysis" />
<node concept="2tJIrI" id="2PLbMk5NKJY" role="jymVt" />
<node concept="3clFb_" id="2PLbMk5NKRF" role="jymVt">
<property role="TrG5h" value="getPrincipalCtrs" />
<node concept="3clFbS" id="2PLbMk5NKRI" role="3clF47" />
<node concept="3Tm1VV" id="2PLbMk5NKRJ" role="1B3o_S" />
<node concept="2hMVRd" id="2PLbMk5NKON" role="3clF45">
<node concept="3uibUv" id="2PLbMk5NKRC" role="2hN53Y">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
</node>
</node>
<node concept="2tJIrI" id="2PLbMk5NL10" role="jymVt" />
<node concept="3clFb_" id="2PLbMk5NLfP" role="jymVt">
<property role="TrG5h" value="getPrincipalRules" />
<node concept="3clFbS" id="2PLbMk5NLfS" role="3clF47" />
<node concept="3Tm1VV" id="2PLbMk5NLfT" role="1B3o_S" />
<node concept="2hMVRd" id="2PLbMk5NL4E" role="3clF45">
<node concept="3uibUv" id="2PLbMk5NLdN" role="2hN53Y">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="2PLbMk5NJ$F" role="1B3o_S" />
<node concept="3uibUv" id="2PLbMk5O0SG" role="3HQHJm">
<ref role="3uigEE" node="2WtKs4u1ogK" resolve="SpecProvider" />
</node>
</node>
</model>

View File

@ -2,13 +2,13 @@
<model ref="r:4f157831-48e7-4c8f-a144-b5bbd1be1539(jetbrains.mps.coderules.build)">
<persistence version="9" />
<languages>
<use id="427a473d-5177-432c-9905-bcbceb71b996" name="jetbrains.mps.build.mps.runner" version="-1" />
<use id="698a8d22-a104-47a0-ba8d-10e3ec237f13" name="jetbrains.mps.build.workflow" version="-1" />
<use id="0cf935df-4699-4e9c-a132-fa109541cba3" name="jetbrains.mps.build.mps" version="-1" />
<use id="d5033cee-f632-44b6-b308-89d4fbde34ff" name="jetbrains.mps.build.startup" version="-1" />
<use id="798100da-4f0a-421a-b991-71f8c50ce5d2" name="jetbrains.mps.build" version="-1" />
<use id="9f846aef-4e4a-4a84-828e-7e83fe2697f2" name="jetbrains.mps.build.mps.testManifest" version="-1" />
<use id="3600cb0a-44dd-4a5b-9968-22924406419e" name="jetbrains.mps.build.mps.tests" version="-1" />
<use id="427a473d-5177-432c-9905-bcbceb71b996" name="jetbrains.mps.build.mps.runner" version="0" />
<use id="698a8d22-a104-47a0-ba8d-10e3ec237f13" name="jetbrains.mps.build.workflow" version="0" />
<use id="0cf935df-4699-4e9c-a132-fa109541cba3" name="jetbrains.mps.build.mps" version="7" />
<use id="d5033cee-f632-44b6-b308-89d4fbde34ff" name="jetbrains.mps.build.startup" version="0" />
<use id="798100da-4f0a-421a-b991-71f8c50ce5d2" name="jetbrains.mps.build" version="0" />
<use id="9f846aef-4e4a-4a84-828e-7e83fe2697f2" name="jetbrains.mps.build.mps.testManifest" version="0" />
<use id="3600cb0a-44dd-4a5b-9968-22924406419e" name="jetbrains.mps.build.mps.tests" version="1" />
</languages>
<imports>
<import index="ffeo" ref="r:874d959d-e3b4-4d04-b931-ca849af130dd(jetbrains.mps.ide.build)" />
@ -1710,6 +1710,11 @@
<ref role="3bR37D" node="7BVjoXzUxoR" resolve="jetbrains.mps.logic.reactor" />
</node>
</node>
<node concept="1SiIV0" id="2Ap6smoezi" role="3bR37C">
<node concept="3bR9La" id="2Ap6smoezj" role="1SiIV1">
<ref role="3bR37D" node="7BVjoXzUxee" resolve="jetbrains.mps.lang.coderules.runtime" />
</node>
</node>
</node>
<node concept="1E1JtA" id="7BVjoXzUxee" role="2G$12L">
<property role="BnDLt" value="true" />

View File

@ -101,6 +101,7 @@
<reference id="1144433057691" name="classifier" index="1PxDUh" />
</concept>
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
<concept id="1070534370425" name="jetbrains.mps.baseLanguage.structure.IntegerType" flags="in" index="10Oyi0" />
<concept id="1070534934090" name="jetbrains.mps.baseLanguage.structure.CastExpression" flags="nn" index="10QFUN">
<child id="1070534934091" name="type" index="10QFUM" />
<child id="1070534934092" name="expression" index="10QFUP" />
@ -115,6 +116,7 @@
</concept>
<concept id="1068498886292" name="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" flags="ir" index="37vLTG" />
<concept id="1068498886294" name="jetbrains.mps.baseLanguage.structure.AssignmentExpression" flags="nn" index="37vLTI" />
<concept id="1225271177708" name="jetbrains.mps.baseLanguage.structure.StringType" flags="in" index="17QB3L" />
<concept id="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
<child id="5680397130376446158" name="type" index="1tU5fm" />
</concept>
@ -316,22 +318,11 @@
<concept id="1204796164442" name="jetbrains.mps.baseLanguage.collections.structure.InternalSequenceOperation" flags="nn" index="23sCx2">
<child id="1204796294226" name="closure" index="23t8la" />
</concept>
<concept id="540871147943773365" name="jetbrains.mps.baseLanguage.collections.structure.SingleArgumentSequenceOperation" flags="nn" index="25WWJ4">
<child id="540871147943773366" name="argument" index="25WWJ7" />
</concept>
<concept id="1204980550705" name="jetbrains.mps.baseLanguage.collections.structure.VisitAllOperation" flags="nn" index="2es0OD" />
<concept id="1226511727824" name="jetbrains.mps.baseLanguage.collections.structure.SetType" flags="in" index="2hMVRd">
<child id="1226511765987" name="elementType" index="2hN53Y" />
</concept>
<concept id="1226516258405" name="jetbrains.mps.baseLanguage.collections.structure.HashSetCreator" flags="nn" index="2i4dXS" />
<concept id="1237721394592" name="jetbrains.mps.baseLanguage.collections.structure.AbstractContainerCreator" flags="nn" index="HWqM0">
<child id="1237721435807" name="elementType" index="HW$YZ" />
</concept>
<concept id="1201306600024" name="jetbrains.mps.baseLanguage.collections.structure.ContainsKeyOperation" flags="nn" index="2Nt0df">
<child id="1201654602639" name="key" index="38cxEo" />
</concept>
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1160612413312" name="jetbrains.mps.baseLanguage.collections.structure.AddElementOperation" flags="nn" index="TSZUe" />
<concept id="1162935959151" name="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" flags="nn" index="34oBXx" />
<concept id="1197683403723" name="jetbrains.mps.baseLanguage.collections.structure.MapType" flags="in" index="3rvAFt">
<child id="1197683466920" name="keyType" index="3rvQeY" />
@ -354,6 +345,45 @@
<node concept="1lH9Xt" id="tyIfzBA5cK">
<property role="TrG5h" value="Analyses" />
<property role="3OwPAg" value="true" />
<node concept="2XrIbr" id="2PLbMk5R0rZ" role="1qtyYc">
<property role="TrG5h" value="ctr" />
<node concept="37vLTG" id="2PLbMk5R0uz" role="3clF46">
<property role="TrG5h" value="name" />
<node concept="17QB3L" id="2PLbMk5R0v0" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2PLbMk5R0vk" role="3clF46">
<property role="TrG5h" value="arity" />
<node concept="10Oyi0" id="2PLbMk5R0vP" role="1tU5fm" />
</node>
<node concept="3uibUv" id="2PLbMk5R0tG" role="3clF45">
<ref role="3uigEE" to="av0y:~Constraint" resolve="Constraint" />
</node>
<node concept="3clFbS" id="2PLbMk5R0s1" role="3clF47">
<node concept="3clFbF" id="2PLbMk5R0xR" role="3cqZAp">
<node concept="2OqwBi" id="2PLbMk5R0gI" role="3clFbG">
<node concept="2ShNRf" id="2PLbMk5QY2H" role="2Oq$k0">
<node concept="1pGfFk" id="2PLbMk5QZX8" role="2ShVmc">
<ref role="37wK5l" to="i348:4sSe4$oM2rk" resolve="ConstraintBuilder" />
<node concept="2YIFZM" id="2PLbMk5R01n" role="37wK5m">
<ref role="1Pybhc" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
<ref role="37wK5l" to="av0y:~ConstraintSymbol.symbol(java.lang.String,int)" resolve="symbol" />
<node concept="37vLTw" id="2PLbMk5RnWK" role="37wK5m">
<ref role="3cqZAo" node="2PLbMk5R0uz" resolve="name" />
</node>
<node concept="37vLTw" id="2PLbMk5Ro0g" role="37wK5m">
<ref role="3cqZAo" node="2PLbMk5R0vk" resolve="arity" />
</node>
</node>
</node>
</node>
<node concept="liA8E" id="2PLbMk5R0pP" role="2OqNvi">
<ref role="37wK5l" to="i348:4sSe4$oM2zI" resolve="toConstraint" />
</node>
</node>
</node>
</node>
<node concept="3Tm6S6" id="2PLbMk5R0zx" role="1B3o_S" />
</node>
<node concept="1LZb2c" id="tyIfzBAafK" role="1SL9yI">
<property role="TrG5h" value="principalConstraintChecker" />
<node concept="3cqZAl" id="tyIfzBAafL" role="3clF45" />
@ -745,14 +775,6 @@
<node concept="3cqZAl" id="tyIfzBA5cN" role="3clF45" />
<node concept="3clFbS" id="tyIfzBA5cO" role="3clF47">
<node concept="3clFbH" id="tyIfzBPkAU" role="3cqZAp" />
<node concept="3cpWs8" id="tyIfzBIxtH" role="3cqZAp">
<node concept="3cpWsn" id="tyIfzBIxtI" role="3cpWs9">
<property role="TrG5h" value="info" />
<node concept="3uibUv" id="tyIfzBIxtJ" role="1tU5fm">
<ref role="3uigEE" to="xnrr:1H_6AUSU96G" resolve="ProgramGenInfoBuilder.ProgramGenInfo" />
</node>
</node>
</node>
<node concept="3cpWs8" id="4VntlICnIHB" role="3cqZAp">
<node concept="3cpWsn" id="4VntlICnIHC" role="3cpWs9">
<property role="TrG5h" value="spec" />
@ -855,21 +877,6 @@
</node>
</node>
</node>
<node concept="3clFbF" id="tyIfzBILjT" role="3cqZAp">
<node concept="37vLTI" id="tyIfzBILC1" role="3clFbG">
<node concept="2OqwBi" id="tyIfzBIXVS" role="37vLTx">
<node concept="liA8E" id="tyIfzBIZQi" role="2OqNvi">
<ref role="37wK5l" to="hfva:tyIfzC3lMP" resolve="getProgramGenInfo" />
</node>
<node concept="37vLTw" id="tyIfzC4E6Y" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzC3OTC" resolve="launcher" />
</node>
</node>
<node concept="37vLTw" id="tyIfzBILjR" role="37vLTJ">
<ref role="3cqZAo" node="tyIfzBIxtI" resolve="info" />
</node>
</node>
</node>
<node concept="3clFbF" id="4VntlICnIU5" role="3cqZAp">
<node concept="37vLTI" id="4VntlICnJ3r" role="3clFbG">
<node concept="2OqwBi" id="4VntlICnLoq" role="37vLTx">
@ -894,82 +901,22 @@
</node>
</node>
</node>
<node concept="3clFbH" id="tyIfzBIkEK" role="3cqZAp" />
<node concept="3cpWs8" id="tyIfzBKNMI" role="3cqZAp">
<node concept="3cpWsn" id="tyIfzBKNMJ" role="3cpWs9">
<property role="TrG5h" value="principalCtrsAnalysis" />
<node concept="3uibUv" id="tyIfzBKNMK" role="1tU5fm">
<ref role="3uigEE" to="xnrr:1H_6AUT0m_J" resolve="SimpleProgramAnalysis" />
<node concept="3clFbH" id="tyIfzBL6FW" role="3cqZAp" />
<node concept="3vwNmj" id="2PLbMk5QW18" role="3cqZAp">
<node concept="2OqwBi" id="2PLbMk5QW9O" role="3vwVQn">
<node concept="37vLTw" id="2PLbMk5QW4C" role="2Oq$k0">
<ref role="3cqZAo" node="4VntlICnIHC" resolve="spec" />
</node>
<node concept="2ShNRf" id="tyIfzBKPxx" role="33vP2m">
<node concept="1pGfFk" id="tyIfzBKRiT" role="2ShVmc">
<ref role="37wK5l" to="xnrr:1H_6AUSTUb0" resolve="SimpleProgramAnalysis" />
<node concept="37vLTw" id="tyIfzBKRji" role="37wK5m">
<ref role="3cqZAo" node="tyIfzBIxtI" resolve="info" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="tyIfzBKUeQ" role="3cqZAp">
<node concept="2OqwBi" id="tyIfzBKUPv" role="3clFbG">
<node concept="37vLTw" id="tyIfzBKUeO" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzBKNMJ" resolve="principalCtrsAnalysis" />
</node>
<node concept="liA8E" id="tyIfzBKWAN" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1H_6AUSXuxC" resolve="run" />
</node>
</node>
</node>
<node concept="3cpWs8" id="tyIfzBL35s" role="3cqZAp">
<node concept="3cpWsn" id="tyIfzBL35v" role="3cpWs9">
<property role="TrG5h" value="principalCtrs" />
<node concept="2hMVRd" id="tyIfzBL35o" role="1tU5fm">
<node concept="3uibUv" id="tyIfzBL4y3" role="2hN53Y">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
</node>
<node concept="2OqwBi" id="tyIfzBL6fT" role="33vP2m">
<node concept="37vLTw" id="tyIfzBL61G" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzBKNMJ" resolve="principalCtrsAnalysis" />
</node>
<node concept="liA8E" id="tyIfzBL6EN" role="2OqNvi">
<ref role="37wK5l" to="xnrr:1H_6AUSWw$W" resolve="getPrincipalCtrs" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="tyIfzBLsJ0" role="3cqZAp" />
<node concept="3cpWs8" id="tyIfzBLg7S" role="3cqZAp">
<node concept="3cpWsn" id="tyIfzBLg7V" role="3cpWs9">
<property role="TrG5h" value="expectedPCtrs" />
<node concept="2hMVRd" id="tyIfzBLg7O" role="1tU5fm">
<node concept="3uibUv" id="tyIfzBLgpS" role="2hN53Y">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
</node>
<node concept="2ShNRf" id="tyIfzBLhVn" role="33vP2m">
<node concept="2i4dXS" id="tyIfzBLkEC" role="2ShVmc">
<node concept="3uibUv" id="tyIfzBLl0A" role="HW$YZ">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="tyIfzBLpyj" role="3cqZAp">
<node concept="2OqwBi" id="tyIfzBLqpt" role="3clFbG">
<node concept="37vLTw" id="tyIfzBLpyh" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzBLg7V" resolve="expectedPCtrs" />
</node>
<node concept="TSZUe" id="tyIfzBLsC8" role="2OqNvi">
<node concept="2ShNRf" id="tyIfzBLwbU" role="25WWJ7">
<node concept="1pGfFk" id="tyIfzBLyk_" role="2ShVmc">
<ref role="37wK5l" to="av0y:~ConstraintSymbol.&lt;init&gt;(java.lang.String,int)" resolve="ConstraintSymbol" />
<node concept="Xl_RD" id="tyIfzBL$eY" role="37wK5m">
<node concept="liA8E" id="2PLbMk5QWU3" role="2OqNvi">
<ref role="37wK5l" to="av0y:~IncrementalProgramSpec.isPrincipal(jetbrains.mps.logic.reactor.program.Constraint)" resolve="isPrincipal" />
<node concept="2OqwBi" id="2PLbMk5R0AT" role="37wK5m">
<node concept="2WthIp" id="2PLbMk5R0AW" role="2Oq$k0" />
<node concept="2XshWL" id="2PLbMk5R0AY" role="2OqNvi">
<ref role="2WH_rO" node="2PLbMk5R0rZ" resolve="ctr" />
<node concept="Xl_RD" id="2PLbMk5R0CH" role="2XxRq1">
<property role="Xl_RC" value="typeof" />
</node>
<node concept="3cmrfG" id="tyIfzBL_9Z" role="37wK5m">
<node concept="3cmrfG" id="2PLbMk5R0Pp" role="2XxRq1">
<property role="3cmrfH" value="2" />
</node>
</node>
@ -977,41 +924,43 @@
</node>
</node>
</node>
<node concept="3SKdUt" id="tyIfzBN$sa" role="3cqZAp">
<node concept="1PaTwC" id="tyIfzBN$sb" role="3ndbpf">
<node concept="3oM_SD" id="tyIfzBNDWg" role="1PaTwD">
<node concept="3SKdUt" id="2PLbMk5R1IT" role="3cqZAp">
<node concept="1PaTwC" id="2PLbMk5R1IU" role="3ndbpf">
<node concept="3oM_SD" id="2PLbMk5R1IV" role="1PaTwD">
<property role="3oM_SC" value="constraints" />
</node>
<node concept="3oM_SD" id="tyIfzBNDWq" role="1PaTwD">
<node concept="3oM_SD" id="2PLbMk5R1IW" role="1PaTwD">
<property role="3oM_SC" value="from" />
</node>
<node concept="3oM_SD" id="tyIfzBNDW_" role="1PaTwD">
<node concept="3oM_SD" id="2PLbMk5R1IX" role="1PaTwD">
<property role="3oM_SC" value="queries" />
</node>
<node concept="3oM_SD" id="tyIfzBNGTr" role="1PaTwD">
<node concept="3oM_SD" id="2PLbMk5R1IY" role="1PaTwD">
<property role="3oM_SC" value="are" />
</node>
<node concept="3oM_SD" id="tyIfzBNGTK" role="1PaTwD">
<node concept="3oM_SD" id="2PLbMk5R1IZ" role="1PaTwD">
<property role="3oM_SC" value="principal" />
</node>
<node concept="3oM_SD" id="tyIfzBNJQw" role="1PaTwD">
<node concept="3oM_SD" id="2PLbMk5R1J0" role="1PaTwD">
<property role="3oM_SC" value="too" />
</node>
</node>
</node>
<node concept="3clFbF" id="tyIfzBLC24" role="3cqZAp">
<node concept="2OqwBi" id="tyIfzBLC25" role="3clFbG">
<node concept="37vLTw" id="tyIfzBLC26" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzBLg7V" resolve="expectedPCtrs" />
<node concept="3vwNmj" id="2PLbMk5R0Ql" role="3cqZAp">
<node concept="2OqwBi" id="2PLbMk5R0Qm" role="3vwVQn">
<node concept="37vLTw" id="2PLbMk5R0Qn" role="2Oq$k0">
<ref role="3cqZAo" node="4VntlICnIHC" resolve="spec" />
</node>
<node concept="TSZUe" id="tyIfzBLC27" role="2OqNvi">
<node concept="2ShNRf" id="tyIfzBLC28" role="25WWJ7">
<node concept="1pGfFk" id="tyIfzBLC29" role="2ShVmc">
<ref role="37wK5l" to="av0y:~ConstraintSymbol.&lt;init&gt;(java.lang.String,int)" resolve="ConstraintSymbol" />
<node concept="Xl_RD" id="tyIfzBLC2a" role="37wK5m">
<node concept="liA8E" id="2PLbMk5R0Qo" role="2OqNvi">
<ref role="37wK5l" to="av0y:~IncrementalProgramSpec.isPrincipal(jetbrains.mps.logic.reactor.program.Constraint)" resolve="isPrincipal" />
<node concept="2OqwBi" id="2PLbMk5R0Qp" role="37wK5m">
<node concept="2WthIp" id="2PLbMk5R0Qq" role="2Oq$k0" />
<node concept="2XshWL" id="2PLbMk5R0Qr" role="2OqNvi">
<ref role="2WH_rO" node="2PLbMk5R0rZ" resolve="ctr" />
<node concept="Xl_RD" id="2PLbMk5R0Qs" role="2XxRq1">
<property role="Xl_RC" value="recover" />
</node>
<node concept="3cmrfG" id="tyIfzBM0Bg" role="37wK5m">
<node concept="3cmrfG" id="2PLbMk5R1gs" role="2XxRq1">
<property role="3cmrfH" value="0" />
</node>
</node>
@ -1041,19 +990,21 @@
</node>
</node>
</node>
<node concept="3clFbF" id="tyIfzBME_2" role="3cqZAp">
<node concept="2OqwBi" id="tyIfzBME_3" role="3clFbG">
<node concept="37vLTw" id="tyIfzBME_4" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzBLg7V" resolve="expectedPCtrs" />
<node concept="3vwNmj" id="2PLbMk5R0Uk" role="3cqZAp">
<node concept="2OqwBi" id="2PLbMk5R0Ul" role="3vwVQn">
<node concept="37vLTw" id="2PLbMk5R0Um" role="2Oq$k0">
<ref role="3cqZAo" node="4VntlICnIHC" resolve="spec" />
</node>
<node concept="TSZUe" id="tyIfzBME_5" role="2OqNvi">
<node concept="2ShNRf" id="tyIfzBME_6" role="25WWJ7">
<node concept="1pGfFk" id="tyIfzBME_7" role="2ShVmc">
<ref role="37wK5l" to="av0y:~ConstraintSymbol.&lt;init&gt;(java.lang.String,int)" resolve="ConstraintSymbol" />
<node concept="Xl_RD" id="tyIfzBME_8" role="37wK5m">
<node concept="liA8E" id="2PLbMk5R0Un" role="2OqNvi">
<ref role="37wK5l" to="av0y:~IncrementalProgramSpec.isPrincipal(jetbrains.mps.logic.reactor.program.Constraint)" resolve="isPrincipal" />
<node concept="2OqwBi" id="2PLbMk5R0Uo" role="37wK5m">
<node concept="2WthIp" id="2PLbMk5R0Up" role="2Oq$k0" />
<node concept="2XshWL" id="2PLbMk5R0Uq" role="2OqNvi">
<ref role="2WH_rO" node="2PLbMk5R0rZ" resolve="ctr" />
<node concept="Xl_RD" id="2PLbMk5R0Ur" role="2XxRq1">
<property role="Xl_RC" value="main" />
</node>
<node concept="3cmrfG" id="tyIfzBME_9" role="37wK5m">
<node concept="3cmrfG" id="2PLbMk5R1j8" role="2XxRq1">
<property role="3cmrfH" value="0" />
</node>
</node>
@ -1061,15 +1012,6 @@
</node>
</node>
</node>
<node concept="3clFbH" id="tyIfzBL6FW" role="3cqZAp" />
<node concept="3vlDli" id="tyIfzBL9Mu" role="3cqZAp">
<node concept="37vLTw" id="4VntlICn4CV" role="3tpDZB">
<ref role="3cqZAo" node="tyIfzBLg7V" resolve="expectedPCtrs" />
</node>
<node concept="37vLTw" id="4VntlICn5Ks" role="3tpDZA">
<ref role="3cqZAo" node="tyIfzBL35v" resolve="principalCtrs" />
</node>
</node>
</node>
</node>
</node>

View File

@ -13,6 +13,7 @@
<dependency reexport="false">6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)</dependency>
<dependency reexport="true">da80355b-a098-4248-9ec8-70d10dd7e9af(jetbrains.mps.reporting.runtime)</dependency>
<dependency reexport="true">bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)</dependency>
<dependency reexport="false">26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime)</dependency>
</dependencies>
<languageVersions>
<language slang="l:f3061a53-9226-4cc5-a443-f952ceaf5816:jetbrains.mps.baseLanguage" version="9" />
@ -33,6 +34,7 @@
<module reference="6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)" version="0" />
<module reference="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)" version="0" />
<module reference="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" version="0" />
<module reference="26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime)" version="0" />
<module reference="ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.coderules.template)" version="0" />
<module reference="9e98f4e2-decf-4e97-bf80-9109e8b759aa(jetbrains.mps.lang.feedback.context)" version="0" />
<module reference="bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)" version="0" />

View File

@ -25,6 +25,7 @@
<import index="cxk7" ref="r:daa544a7-0a5c-49c0-a54c-4c2a5b4868aa(jetbrains.mps.logic.predicate)" />
<import index="2gg1" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.errors(MPS.Core/)" />
<import index="9x2e" ref="r:0730b0d1-7e2f-4982-aac3-8069c5060a9c(jetbrains.mps.lang.typesystem2.reporting)" />
<import index="xnrr" ref="r:4fd33103-fc30-42f4-a8cf-d1e858f21988(jetbrains.mps.lang.coderules.program.analysis)" />
</imports>
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
@ -392,6 +393,16 @@
<node concept="3Tm1VV" id="4MqhgXUaiLA" role="1B3o_S" />
<node concept="3clFbS" id="4MqhgXUaiLB" role="3clF47" />
</node>
<node concept="2tJIrI" id="2WtKs4tD$nT" role="jymVt" />
<node concept="3clFb_" id="2WtKs4tZlCC" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="analyses" />
<node concept="3clFbS" id="2WtKs4tZlCF" role="3clF47" />
<node concept="3Tm1VV" id="2WtKs4tZlzz" role="1B3o_S" />
<node concept="3uibUv" id="2WtKs4u1dpp" role="3clF45">
<ref role="3uigEE" to="xnrr:1H_6AUSXnyk" resolve="ProgramAnalysis" />
</node>
</node>
<node concept="2tJIrI" id="4MqhgXUaiL8" role="jymVt" />
<node concept="3Tm1VV" id="4OKkcnfu_xn" role="1B3o_S" />
</node>
@ -2680,6 +2691,9 @@
<node concept="3clFbS" id="6lpwCiZjdpk" role="3clF47">
<node concept="1VxSAg" id="7nPD14Oesbn" role="3cqZAp">
<ref role="37wK5l" node="7nPD14OeqYJ" resolve="RuleBuilder" />
<node concept="37vLTw" id="6xVZN2uA0fH" role="37wK5m">
<ref role="3cqZAo" node="62MNP_kXJV2" resolve="tag" />
</node>
<node concept="37vLTw" id="62MNP_kXJYe" role="37wK5m">
<ref role="3cqZAo" node="62MNP_kXJV2" resolve="tag" />
</node>
@ -2694,6 +2708,10 @@
</node>
<node concept="2tJIrI" id="3KXGt7WvW6X" role="jymVt" />
<node concept="3clFbW" id="7nPD14OeqYJ" role="jymVt">
<node concept="37vLTG" id="6xVZN2uA02z" role="3clF46">
<property role="TrG5h" value="tmpRuleTag" />
<node concept="17QB3L" id="6xVZN2uA0cE" role="1tU5fm" />
</node>
<node concept="37vLTG" id="7nPD14OeqYK" role="3clF46">
<property role="TrG5h" value="tag" />
<node concept="17QB3L" id="7nPD14OeqYL" role="1tU5fm" />
@ -2713,6 +2731,19 @@
<node concept="3cqZAl" id="7nPD14OeqYO" role="3clF45" />
<node concept="3Tm1VV" id="7nPD14OeqYP" role="1B3o_S" />
<node concept="3clFbS" id="7nPD14OeqYQ" role="3clF47">
<node concept="3clFbF" id="6xVZN2uAqIF" role="3cqZAp">
<node concept="37vLTI" id="6xVZN2uArcw" role="3clFbG">
<node concept="37vLTw" id="6xVZN2uArjF" role="37vLTx">
<ref role="3cqZAo" node="6xVZN2uA02z" resolve="tmpRuleTag" />
</node>
<node concept="2OqwBi" id="6xVZN2uAqPp" role="37vLTJ">
<node concept="Xjq3P" id="6xVZN2uAqID" role="2Oq$k0" />
<node concept="2OwXpG" id="6xVZN2uAqVp" role="2OqNvi">
<ref role="2Oxat5" node="6xVZN2uAbNZ" resolve="basetag" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7nPD14OeqYR" role="3cqZAp">
<node concept="37vLTI" id="7nPD14OeqYS" role="3clFbG">
<node concept="2OqwBi" id="7nPD14OeqYT" role="37vLTJ">
@ -4199,6 +4230,22 @@
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="6xVZN2uAlU5" role="jymVt" />
<node concept="3clFb_" id="6xVZN2uAjp3" role="jymVt">
<property role="TrG5h" value="basetag" />
<node concept="3clFbS" id="6xVZN2uAjp4" role="3clF47">
<node concept="3clFbF" id="6xVZN2uAqw7" role="3cqZAp">
<node concept="37vLTw" id="6xVZN2uAqw6" role="3clFbG">
<ref role="3cqZAo" node="6xVZN2uAbNZ" resolve="basetag" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="6xVZN2uAjp7" role="1B3o_S" />
<node concept="17QB3L" id="6xVZN2uAjp8" role="3clF45" />
<node concept="2AHcQZ" id="6xVZN2uAjp9" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="51V709l4iSX" role="jymVt" />
<node concept="3Tm1VV" id="7eGEHDlc$dZ" role="1B3o_S" />
<node concept="3uibUv" id="7nPD14Ob5KM" role="1zkMxy">
@ -4427,6 +4474,11 @@
<node concept="3Tm6S6" id="6lpwCiZjjEn" role="1B3o_S" />
<node concept="17QB3L" id="6lpwCiZjjEp" role="1tU5fm" />
</node>
<node concept="312cEg" id="6xVZN2uAbNZ" role="jymVt">
<property role="TrG5h" value="basetag" />
<node concept="3Tm6S6" id="6xVZN2uA62G" role="1B3o_S" />
<node concept="17QB3L" id="6xVZN2uAbM7" role="1tU5fm" />
</node>
<node concept="312cEg" id="7nPD14Ob4vA" role="jymVt">
<property role="TrG5h" value="templateRef" />
<node concept="3Tm6S6" id="7nPD14Ob4vB" role="1B3o_S" />

View File

@ -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<Constraint> = emptyList()
override fun headReplaced(): Iterable<Constraint> = emptyList()
override fun guard(): Iterable<Predicate> = emptyList()

View File

@ -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.
*/

View File

@ -85,6 +85,8 @@ class MockRule(
override fun tag(): String = tag
override fun basetag(): String = tag
override fun headKept(): Iterable<Constraint> = kept
override fun headReplaced(): Iterable<Constraint> = replaced