Implement Rule.isBasis contract, fix feedback basis processing

Invalidated rules set invalidates feedback that has any of them it in its basis.
Validated rules invalidates feedback that has all of validated
rules in its basis set.
This commit is contained in:
Fedor Isakov 2021-04-12 12:18:54 +02:00
parent 0cef5ad298
commit 1769998f7f
2 changed files with 182 additions and 11 deletions

View File

@ -500,6 +500,7 @@
</concept>
<concept id="1151702311717" name="jetbrains.mps.baseLanguage.collections.structure.ToListOperation" flags="nn" index="ANE8D" />
<concept id="1235566554328" name="jetbrains.mps.baseLanguage.collections.structure.AnyOperation" flags="nn" index="2HwmR7" />
<concept id="1235566831861" name="jetbrains.mps.baseLanguage.collections.structure.AllOperation" flags="nn" index="2HxqBE" />
<concept id="1235573135402" name="jetbrains.mps.baseLanguage.collections.structure.SingletonSequenceCreator" flags="nn" index="2HTt$P">
<child id="1235573175711" name="elementType" index="2HTBi0" />
<child id="1235573187520" name="singletonValue" index="2HTEbv" />
@ -3005,7 +3006,7 @@
</node>
</node>
<node concept="3clFb_" id="55xYlrm1rIW" role="jymVt">
<property role="TrG5h" value="dropInvalidatedBasis" />
<property role="TrG5h" value="changedBasis" />
<node concept="37vLTG" id="55xYlrlWxzj" role="3clF46">
<property role="TrG5h" value="invalidatedBasis" />
<node concept="3vKaQO" id="55xYlrlWxzk" role="1tU5fm">
@ -3014,6 +3015,14 @@
</node>
</node>
</node>
<node concept="37vLTG" id="6DQTzHy7E4M" role="3clF46">
<property role="TrG5h" value="validatedBasis" />
<node concept="3vKaQO" id="6DQTzHy7E4N" role="1tU5fm">
<node concept="3uibUv" id="6DQTzHy7E4O" role="3O5elw">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
</node>
<node concept="3cqZAl" id="55xYlrm1rIY" role="3clF45" />
<node concept="3Tm1VV" id="55xYlrm1rIZ" role="1B3o_S" />
<node concept="3clFbS" id="55xYlrm1rJ0" role="3clF47">
@ -3023,10 +3032,13 @@
<ref role="1HBi2w" node="6QH_LDtcxgf" resolve="TypecheckingResultsCache" />
</node>
<node concept="liA8E" id="55xYlrm1CRl" role="2OqNvi">
<ref role="37wK5l" node="55xYlrm1XFI" resolve="dropInvalidatedBasis" />
<ref role="37wK5l" node="55xYlrm1XFI" resolve="changedBasis" />
<node concept="37vLTw" id="55xYlrm1CRo" role="37wK5m">
<ref role="3cqZAo" node="55xYlrlWxzj" resolve="invalidatedBasis" />
</node>
<node concept="37vLTw" id="6DQTzHy7Qob" role="37wK5m">
<ref role="3cqZAo" node="6DQTzHy7E4M" resolve="validatedBasis" />
</node>
</node>
</node>
</node>
@ -4113,7 +4125,7 @@
</node>
<node concept="2tJIrI" id="55xYlrm1Q7d" role="jymVt" />
<node concept="3clFb_" id="55xYlrm1XFI" role="jymVt">
<property role="TrG5h" value="dropInvalidatedBasis" />
<property role="TrG5h" value="changedBasis" />
<node concept="37vLTG" id="55xYlrm2bLA" role="3clF46">
<property role="TrG5h" value="invalidatedBasis" />
<node concept="3vKaQO" id="55xYlrm2lce" role="1tU5fm">
@ -4122,6 +4134,14 @@
</node>
</node>
</node>
<node concept="37vLTG" id="6DQTzHy7UEu" role="3clF46">
<property role="TrG5h" value="validatedBasis" />
<node concept="3vKaQO" id="6DQTzHy7UEv" role="1tU5fm">
<node concept="3uibUv" id="6DQTzHy7UEw" role="3O5elw">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
</node>
<node concept="3cqZAl" id="55xYlrm1XFK" role="3clF45" />
<node concept="3Tmbuc" id="55xYlrm2gPO" role="1B3o_S" />
<node concept="3clFbS" id="55xYlrm1XFM" role="3clF47">
@ -4145,6 +4165,26 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="6DQTzHy8jIj" role="3cqZAp">
<node concept="3cpWsn" id="6DQTzHy8jIk" role="3cpWs9">
<property role="TrG5h" value="validatedSet" />
<node concept="2hMVRd" id="6DQTzHy8jIl" role="1tU5fm">
<node concept="3uibUv" id="6DQTzHy8jIm" role="2hN53Y">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
<node concept="2ShNRf" id="6DQTzHy8jIn" role="33vP2m">
<node concept="2i4dXS" id="6DQTzHy8jIo" role="2ShVmc">
<node concept="3uibUv" id="6DQTzHy8jIp" role="HW$YZ">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
<node concept="37vLTw" id="6DQTzHy8vzb" role="I$8f6">
<ref role="3cqZAo" node="6DQTzHy7UEu" resolve="validatedBasis" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="55xYlrm3Caj" role="3cqZAp">
<node concept="3cpWsn" id="55xYlrm3Cak" role="3cpWs9">
<property role="TrG5h" value="itr" />
@ -4187,6 +4227,7 @@
<node concept="2YMH90" id="55xYlrm6dNr" role="2OqNvi" />
</node>
</node>
<node concept="3clFbH" id="6DQTzHy9dVE" role="3cqZAp" />
</node>
<node concept="2OqwBi" id="1tzntNA9RNm" role="3clFbw">
<node concept="1eOMI4" id="1tzntNAanbB" role="2Oq$k0">
@ -4222,6 +4263,52 @@
</node>
</node>
</node>
<node concept="3eNFk2" id="6DQTzHy8HgM" role="3eNLev">
<node concept="3clFbS" id="6DQTzHy8HgO" role="3eOfB_">
<node concept="3clFbF" id="6DQTzHy90dK" role="3cqZAp">
<node concept="2OqwBi" id="6DQTzHy90dL" role="3clFbG">
<node concept="37vLTw" id="6DQTzHy90dM" role="2Oq$k0">
<ref role="3cqZAo" node="55xYlrm3Cak" resolve="itr" />
</node>
<node concept="2YMH90" id="6DQTzHy90dN" role="2OqNvi" />
</node>
</node>
</node>
<node concept="2OqwBi" id="6DQTzHy8LOJ" role="3eO9$A">
<node concept="1eOMI4" id="6DQTzHy8LOK" role="2Oq$k0">
<node concept="2OqwBi" id="6DQTzHy8LOL" role="1eOMHV">
<node concept="37vLTw" id="6DQTzHy8LOM" role="2Oq$k0">
<ref role="3cqZAo" node="55xYlrm4eoX" resolve="item" />
</node>
<node concept="liA8E" id="6DQTzHy8LON" role="2OqNvi">
<ref role="37wK5l" node="55xYlrlZupy" resolve="getFeedbackBasis" />
</node>
</node>
</node>
<node concept="2HxqBE" id="6DQTzHy8QOu" role="2OqNvi">
<node concept="1bVj0M" id="6DQTzHy8QOw" role="23t8la">
<node concept="3clFbS" id="6DQTzHy8QOx" role="1bW5cS">
<node concept="3clFbF" id="6DQTzHy8QOy" role="3cqZAp">
<node concept="2OqwBi" id="6DQTzHy8QOz" role="3clFbG">
<node concept="37vLTw" id="6DQTzHy8W35" role="2Oq$k0">
<ref role="3cqZAo" node="6DQTzHy8jIk" resolve="validatedSet" />
</node>
<node concept="3JPx81" id="6DQTzHy8QO_" role="2OqNvi">
<node concept="37vLTw" id="6DQTzHy8QOA" role="25WWJ7">
<ref role="3cqZAo" node="6DQTzHy8QOB" resolve="it" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="6DQTzHy8QOB" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="6DQTzHy8QOC" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2OqwBi" id="55xYlrm3WJr" role="2$JKZa">
@ -7119,15 +7206,23 @@
</node>
<node concept="2tJIrI" id="1RYTbd8cL9G" role="jymVt" />
<node concept="3clFb_" id="55xYlrlXgo6" role="jymVt">
<property role="TrG5h" value="withInvalidatedFeedbackBasis" />
<property role="TrG5h" value="withFeedbackBasis" />
<node concept="37vLTG" id="55xYlrlXgo7" role="3clF46">
<property role="TrG5h" value="feedbackBasis" />
<property role="TrG5h" value="invalidatedBasis" />
<node concept="3vKaQO" id="55xYlrm7rNe" role="1tU5fm">
<node concept="3uibUv" id="55xYlrm7rNg" role="3O5elw">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
</node>
<node concept="37vLTG" id="6DQTzHy642D" role="3clF46">
<property role="TrG5h" value="validatedBasis" />
<node concept="3vKaQO" id="6DQTzHy642E" role="1tU5fm">
<node concept="3uibUv" id="6DQTzHy642F" role="3O5elw">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
</node>
<node concept="3uibUv" id="55xYlrlXgoa" role="3clF45">
<ref role="3uigEE" node="1RYTbd8bNK8" resolve="TypecheckingService.Response" />
<node concept="16syzq" id="55xYlrlXgob" role="11_B2D">
@ -7145,7 +7240,20 @@
</node>
</node>
<node concept="37vLTw" id="55xYlrlXgoj" role="37vLTx">
<ref role="3cqZAo" node="55xYlrlXgo7" resolve="feedbackBasis" />
<ref role="3cqZAo" node="55xYlrlXgo7" resolve="invalidatedBasis" />
</node>
</node>
</node>
<node concept="3clFbF" id="6DQTzHy6k3f" role="3cqZAp">
<node concept="37vLTI" id="6DQTzHy6k3g" role="3clFbG">
<node concept="2OqwBi" id="6DQTzHy6k3h" role="37vLTJ">
<node concept="Xjq3P" id="6DQTzHy6k3i" role="2Oq$k0" />
<node concept="2OwXpG" id="6DQTzHy6rIH" role="2OqNvi">
<ref role="2Oxat5" node="6DQTzHy5p_p" resolve="validatedFeedbackBasis" />
</node>
</node>
<node concept="37vLTw" id="6DQTzHy6w23" role="37vLTx">
<ref role="3cqZAo" node="6DQTzHy642D" resolve="validatedBasis" />
</node>
</node>
</node>
@ -7281,6 +7389,15 @@
</node>
</node>
</node>
<node concept="312cEg" id="6DQTzHy5p_p" role="jymVt">
<property role="TrG5h" value="validatedFeedbackBasis" />
<node concept="3Tm6S6" id="6DQTzHy5p_q" role="1B3o_S" />
<node concept="3vKaQO" id="6DQTzHy5p_r" role="1tU5fm">
<node concept="3uibUv" id="6DQTzHy5p_s" role="3O5elw">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="1RYTbd8bBxJ" role="jymVt" />
<node concept="312cEu" id="1z4$59iohfJ" role="jymVt">
@ -7863,7 +7980,7 @@
<ref role="3cqZAo" node="1RYTbd8sGIt" resolve="update" />
</node>
<node concept="liA8E" id="55xYlrmws1H" role="2OqNvi">
<ref role="37wK5l" node="55xYlrm1rIW" resolve="dropInvalidatedBasis" />
<ref role="37wK5l" node="55xYlrm1rIW" resolve="changedBasis" />
<node concept="2OqwBi" id="55xYlrmw$JR" role="37wK5m">
<node concept="37vLTw" id="55xYlrmwxeD" role="2Oq$k0">
<ref role="3cqZAo" node="1RYTbd8sGIe" resolve="response" />
@ -7872,6 +7989,14 @@
<ref role="2Oxat5" node="55xYlrlX9c4" resolve="invalidatedFeedbackBasis" />
</node>
</node>
<node concept="2OqwBi" id="6DQTzHy7fQO" role="37wK5m">
<node concept="37vLTw" id="6DQTzHy7fQP" role="2Oq$k0">
<ref role="3cqZAo" node="1RYTbd8sGIe" resolve="response" />
</node>
<node concept="2OwXpG" id="6DQTzHy7uRk" role="2OqNvi">
<ref role="2Oxat5" node="6DQTzHy5p_p" resolve="validatedFeedbackBasis" />
</node>
</node>
</node>
</node>
</node>
@ -8207,7 +8332,7 @@
<ref role="3cqZAo" node="1RYTbd8qK57" resolve="update" />
</node>
<node concept="liA8E" id="55xYlrmwLMS" role="2OqNvi">
<ref role="37wK5l" node="55xYlrm1rIW" resolve="dropInvalidatedBasis" />
<ref role="37wK5l" node="55xYlrm1rIW" resolve="changedBasis" />
<node concept="2OqwBi" id="55xYlrmwLMT" role="37wK5m">
<node concept="37vLTw" id="55xYlrmwLMU" role="2Oq$k0">
<ref role="3cqZAo" node="1RYTbd8qEOb" resolve="response" />
@ -8216,6 +8341,14 @@
<ref role="2Oxat5" node="55xYlrlX9c4" resolve="invalidatedFeedbackBasis" />
</node>
</node>
<node concept="2OqwBi" id="6DQTzHya6aD" role="37wK5m">
<node concept="37vLTw" id="6DQTzHya6aE" role="2Oq$k0">
<ref role="3cqZAo" node="1RYTbd8qEOb" resolve="response" />
</node>
<node concept="2OwXpG" id="6DQTzHyads_" role="2OqNvi">
<ref role="2Oxat5" node="6DQTzHy5p_p" resolve="validatedFeedbackBasis" />
</node>
</node>
</node>
</node>
</node>
@ -19415,8 +19548,8 @@
</node>
<node concept="3clFbF" id="55xYlrmJRC0" role="3cqZAp">
<node concept="2OqwBi" id="55xYlrmJRC1" role="3clFbG">
<node concept="37vLTw" id="55xYlrmJRC2" role="2Oq$k0">
<ref role="3cqZAo" node="55xYlrmpLFZ" resolve="invalidatedFeedbackBasis" />
<node concept="37vLTw" id="6DQTzHy721_" role="2Oq$k0">
<ref role="3cqZAo" node="6DQTzHy6_yw" resolve="validatedFeedbackBasis" />
</node>
<node concept="X8dFx" id="55xYlrmJRC3" role="2OqNvi">
<node concept="2OqwBi" id="55xYlrmJRC4" role="25WWJ7">
@ -19798,10 +19931,13 @@
</node>
</node>
<node concept="liA8E" id="55xYlrmum1X" role="2OqNvi">
<ref role="37wK5l" node="55xYlrlXgo6" resolve="withInvalidatedFeedbackBasis" />
<ref role="37wK5l" node="55xYlrlXgo6" resolve="withFeedbackBasis" />
<node concept="37vLTw" id="55xYlrmuqsy" role="37wK5m">
<ref role="3cqZAo" node="55xYlrmpLFZ" resolve="invalidatedFeedbackBasis" />
</node>
<node concept="37vLTw" id="6DQTzHy6W36" role="37wK5m">
<ref role="3cqZAo" node="6DQTzHy6_yw" resolve="validatedFeedbackBasis" />
</node>
</node>
</node>
<node concept="liA8E" id="1RYTbd8gNIE" role="2OqNvi">
@ -19866,6 +20002,22 @@
</node>
</node>
</node>
<node concept="312cEg" id="6DQTzHy6_yw" role="jymVt">
<property role="TrG5h" value="validatedFeedbackBasis" />
<node concept="3Tm6S6" id="6DQTzHy6_yx" role="1B3o_S" />
<node concept="2hMVRd" id="6DQTzHy6_yy" role="1tU5fm">
<node concept="3uibUv" id="6DQTzHy6_yz" role="2hN53Y">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
<node concept="2ShNRf" id="6DQTzHy6_y$" role="33vP2m">
<node concept="2i4dXS" id="6DQTzHy6_y_" role="2ShVmc">
<node concept="3uibUv" id="6DQTzHy6_yA" role="HW$YZ">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
</node>
</node>
<node concept="3uibUv" id="5Qx6_65T3yy" role="1zkMxy">
<ref role="3uigEE" node="5Qx6_65Rzkz" resolve="TypecheckingStrategy.Watching" />
</node>

View File

@ -7207,6 +7207,25 @@
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="6DQTzHy3kTC" role="jymVt" />
<node concept="3clFb_" id="6DQTzHy3qNo" role="jymVt">
<property role="TrG5h" value="isBasis" />
<node concept="3Tm1VV" id="6DQTzHy3qNp" role="1B3o_S" />
<node concept="10P_77" id="6DQTzHy3qNr" role="3clF45" />
<node concept="3clFbS" id="6DQTzHy3qNt" role="3clF47">
<node concept="3clFbF" id="6DQTzHy3wBu" role="3cqZAp">
<node concept="3y3z36" id="6DQTzHy3zQk" role="3clFbG">
<node concept="10Nm6u" id="6DQTzHy3A5F" role="3uHU7w" />
<node concept="37vLTw" id="6DQTzHy3wBr" role="3uHU7B">
<ref role="3cqZAo" node="3Pxu0s8eoj5" resolve="origin" />
</node>
</node>
</node>
</node>
<node concept="2AHcQZ" id="6DQTzHy3qNu" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="1eEe91OY9KN" role="jymVt" />
<node concept="3clFb_" id="51V709l4fKh" role="jymVt">
<property role="TrG5h" value="uniqueTag" />