Fix error reporting in bl.closures for conversion to functional interface

Add 'genDecl' constraint in heads of toFunctionalCls* rules
to handle incremental changes to respective classifier.
Also fail instead of just reporting error to break execution and
report on correct node according to calling rule.
This commit is contained in:
Grigorii Kirgizov 2020-06-17 20:32:08 +03:00
parent 8ccfa63111
commit a16756bfdb
3 changed files with 175 additions and 113 deletions

View File

@ -403,6 +403,9 @@
<child id="6097203247185219723" name="argument" index="3jicU7" />
<child id="6097203247184212024" name="logical" index="3jm6SO" />
</concept>
<concept id="4957570047287105024" name="jetbrains.mps.lang.coderules.structure.FailConstraint" flags="ng" index="1lpGmL">
<child id="4957570047287138243" name="message" index="1lp$hM" />
</concept>
<concept id="4957570047283823112" name="jetbrains.mps.lang.coderules.structure.ProvideFeedbackConstraint" flags="ng" index="1lHd6T">
<property id="4957570047283824112" name="severity" index="1lHdp1" />
<child id="4957570047284421439" name="message" index="1ljv2e" />
@ -1731,6 +1734,11 @@
</node>
</node>
</node>
<node concept="1mebxG" id="MSv3owVrok" role="3cqZAp">
<node concept="37vLTw" id="MSv3owVroU" role="1mebXD">
<ref role="3cqZAo" node="5QlJgjTDQ0Z" resolve="cl" />
</node>
</node>
<node concept="3clFbJ" id="5QlJgjTDQ16" role="3cqZAp">
<node concept="3clFbS" id="5QlJgjTDQ17" role="3clFbx">
<node concept="3clFbH" id="5QlJgjTDQ18" role="3cqZAp" />
@ -1801,6 +1809,11 @@
</node>
</node>
</node>
<node concept="1mebxG" id="MSv3owVrpc" role="3cqZAp">
<node concept="37vLTw" id="MSv3owVrpd" role="1mebXD">
<ref role="3cqZAo" node="5QlJgjTDXf6" resolve="cl" />
</node>
</node>
<node concept="3clFbJ" id="5QlJgjTDXfd" role="3cqZAp">
<node concept="2OqwBi" id="5QlJgjTE343" role="3clFbw">
<node concept="37vLTw" id="5QlJgjTE344" role="2Oq$k0">
@ -1938,6 +1951,11 @@
</node>
</node>
</node>
<node concept="1mebxG" id="MSv3owVrqj" role="3cqZAp">
<node concept="37vLTw" id="MSv3owVrqk" role="1mebXD">
<ref role="3cqZAo" node="5QlJgjTEhKQ" resolve="cl" />
</node>
</node>
<node concept="3clFbJ" id="5QlJgjTEhKX" role="3cqZAp">
<node concept="2OqwBi" id="5QlJgjTEhKY" role="3clFbw">
<node concept="37vLTw" id="5QlJgjTEhKZ" role="2Oq$k0">
@ -5580,6 +5598,24 @@
</node>
</node>
</node>
<node concept="3Aq93q" id="6jc_Ygd7K8O" role="1nLNMb">
<property role="3ArMco" value="true" />
<node concept="3I6sU6" id="6jc_Ygd7K8P" role="3Ip0Jz">
<node concept="3I6s7M" id="6jc_Ygd7K9f" role="3I6sU7">
<node concept="3Aqt3T" id="6jc_Ygd7K9e" role="3I6s78">
<ref role="3AqCNq" to="kqnc:4btN1w5A2ZH" resolve="genDecl" />
<node concept="37jhX" id="6jc_Ygd7K9o" role="3AunhB">
<node concept="3A2sRY" id="6jc_Ygd7K9m" role="37jj2">
<ref role="3A2yKK" node="554EtBH_$E2" resolve="cls" />
</node>
</node>
<node concept="a7P8L" id="6jc_Ygd7L19" role="3AunhB">
<ref role="a7OzE" node="6jc_Ygd7KQZ" resolve="ClsScheme" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="554EtBH_$CW" role="0Rg$4">
<node concept="aZer4" id="554EtBH_$CX" role="3XD1gS">
<property role="TrG5h" value="ResultT" />
@ -5614,6 +5650,9 @@
<node concept="34oBXx" id="53tmmMtoZpa" role="2OqNvi" />
</node>
</node>
<node concept="aZer4" id="6jc_Ygd7KQZ" role="3XD1gS">
<property role="TrG5h" value="ClsScheme" />
</node>
<node concept="32pEOW" id="53tmmMtoEs9" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="53tmmMtoTau" role="0Rg$4">
@ -5660,52 +5699,6 @@
</node>
</node>
<node concept="3clFbH" id="53tmmMtp7pH" role="3cqZAp" />
<node concept="3SKdUt" id="53tmmMtp7HN" role="3cqZAp">
<node concept="1PaTwC" id="53tmmMtp7HO" role="1aUNEU">
<node concept="3oM_SD" id="53tmmMtp7HP" role="1PaTwD">
<property role="3oM_SC" value="fixme:" />
</node>
<node concept="3oM_SD" id="53tmmMtp7JF" role="1PaTwD">
<property role="3oM_SC" value="leave" />
</node>
<node concept="3oM_SD" id="53tmmMtp7JI" role="1PaTwD">
<property role="3oM_SC" value="only" />
</node>
<node concept="3oM_SD" id="53tmmMtp7JM" role="1PaTwD">
<property role="3oM_SC" value="methodSign" />
</node>
<node concept="3oM_SD" id="53tmmMtp7JR" role="1PaTwD">
<property role="3oM_SC" value="term" />
</node>
<node concept="3oM_SD" id="53tmmMtp7JX" role="1PaTwD">
<property role="3oM_SC" value="or" />
</node>
<node concept="3oM_SD" id="53tmmMtp7K4" role="1PaTwD">
<property role="3oM_SC" value="trivially" />
</node>
<node concept="3oM_SD" id="53tmmMtp7Kl" role="1PaTwD">
<property role="3oM_SC" value="extend" />
</node>
<node concept="3oM_SD" id="53tmmMtp7Kc" role="1PaTwD">
<property role="3oM_SC" value="it?" />
</node>
<node concept="3oM_SD" id="53tmmMtp7Kv" role="1PaTwD">
<property role="3oM_SC" value="maybe" />
</node>
<node concept="3oM_SD" id="53tmmMtp7KE" role="1PaTwD">
<property role="3oM_SC" value="leave" />
</node>
<node concept="3oM_SD" id="53tmmMtp7KQ" role="1PaTwD">
<property role="3oM_SC" value="as" />
</node>
<node concept="3oM_SD" id="53tmmMtp7L3" role="1PaTwD">
<property role="3oM_SC" value="it" />
</node>
<node concept="3oM_SD" id="53tmmMtp7Lh" role="1PaTwD">
<property role="3oM_SC" value="is?" />
</node>
</node>
</node>
<node concept="3Aqczg" id="53tmmMtoLgU" role="3cqZAp">
<node concept="3A8Hvi" id="53tmmMtoLgO" role="3Aqpz8">
<node concept="a7P8L" id="53tmmMtoLiP" role="3A8wtg">
@ -5894,45 +5887,78 @@
<node concept="1nLNMY" id="554EtBH_KPG" role="1nK1Vg">
<property role="TrG5h" value="toFunctional_error_classifier" />
<node concept="3clFbS" id="554EtBH_KPH" role="1nLNMH">
<node concept="1nLNNL" id="554EtBH_Hti" role="3cqZAp">
<node concept="1nLNMm" id="554EtBH_Htk" role="1nLNNK">
<node concept="3Aq93q" id="554EtBH_HtS" role="1nLNMb">
<node concept="3I6sU6" id="554EtBH_HtT" role="3Ip0Jz">
<node concept="3I6s7M" id="554EtBH_HtX" role="3I6sU7">
<node concept="3Aqt3T" id="554EtBH_HtW" role="3I6s78">
<ref role="3AqCNq" node="554EtBH_$_5" resolve="toFunctionalType" />
<node concept="a7P8L" id="554EtBH_Hu4" role="3AunhB">
<ref role="a7OzE" node="554EtBH_Htr" resolve="ResultT" />
</node>
<node concept="1HFMs5" id="554EtBH_HyM" role="3AunhB">
<node concept="a7P8L" id="554EtBH_HwQ" role="1uarlU">
<ref role="a7OzE" node="554EtBH_Hwk" resolve="ClsT" />
</node>
<node concept="ns1u0" id="554EtBH_H_f" role="1uarlW">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="3Hbl2A" id="2uP4pEQlPt" role="3cqZAp">
<node concept="3clFbS" id="2uP4pEQlPv" role="9aQI4">
<node concept="1nLNNL" id="554EtBH_Hti" role="3cqZAp">
<node concept="1nLNMm" id="554EtBH_Htk" role="1nLNNK">
<node concept="3Aq93q" id="554EtBH_HtS" role="1nLNMb">
<node concept="3I6sU6" id="554EtBH_HtT" role="3Ip0Jz">
<node concept="3I6s7M" id="554EtBH_HtX" role="3I6sU7">
<node concept="3Aqt3T" id="554EtBH_HtW" role="3I6s78">
<ref role="3AqCNq" node="554EtBH_$_5" resolve="toFunctionalType" />
<node concept="a7P8L" id="554EtBH_Hu4" role="3AunhB">
<ref role="a7OzE" node="554EtBH_Htr" resolve="ResultT" />
</node>
<node concept="1HFMs5" id="554EtBH_HyM" role="3AunhB">
<node concept="a7P8L" id="554EtBH_HwQ" role="1uarlU">
<ref role="a7OzE" node="554EtBH_Hwk" resolve="ClsT" />
</node>
<node concept="ns1u0" id="554EtBH_H_f" role="1uarlW">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="nsMwS" id="2uP4pEQ4oP" role="ns1xD">
<ref role="nsMwP" to="kqnc:JOGAOsVt2c" resolve="classifier" />
<node concept="2OqwBi" id="2uP4pEQ4TO" role="nsMwV">
<node concept="3A2sRY" id="2uP4pEQ4Da" role="2Oq$k0">
<ref role="3A2yKK" node="2uP4pEQ4mG" resolve="cls" />
</node>
<node concept="iZEcu" id="2uP4pEQ5lA" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="554EtBH_Htq" role="0Rg$4">
<node concept="aZer4" id="554EtBH_Htr" role="3XD1gS">
<property role="TrG5h" value="ResultT" />
</node>
<node concept="aZer4" id="554EtBH_Hwk" role="3XD1gS">
<property role="TrG5h" value="ClsT" />
</node>
<node concept="32pEOW" id="554EtBH_HtB" role="3vLBG7" />
</node>
<node concept="3xSepi" id="554EtBH_KP7" role="3xSepv">
<node concept="3Aq9E8" id="554EtBH_KP8" role="3xSepj">
<node concept="3I6sU6" id="554EtBH_KP9" role="3Ip0Jz">
<node concept="3I6s7M" id="554EtBH_KPi" role="3I6sU7">
<node concept="1lHd6T" id="554EtBH_KPh" role="3I6s78">
<property role="1lHdp1" value="4jcOV4hu0n_/ERROR" />
<node concept="Xl_RD" id="554EtBH_KPl" role="1ljv2e">
<property role="Xl_RC" value="not a functional classifier" />
<node concept="3Aq93q" id="2uP4pEQ4oT" role="1nLNMb">
<property role="3ArMco" value="true" />
<node concept="3I6sU6" id="2uP4pEQ4oU" role="3Ip0Jz">
<node concept="3I6s7M" id="2uP4pEQ4p8" role="3I6sU7">
<node concept="3Aqt3T" id="2uP4pEQ4p7" role="3I6s78">
<ref role="3AqCNq" to="kqnc:4btN1w5A2ZH" resolve="genDecl" />
<node concept="37jhX" id="2uP4pEQ4ph" role="3AunhB">
<node concept="3A2sRY" id="2uP4pEQ4pf" role="37jj2">
<ref role="3A2yKK" node="2uP4pEQ4mG" resolve="cls" />
</node>
</node>
<node concept="a7P8L" id="2uP4pEQ4yv" role="3AunhB">
<ref role="a7OzE" node="2uP4pEQ4w5" resolve="ClsScheme" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="554EtBH_Htq" role="0Rg$4">
<node concept="aZer4" id="554EtBH_Htr" role="3XD1gS">
<property role="TrG5h" value="ResultT" />
</node>
<node concept="aZer4" id="554EtBH_Hwk" role="3XD1gS">
<property role="TrG5h" value="ClsT" />
</node>
<node concept="aZer4" id="2uP4pEQ4w5" role="3XD1gS">
<property role="TrG5h" value="ClsScheme" />
</node>
<node concept="32pEOW" id="554EtBH_HtB" role="3vLBG7" />
</node>
<node concept="3xSepi" id="554EtBH_KP7" role="3xSepv">
<node concept="3Aq9E8" id="554EtBH_KP8" role="3xSepj">
<node concept="3I6sU6" id="554EtBH_KP9" role="3Ip0Jz">
<node concept="3I6s7M" id="554EtBH_KPi" role="3I6sU7">
<node concept="1lpGmL" id="2uP4pEOG1f" role="3I6s78">
<node concept="Xl_RD" id="554EtBH_KPl" role="1lp$hM">
<property role="Xl_RC" value="not a functional classifier" />
</node>
</node>
</node>
</node>
</node>
@ -5942,6 +5968,12 @@
</node>
</node>
</node>
<node concept="2t___k" id="2uP4pEQ4mF" role="1nLNMg">
<ref role="2t_S0q" to="tpee:g7pOWCK" resolve="Classifier" />
<node concept="3A20r5" id="2uP4pEQ4mG" role="2t_VXX">
<property role="TrG5h" value="cls" />
</node>
</node>
</node>
<node concept="1nLNMY" id="554EtBH_NYO" role="1nK1Vg">
<property role="TrG5h" value="toFunctional_default" />

