Support recovering of children features in typechecking term table

This commit is contained in:
Fedor Isakov 2021-11-15 12:59:42 +01:00
parent b892bc3aa5
commit 9b8946ce67
1 changed files with 309 additions and 30 deletions

View File

@ -90,9 +90,6 @@
<concept id="1079359253375" name="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" flags="nn" index="1eOMI4">
<child id="1079359253376" name="expression" index="1eOMHV" />
</concept>
<concept id="1081516740877" name="jetbrains.mps.baseLanguage.structure.NotExpression" flags="nn" index="3fqX7Q">
<child id="1081516765348" name="expression" index="3fr31v" />
</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" />
@ -497,6 +494,11 @@
<ref role="2rZz_L" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
<ref role="2rTdP9" to="wq2x:JOGAOsxiL_" resolve="TermFeature" />
</node>
<node concept="2rT7sh" id="1PN9XOGEAUt" role="2rTMjI">
<property role="TrG5h" value="feature_node" />
<ref role="2rTdP9" to="wq2x:JOGAOsxiL_" resolve="TermFeature" />
<ref role="2rZz_L" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
<node concept="30QchW" id="1vAI4X$GZWw" role="30SoJX">
<ref role="30HIoZ" to="zfi7:6wBZuQUG1yn" resolve="TypeNodeBuilder" />
<ref role="2sgKRv" node="1PN9XOGynBF" resolve="recover_template" />
@ -775,15 +777,15 @@
<node concept="30G5F_" id="1vAI4X$O6lc" role="30HLyM">
<node concept="3clFbS" id="1vAI4X$O6ld" role="2VODD2">
<node concept="3clFbF" id="1vAI4X$O6tv" role="3cqZAp">
<node concept="2OqwBi" id="1vAI4X$O7rs" role="3clFbG">
<node concept="2OqwBi" id="1vAI4X$O6F8" role="2Oq$k0">
<node concept="30H73N" id="1vAI4X$O6tu" role="2Oq$k0" />
<node concept="3TrEf2" id="1vAI4X$O76A" role="2OqNvi">
<node concept="2OqwBi" id="1PN9XOGEUkd" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGEUke" role="2Oq$k0">
<node concept="30H73N" id="1PN9XOGEUkf" role="2Oq$k0" />
<node concept="3TrEf2" id="1PN9XOGEUkg" role="2OqNvi">
<ref role="3Tt5mk" to="zfi7:1vAI4X$MlAp" resolve="feature" />
</node>
</node>
<node concept="1mIQ4w" id="1vAI4X$O8DF" role="2OqNvi">
<node concept="chp4Y" id="1vAI4X$O8R$" role="cj9EA">
<node concept="1mIQ4w" id="1PN9XOGEUkh" role="2OqNvi">
<node concept="chp4Y" id="1PN9XOGEUki" role="cj9EA">
<ref role="cht4Q" to="wq2x:JOGAOsxnj6" resolve="ValueFeature" />
</node>
</node>
@ -792,35 +794,105 @@
</node>
</node>
</node>
<node concept="3aamgX" id="1PN9XOGFgQl" role="3acgRq">
<ref role="30HIoZ" to="zfi7:1vAI4X$MkW8" resolve="FeatureReferenceExpression" />
<node concept="1Koe21" id="1PN9XOGFgQm" role="1lVwrX">
<node concept="1nLNMm" id="1PN9XOGFgQn" role="1Koe22">
<node concept="3NuqgR" id="1PN9XOGFgQo" role="0Rg$4">
<node concept="aZer4" id="1PN9XOGFgQp" role="3XD1gS">
<property role="TrG5h" value="Var" />
</node>
<node concept="3uibUv" id="1PN9XOGFgQq" role="3vLBG7">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
<node concept="3xSepi" id="1PN9XOGFgQr" role="3xSepv">
<node concept="3Aq9E8" id="1PN9XOGFgQs" role="3xSepj">
<node concept="3I6sU6" id="1PN9XOGFgQt" role="3Ip0Jz">
<node concept="3I6s7M" id="1PN9XOGFgQu" role="3I6sU7">
<node concept="3wWvb2" id="1PN9XOGFgQv" role="3I6s78">
<node concept="1Ft4W6" id="1PN9XOGFgQw" role="3wWo3s">
<node concept="a7P8L" id="1PN9XOGFgQx" role="1FtiSR">
<ref role="a7OzE" node="1PN9XOGFgQp" resolve="Var" />
<node concept="1ZhdrF" id="1PN9XOGFgQy" role="lGtFl">
<property role="2qtEX8" value="declaration" />
<property role="P3scX" value="35320f26-77cb-4c55-be9f-a97a27770af1/8829335963593820278/8829335963593822893" />
<node concept="3$xsQk" id="1PN9XOGFgQz" role="3$ytzL">
<node concept="3clFbS" id="1PN9XOGFgQ$" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGFgQ_" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGFgQA" role="3clFbG">
<node concept="1iwH7S" id="1PN9XOGFgQB" role="2Oq$k0" />
<node concept="1iwH70" id="1PN9XOGFgQC" role="2OqNvi">
<ref role="1iwH77" node="1PN9XOGEAUt" resolve="feature_type" />
<node concept="2OqwBi" id="1PN9XOGFgQD" role="1iwH7V">
<node concept="30H73N" id="1PN9XOGFgQE" role="2Oq$k0" />
<node concept="3TrEf2" id="1PN9XOGFgQF" role="2OqNvi">
<ref role="3Tt5mk" to="zfi7:1vAI4X$MlAp" resolve="feature" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="raruj" id="1PN9XOGFgQG" role="lGtFl" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="30G5F_" id="1PN9XOGFgQH" role="30HLyM">
<node concept="3clFbS" id="1PN9XOGFgQI" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGFgQJ" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGFgQK" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGFgQL" role="2Oq$k0">
<node concept="30H73N" id="1PN9XOGFgQM" role="2Oq$k0" />
<node concept="3TrEf2" id="1PN9XOGFgQN" role="2OqNvi">
<ref role="3Tt5mk" to="zfi7:1vAI4X$MlAp" resolve="feature" />
</node>
</node>
<node concept="1mIQ4w" id="1PN9XOGFgQO" role="2OqNvi">
<node concept="chp4Y" id="1PN9XOGFgQP" role="cj9EA">
<ref role="cht4Q" to="wq2x:JOGAOsxm2z" resolve="ChildFeature" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3aamgX" id="4qGA5WCJsFK" role="3acgRq">
<ref role="30HIoZ" to="zfi7:1vAI4X$MkW8" resolve="FeatureReferenceExpression" />
<node concept="30G5F_" id="4qGA5WCJsG8" role="30HLyM">
<node concept="3clFbS" id="4qGA5WCJsG9" role="2VODD2">
<node concept="3clFbF" id="4qGA5WCJsGa" role="3cqZAp">
<node concept="3fqX7Q" id="4qGA5WCJt4e" role="3clFbG">
<node concept="2OqwBi" id="4qGA5WCJt4g" role="3fr31v">
<node concept="2OqwBi" id="4qGA5WCJt4h" role="2Oq$k0">
<node concept="30H73N" id="4qGA5WCJt4i" role="2Oq$k0" />
<node concept="3TrEf2" id="4qGA5WCJt4j" role="2OqNvi">
<ref role="3Tt5mk" to="zfi7:1vAI4X$MlAp" resolve="feature" />
</node>
</node>
<node concept="1mIQ4w" id="4qGA5WCJt4k" role="2OqNvi">
<node concept="chp4Y" id="4qGA5WCJt4l" role="cj9EA">
<ref role="cht4Q" to="wq2x:JOGAOsxnj6" resolve="ValueFeature" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="j$LIH" id="4qGA5WCJtmY" role="1lVwrX">
<node concept="1lLz0L" id="4qGA5WCJtpi" role="1lHHLF">
<property role="1lMjX7" value="h1lM37o/error" />
<property role="1lLB17" value="not supported" />
</node>
</node>
<node concept="30G5F_" id="1PN9XOGEUvS" role="30HLyM">
<node concept="3clFbS" id="1PN9XOGEUvT" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGEUwf" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEUwh" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGEUwi" role="2Oq$k0">
<node concept="30H73N" id="1PN9XOGEUwj" role="2Oq$k0" />
<node concept="3TrEf2" id="1PN9XOGEUwk" role="2OqNvi">
<ref role="3Tt5mk" to="zfi7:1vAI4X$MlAp" resolve="feature" />
</node>
</node>
<node concept="1mIQ4w" id="1PN9XOGEUwl" role="2OqNvi">
<node concept="chp4Y" id="1PN9XOGEUwm" role="cj9EA">
<ref role="cht4Q" to="wq2x:JOGAOsxpXw" resolve="ListFeature" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3aamgX" id="4qGA5WCG_7q" role="3acgRq">
<ref role="30HIoZ" to="zfi7:4qGA5WCG3z$" resolve="AssignTypePseudoConstraint" />
@ -1558,6 +1630,41 @@
</node>
</node>
</node>
<node concept="1ZhdrF" id="1PN9XOGEIqO" role="lGtFl">
<property role="2qtEX8" value="template" />
<property role="P3scX" value="c4803b19-6d89-4a3b-bf82-390769514add/7368070394767045637/7368070394767091750" />
<node concept="3$xsQk" id="1PN9XOGEIqP" role="3$ytzL">
<node concept="3clFbS" id="1PN9XOGEIqQ" role="2VODD2">
<node concept="3cpWs8" id="1PN9XOGEIAl" role="3cqZAp">
<node concept="3cpWsn" id="1PN9XOGEIAm" role="3cpWs9">
<property role="TrG5h" value="rlist" />
<node concept="3Tqbb2" id="1PN9XOGEIAn" role="1tU5fm">
<ref role="ehGHo" to="wq2x:7eGEHDlgPKk" resolve="RulesList" />
</node>
<node concept="2OqwBi" id="1PN9XOGEIAo" role="33vP2m">
<node concept="1iwH7S" id="1PN9XOGEIAp" role="2Oq$k0" />
<node concept="1iwH7d" id="1PN9XOGEIAq" role="2OqNvi">
<ref role="1iwH7c" node="4LE1vMPhNy4" resolve="recoverTypeDefault" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="1PN9XOGEIAr" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEIAs" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGEIAt" role="2Oq$k0">
<node concept="37vLTw" id="1PN9XOGEIAu" role="2Oq$k0">
<ref role="3cqZAo" node="1PN9XOGEIAm" resolve="rlist" />
</node>
<node concept="3Tsc0h" id="1PN9XOGEIAv" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1HWyn8jEsaE" resolve="constraint" />
</node>
</node>
<node concept="1uHKPH" id="1PN9XOGEIAw" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
@ -1574,6 +1681,75 @@
</node>
<node concept="32pEOW" id="1vAI4X$K91K" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="1PN9XOGEEId" role="0Rg$4">
<node concept="aZer4" id="1PN9XOGEEIe" role="3XD1gS">
<property role="TrG5h" value="ChildType" />
<node concept="1WS0z7" id="1PN9XOGEGqa" role="lGtFl">
<ref role="2rW$FS" node="1PN9XOGEAUt" resolve="feature_type" />
<node concept="3JmXsc" id="1PN9XOGEGqb" role="3Jn$fo">
<node concept="3clFbS" id="1PN9XOGEGqc" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGEGqS" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEGqT" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGEGqU" role="2Oq$k0">
<node concept="30H73N" id="1PN9XOGEGqV" role="2Oq$k0" />
<node concept="2qgKlT" id="1PN9XOGEGqW" role="2OqNvi">
<ref role="37wK5l" to="h103:1vAI4X$KvKn" resolve="getTypeTermDeclaration" />
</node>
</node>
<node concept="2qgKlT" id="1PN9XOGEGqX" role="2OqNvi">
<ref role="37wK5l" to="x5bw:7c96q9tCSX_" resolve="childFeatures" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="17Uvod" id="1PN9XOGEGHx" role="lGtFl">
<property role="2qtEX9" value="name" />
<property role="P4ACc" value="ceab5195-25ea-4f22-9b92-103b95ca8c0c/1169194658468/1169194664001" />
<node concept="3zFVjK" id="1PN9XOGEGHy" role="3zH0cK">
<node concept="3clFbS" id="1PN9XOGEGHz" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGEGOp" role="3cqZAp">
<node concept="3cpWs3" id="1PN9XOGF5DO" role="3clFbG">
<node concept="Xl_RD" id="1PN9XOGF5DS" role="3uHU7w">
<property role="Xl_RC" value="Type" />
</node>
<node concept="2OqwBi" id="1PN9XOGEGOq" role="3uHU7B">
<node concept="30H73N" id="1PN9XOGEGOr" role="2Oq$k0" />
<node concept="3TrcHB" id="1PN9XOGEGOs" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3Tqbb2" id="1PN9XOGEG9J" role="3vLBG7" />
<node concept="1W57fq" id="1PN9XOGEGan" role="lGtFl">
<node concept="3IZrLx" id="1PN9XOGEGao" role="3IZSJc">
<node concept="3clFbS" id="1PN9XOGEGap" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGEGe$" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEGe_" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGEGeA" role="2Oq$k0">
<node concept="2OqwBi" id="1PN9XOGEGeB" role="2Oq$k0">
<node concept="30H73N" id="1PN9XOGEGeC" role="2Oq$k0" />
<node concept="2qgKlT" id="1PN9XOGEGeD" role="2OqNvi">
<ref role="37wK5l" to="h103:1vAI4X$KvKn" resolve="getTypeTermDeclaration" />
</node>
</node>
<node concept="2qgKlT" id="1PN9XOGEGeE" role="2OqNvi">
<ref role="37wK5l" to="x5bw:7c96q9tCSX_" resolve="childFeatures" />
</node>
</node>
<node concept="3GX2aA" id="1PN9XOGEGeF" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="1vAI4X$L3S5" role="0Rg$4">
<node concept="aZer4" id="1vAI4X$L3S6" role="3XD1gS">
<property role="TrG5h" value="Child" />
@ -1755,6 +1931,109 @@
</node>
</node>
<node concept="3xSepi" id="1vAI4X$K9W$" role="3xSepv">
<node concept="3Aq9E8" id="1PN9XOGEwNj" role="3xSepj">
<node concept="3I6sU6" id="1PN9XOGEwNk" role="3Ip0Jz">
<node concept="3I6s7M" id="1PN9XOGEH6d" role="3I6sU7">
<node concept="3Aqt3T" id="1PN9XOGEH6c" role="3I6s78">
<ref role="3AqCNq" node="7lmP5gAtUEL" resolve="__recoverType__" />
<node concept="a7P8L" id="1PN9XOGEIMa" role="3AunhB">
<ref role="a7OzE" node="1PN9XOGEEIe" resolve="ChildType" />
<node concept="1ZhdrF" id="1PN9XOGEJp1" role="lGtFl">
<property role="2qtEX8" value="declaration" />
<property role="P3scX" value="35320f26-77cb-4c55-be9f-a97a27770af1/8829335963593820278/8829335963593822893" />
<node concept="3$xsQk" id="1PN9XOGEJp2" role="3$ytzL">
<node concept="3clFbS" id="1PN9XOGEJp3" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGEJyW" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEJHi" role="3clFbG">
<node concept="1iwH7S" id="1PN9XOGEJyV" role="2Oq$k0" />
<node concept="1iwH70" id="1PN9XOGEJMN" role="2OqNvi">
<ref role="1iwH77" node="1PN9XOGEAUt" resolve="feature_type" />
<node concept="30H73N" id="1PN9XOGEK5h" role="1iwH7V" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="1PN9XOGEJda" role="3AunhB">
<ref role="a7OzE" node="1vAI4X$L3S6" resolve="Child" />
<node concept="1ZhdrF" id="1PN9XOGENaT" role="lGtFl">
<property role="2qtEX8" value="declaration" />
<property role="P3scX" value="35320f26-77cb-4c55-be9f-a97a27770af1/8829335963593820278/8829335963593822893" />
<node concept="3$xsQk" id="1PN9XOGENaU" role="3$ytzL">
<node concept="3clFbS" id="1PN9XOGENaV" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGEND6" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEND7" role="3clFbG">
<node concept="1iwH7S" id="1PN9XOGEND8" role="2Oq$k0" />
<node concept="1iwH70" id="1PN9XOGEND9" role="2OqNvi">
<ref role="1iwH77" node="1vAI4X$KXom" resolve="feature_logical" />
<node concept="30H73N" id="1PN9XOGENDa" role="1iwH7V" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1ZhdrF" id="1PN9XOGEIH6" role="lGtFl">
<property role="2qtEX8" value="template" />
<property role="P3scX" value="c4803b19-6d89-4a3b-bf82-390769514add/7368070394767045637/7368070394767091750" />
<node concept="3$xsQk" id="1PN9XOGEIH7" role="3$ytzL">
<node concept="3clFbS" id="1PN9XOGEIH8" role="2VODD2">
<node concept="3cpWs8" id="1PN9XOGEIHF" role="3cqZAp">
<node concept="3cpWsn" id="1PN9XOGEIHG" role="3cpWs9">
<property role="TrG5h" value="rlist" />
<node concept="3Tqbb2" id="1PN9XOGEIHH" role="1tU5fm">
<ref role="ehGHo" to="wq2x:7eGEHDlgPKk" resolve="RulesList" />
</node>
<node concept="2OqwBi" id="1PN9XOGEIHI" role="33vP2m">
<node concept="1iwH7S" id="1PN9XOGEIHJ" role="2Oq$k0" />
<node concept="1iwH7d" id="1PN9XOGEIHK" role="2OqNvi">
<ref role="1iwH7c" node="4LE1vMPhNy4" resolve="recoverTypeDefault" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="1PN9XOGEIHL" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEIHM" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGEIHN" role="2Oq$k0">
<node concept="37vLTw" id="1PN9XOGEIHO" role="2Oq$k0">
<ref role="3cqZAo" node="1PN9XOGEIHG" resolve="rlist" />
</node>
<node concept="3Tsc0h" id="1PN9XOGEIHP" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1HWyn8jEsaE" resolve="constraint" />
</node>
</node>
<node concept="1uHKPH" id="1PN9XOGEIHQ" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1WS0z7" id="1PN9XOGEJjM" role="lGtFl">
<node concept="3JmXsc" id="1PN9XOGEJjN" role="3Jn$fo">
<node concept="3clFbS" id="1PN9XOGEJjO" role="2VODD2">
<node concept="3clFbF" id="1PN9XOGEJk_" role="3cqZAp">
<node concept="2OqwBi" id="1PN9XOGEJkA" role="3clFbG">
<node concept="2OqwBi" id="1PN9XOGEJkB" role="2Oq$k0">
<node concept="30H73N" id="1PN9XOGEJkC" role="2Oq$k0" />
<node concept="2qgKlT" id="1PN9XOGEJkD" role="2OqNvi">
<ref role="37wK5l" to="h103:1vAI4X$KvKn" resolve="getTypeTermDeclaration" />
</node>
</node>
<node concept="2qgKlT" id="1PN9XOGEJkE" role="2OqNvi">
<ref role="37wK5l" to="x5bw:7c96q9tCSX_" resolve="childFeatures" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3Aq9E8" id="1vAI4X$K9W_" role="3xSepj">
<node concept="3I6sU6" id="1vAI4X$K9WA" role="3Ip0Jz">
<node concept="3I6s7M" id="1vAI4X$KaV1" role="3I6sU7">