View File

@ -137,6 +137,7 @@
<child id="8356039341262087992" name="line" index="1aUNEU" />
</concept>
<concept id="1146644602865" name="jetbrains.mps.baseLanguage.structure.PublicVisibility" flags="nn" index="3Tm1VV" />
<concept id="1146644623116" name="jetbrains.mps.baseLanguage.structure.PrivateVisibility" flags="nn" index="3Tm6S6" />
</language>
<language id="fd392034-7849-419d-9071-12563d152375" name="jetbrains.mps.baseLanguage.closures">
<concept id="1235746970280" name="jetbrains.mps.baseLanguage.closures.structure.CompactInvokeFunctionExpression" flags="nn" index="2Sg_IR">
@ -2795,6 +2796,31 @@
</node>
</node>
</node>
<node concept="2tJIrI" id="2uP4pEOxK6" role="jymVt" />
<node concept="3clFb_" id="2uP4pEOy5D" role="jymVt">
<property role="TrG5h" value="acceptIWorker2" />
<node concept="37vLTG" id="2uP4pEOygr" role="3clF46">
<property role="TrG5h" value="worker" />
<node concept="3uibUv" id="2uP4pEOyj5" role="1tU5fm">
<ref role="3uigEE" node="4AYiKM_PIps" resolve="FunctionalInterfaces.IWorker2" />
</node>
</node>
<node concept="3clFbS" id="2uP4pEOy5G" role="3clF47" />
<node concept="3Tm6S6" id="2uP4pEOxXB" role="1B3o_S" />
<node concept="3cqZAl" id="2uP4pEOydP" role="3clF45" />
</node>
<node concept="3clFb_" id="2uP4pEO$SH" role="jymVt">
<property role="TrG5h" value="acceptIWorker" />
<node concept="37vLTG" id="2uP4pEO$SI" role="3clF46">
<property role="TrG5h" value="worker" />
<node concept="3uibUv" id="2uP4pEO_$K" role="1tU5fm">
<ref role="3uigEE" node="4AYiKM_PGtX" resolve="FunctionalInterfaces.IWorkerOk" />
</node>
</node>
<node concept="3clFbS" id="2uP4pEO$SK" role="3clF47" />
<node concept="3Tm6S6" id="2uP4pEO$SL" role="1B3o_S" />
<node concept="3cqZAl" id="2uP4pEO$SM" role="3clF45" />
</node>
<node concept="2tJIrI" id="4AYiKM_PIjZ" role="jymVt" />
<node concept="2tJIrI" id="4AYiKM_PGVO" role="jymVt" />
<node concept="3clFb_" id="4AYiKM_PGYE" role="jymVt">
@ -2853,36 +2879,6 @@
</node>
</node>
<node concept="3clFbS" id="4AYiKM_PGYH" role="3clF47">
<node concept="3SKdUt" id="4AYiKM_PPb0" role="3cqZAp">
<node concept="1PaTwC" id="4AYiKM_PPb1" role="1aUNEU">
<node concept="3oM_SD" id="4AYiKM_PPb3" role="1PaTwD">
<property role="3oM_SC" value="fixme:" />
</node>
<node concept="3oM_SD" id="4AYiKM_PPig" role="1PaTwD">
<property role="3oM_SC" value="check" />
</node>
<node concept="3oM_SD" id="4AYiKM_PPij" role="1PaTwD">
<property role="3oM_SC" value="incremental" />
</node>
<node concept="3oM_SD" id="4AYiKM_PPiR" role="1PaTwD">
<property role="3oM_SC" value="tc" />
</node>
</node>
</node>
<node concept="3clFbH" id="4AYiKM_R$nx" role="3cqZAp" />
<node concept="3SKdUt" id="4AYiKM_R$wr" role="3cqZAp">
<node concept="1PaTwC" id="4AYiKM_R$ws" role="1aUNEU">
<node concept="3oM_SD" id="4AYiKM_R$wu" role="1PaTwD">
<property role="3oM_SC" value="todo:" />
</node>
<node concept="3oM_SD" id="4AYiKM_R$Ch" role="1PaTwD">
<property role="3oM_SC" value="generic" />
</node>
<node concept="3oM_SD" id="4AYiKM_R$C$" role="1PaTwD">
<property role="3oM_SC" value="classifiers?" />
</node>
</node>
</node>
<node concept="3clFbH" id="4AYiKM_PJWl" role="3cqZAp" />
<node concept="3cpWs8" id="4AYiKM_PLf_" role="3cqZAp">
<node concept="3cpWsn" id="4AYiKM_PLfA" role="3cpWs9">
@ -2966,8 +2962,7 @@
</node>
</node>
</node>
<node concept="3clFbH" id="4AYiKM_PMKq" role="3cqZAp" />
<node concept="3clFbH" id="4AYiKM_SvGd" role="3cqZAp" />
<node concept="3clFbH" id="2uP4pEOBXm" role="3cqZAp" />
<node concept="3cpWs8" id="4AYiKM_PMBD" role="3cqZAp">
<node concept="3cpWsn" id="4AYiKM_PMBE" role="3cpWs9">
<property role="TrG5h" value="ws1" />
@ -3102,6 +3097,38 @@
</node>
</node>
<node concept="3clFbH" id="4AYiKM_PUcG" role="3cqZAp" />
<node concept="3clFbH" id="2uP4pEOFFG" role="3cqZAp" />
<node concept="3clFbF" id="2uP4pEOA5b" role="3cqZAp">
<node concept="1rXfSq" id="2uP4pEOA59" role="3clFbG">
<ref role="37wK5l" node="2uP4pEO$SH" resolve="acceptIWorker" />
<node concept="37vLTw" id="2uP4pEOAuG" role="37wK5m">
<ref role="3cqZAo" node="4AYiKM_PH_u" resolve="f1" />
<node concept="1U20sH" id="2uP4pEOAMF" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="2uP4pEOBgs" role="3cqZAp">
<node concept="1rXfSq" id="2uP4pEOBgq" role="3clFbG">
<ref role="37wK5l" node="2uP4pEO$SH" resolve="acceptIWorker" />
<node concept="37vLTw" id="2uP4pEOBBQ" role="37wK5m">
<ref role="3cqZAo" node="4AYiKM_RDDo" resolve="fOk" />
</node>
</node>
</node>
<node concept="3clFbF" id="2uP4pEOytG" role="3cqZAp">
<node concept="1rXfSq" id="2uP4pEOytE" role="3clFbG">
<ref role="37wK5l" node="2uP4pEOy5D" resolve="acceptIWorker2" />
<node concept="37vLTw" id="2uP4pEOyy$" role="37wK5m">
<ref role="3cqZAo" node="4AYiKM_RDDo" resolve="fOk" />
<node concept="1U20sH" id="2uP4pEOzU0" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2uP4pEOFmh" role="3cqZAp" />
<node concept="3clFbH" id="4AYiKM_SvJl" role="3cqZAp" />
<node concept="3cpWs8" id="4AYiKM_PUt_" role="3cqZAp">
<node concept="3cpWsn" id="4AYiKM_PUtA" role="3cpWs9">

View File

@ -28,9 +28,12 @@
<language slang="l:f3061a53-9226-4cc5-a443-f952ceaf5816:jetbrains.mps.baseLanguage" version="11" />
<language slang="l:443f4c36-fcf5-4eb6-9500-8d06ed259e3e:jetbrains.mps.baseLanguage.classifiers" version="0" />
<language slang="l:fd392034-7849-419d-9071-12563d152375:jetbrains.mps.baseLanguage.closures" version="0" />
<language slang="l:9e36d2ee-c59c-4580-9e81-646748d0614b:jetbrains.mps.baseLanguage.closuresExt" version="0" />
<language slang="l:83888646-71ce-4f1c-9c53-c54016f6ad4f:jetbrains.mps.baseLanguage.collections" version="1" />
<language slang="l:96eeb076-cd7e-4797-9c2a-348e3f826e65:jetbrains.mps.baseLanguage.function" version="0" />
<language slang="l:f2801650-65d5-424e-bb1b-463a8781b786:jetbrains.mps.baseLanguage.javadoc" version="2" />
<language slang="l:760a0a8c-eabb-4521-8bfd-65db761a9ba3:jetbrains.mps.baseLanguage.logging" version="0" />
<language slang="l:88dcbb14-19c3-4776-8f81-33611ca4d87c:jetbrains.mps.baseLanguage.sequence" version="0" />
<language slang="l:a247e09e-2435-45ba-b8d2-07e93feba96a:jetbrains.mps.baseLanguage.tuples" version="0" />
<language slang="l:f61473f9-130f-42f6-b98d-6c438812c2f6:jetbrains.mps.baseLanguage.unitTest" version="1" />
<language slang="l:0fda14cc-a416-4c81-869a-2175d8b3325d:jetbrains.mps.baseLanguageExt" version="0" />