Fix processing of recursive types

Avoid failing to process composite types because
of visiting the same classifier.
This commit is contained in:
Fedor Isakov 2022-02-10 23:40:05 +01:00
parent 2b23c56283
commit 04048470c5
1 changed files with 230 additions and 87 deletions

View File

@ -404,7 +404,9 @@
<concept id="8456919074574710634" name="jetbrains.mps.logic.structure.ExpressionItem" flags="ng" index="37jhX">
<child id="8456919074574710741" name="code" index="37jj2" />
</concept>
<concept id="1564179198502666296" name="jetbrains.mps.logic.structure.LogicalType" flags="ig" index="26uTi9" />
<concept id="1564179198502666296" name="jetbrains.mps.logic.structure.LogicalType" flags="ig" index="26uTi9">
<child id="6399471711045454762" name="dataType" index="3vMvoR" />
</concept>
<concept id="8169506320648805904" name="jetbrains.mps.logic.structure.LogicalVariableDeclarationContainer" flags="ng" index="29MRiA">
<child id="6399471711045617306" name="dataType" index="3vLBG7" />
<child id="3063948360254832884" name="declaration" index="3XD1gS" />
@ -437,6 +439,12 @@
<child id="1432138691741609743" name="tail" index="1Pxxm2" />
</concept>
</language>
<language id="760a0a8c-eabb-4521-8bfd-65db761a9ba3" name="jetbrains.mps.baseLanguage.logging">
<concept id="6332851714983831325" name="jetbrains.mps.baseLanguage.logging.structure.MsgStatement" flags="ng" index="2xdQw9">
<property id="6332851714983843871" name="severity" index="2xdLsb" />
<child id="5721587534047265374" name="message" index="9lYJi" />
</concept>
</language>
<language id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel">
<concept id="1179168000618" name="jetbrains.mps.lang.smodel.structure.Node_GetIndexInParentOperation" flags="nn" index="2bSWHS" />
<concept id="1177026924588" name="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" flags="nn" index="chp4Y">
@ -619,6 +627,7 @@
<concept id="1240216724530" name="jetbrains.mps.baseLanguage.collections.structure.LinkedHashMapCreator" flags="nn" index="32Fmki" />
<concept id="1162935959151" name="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" flags="nn" index="34oBXx" />
<concept id="1175845471038" name="jetbrains.mps.baseLanguage.collections.structure.ReverseOperation" flags="nn" index="35Qw8J" />
<concept id="1167380149909" name="jetbrains.mps.baseLanguage.collections.structure.RemoveElementOperation" flags="nn" index="3dhRuq" />
<concept id="1201792049884" name="jetbrains.mps.baseLanguage.collections.structure.TranslateOperation" flags="nn" index="3goQfb" />
<concept id="1201872418428" name="jetbrains.mps.baseLanguage.collections.structure.GetKeysOperation" flags="nn" index="3lbrtF" />
<concept id="1178286324487" name="jetbrains.mps.baseLanguage.collections.structure.SortDirection" flags="nn" index="1nlBCl" />
@ -15999,33 +16008,16 @@
<node concept="3clFbS" id="5itBwMayQG9" role="3iwQuN">
<node concept="3clFbJ" id="6BYZfeEXabE" role="3cqZAp">
<node concept="3clFbS" id="6BYZfeEXabG" role="3clFbx">
<node concept="3Aqczg" id="6BYZfeEXajR" role="3cqZAp">
<node concept="3jbYBd" id="6BYZfeEXajO" role="3Aqpz8">
<ref role="3jbY9l" node="5itBwMau8m1" resolve="lift" />
<node concept="3i2tpf" id="6BYZfeEXakl" role="3jbY8P">
<ref role="3i285M" node="6BYZfeEX8SG" resolve="bound" />
</node>
<node concept="a7P8L" id="6BYZfeEXakf" role="3jbY8V">
<ref role="a7OzE" node="6BYZfeEXak1" resolve="Bnd" />
</node>
<node concept="3jhG_Y" id="6cGbuqP1rA3" role="3jhGvd">
<node concept="3jhG_Z" id="6cGbuqP1rA5" role="3jhGob">
<ref role="3jhG_U" node="5itBwMaLICh" resolve="substitution" />
<node concept="3i2tpf" id="6cGbuqP1rA9" role="3jhG_S">
<ref role="3i285M" node="5itBwMaLICh" resolve="substitution" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Aqczg" id="6BYZfeEZLJq" role="3cqZAp">
<node concept="3A8Hvi" id="6BYZfeEZLJr" role="3Aqpz8">
<node concept="ns1u0" id="6BYZfeEZLJs" role="3A8w4Q">
<ref role="ns1xF" node="JOGAOsVt2u" resolve="upperBound" />
<node concept="nsMwS" id="6BYZfeEZLJt" role="ns1xD">
<ref role="nsMwP" node="39Sam6YgyvP" resolve="parameter" />
<node concept="a7P8L" id="6BYZfeEZLJu" role="iSaTp">
<ref role="a7OzE" node="6BYZfeEXak1" resolve="Bnd" />
<node concept="37jhX" id="2fVm_544olt" role="iSaTp">
<node concept="3i2tpf" id="2fVm_544ols" role="37jj2">
<ref role="3i285M" node="6BYZfeEX8SG" resolve="Bound" />
</node>
</node>
</node>
</node>
@ -16038,7 +16030,7 @@
</node>
<node concept="3y3z36" id="6BYZfeEXacf" role="3clFbw">
<node concept="3i2tpf" id="6BYZfeEXabS" role="3uHU7B">
<ref role="3i285M" node="6BYZfeEX8SG" resolve="bound" />
<ref role="3i285M" node="6BYZfeEX8SG" resolve="Bound" />
</node>
<node concept="10Nm6u" id="6BYZfeEXajJ" role="3uHU7w" />
</node>
@ -16147,8 +16139,10 @@
</node>
</node>
<node concept="3i76O8" id="6BYZfeEX8SG" role="3i7zYg">
<property role="TrG5h" value="bound" />
<node concept="3Tqbb2" id="6BYZfeEX8SO" role="3i7YY_" />
<property role="TrG5h" value="Bound" />
<node concept="26uTi9" id="2fVm_54$1D0" role="3i7YY_">
<node concept="32pEOW" id="2fVm_54$1Fh" role="3vMvoR" />
</node>
</node>
</node>
<node concept="3iyZe8" id="5X1yxJHLgzH" role="0oKgB">
@ -30882,36 +30876,6 @@
</node>
<node concept="9aQIb" id="3fECE2uJMCB" role="9aQIa">
<node concept="3clFbS" id="3fECE2uJMCC" role="9aQI4">
<node concept="3cpWs8" id="8j2Lhx$vUu" role="3cqZAp">
<node concept="3cpWsn" id="8j2Lhx$vUv" role="3cpWs9">
<property role="TrG5h" value="_subs" />
<node concept="3uibUv" id="8j2Lhx$vUw" role="1tU5fm">
<ref role="3uigEE" node="6EY0p2w8VOq" resolve="TypeVarSubstitution" />
</node>
<node concept="2ShNRf" id="8j2Lhx$vUx" role="33vP2m">
<node concept="1pGfFk" id="8j2Lhx$vUy" role="2ShVmc">
<ref role="37wK5l" node="6EY0p2w8VPF" resolve="TypeVarSubstitution" />
<node concept="3hN9Ij" id="8j2Lhx$vUz" role="37wK5m">
<ref role="3hLkJx" node="5itBwMb1_Cj" resolve="subs" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="8j2Lhxqgvo" role="3cqZAp">
<node concept="2OqwBi" id="8j2LhxqgH4" role="3clFbG">
<node concept="37vLTw" id="8j2Lhx$wkE" role="2Oq$k0">
<ref role="3cqZAo" node="8j2Lhx$vUv" resolve="_subs" />
</node>
<node concept="liA8E" id="8j2Lhxqh38" role="2OqNvi">
<ref role="37wK5l" node="8j2Lhxq58B" resolve="visitedDeclarationSite" />
<node concept="3hN9Ij" id="8j2Lhxqh63" role="37wK5m">
<ref role="3hLkJx" node="5itBwMaSCVV" resolve="cls" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="8j2Lhx$w_t" role="3cqZAp" />
<node concept="3SKdUt" id="5Oz70LKt$kO" role="3cqZAp">
<node concept="1PaTwC" id="5Oz70LKt$kP" role="1aUNEU">
<node concept="3oM_SD" id="5Oz70LKt$kR" role="1PaTwD">
@ -30931,45 +30895,197 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="8j2Lhx$vUu" role="3cqZAp">
<node concept="3cpWsn" id="8j2Lhx$vUv" role="3cpWs9">
<property role="TrG5h" value="_subs" />
<node concept="3uibUv" id="8j2Lhx$vUw" role="1tU5fm">
<ref role="3uigEE" node="6EY0p2w8VOq" resolve="TypeVarSubstitution" />
</node>
<node concept="2ShNRf" id="8j2Lhx$vUx" role="33vP2m">
<node concept="1pGfFk" id="8j2Lhx$vUy" role="2ShVmc">
<ref role="37wK5l" node="6EY0p2w8VPF" resolve="TypeVarSubstitution" />
<node concept="3hN9Ij" id="8j2Lhx$vUz" role="37wK5m">
<ref role="3hLkJx" node="5itBwMb1_Cj" resolve="subs" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2fVm_54aT3M" role="3cqZAp" />
<node concept="1Dw8fO" id="1BcUSjgaxCM" role="3cqZAp">
<node concept="3clFbS" id="1BcUSjgaxCO" role="2LFqv$">
<node concept="3Aqczg" id="5itBwMaTwRm" role="3cqZAp">
<node concept="3jbYBd" id="5itBwMaTwRj" role="3Aqpz8">
<ref role="3jbY9l" node="5itBwMau8m1" resolve="lift" />
<node concept="1y4W85" id="1BcUSjgaEfW" role="3jbY8P">
<node concept="37vLTw" id="1BcUSjgaEgr" role="1y58nS">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
<node concept="3hN9Ij" id="1BcUSjgaCl3" role="1y566C">
<ref role="3hLkJx" node="5itBwMaSF7g" resolve="typeArgs" />
</node>
<node concept="3cpWs8" id="2fVm_544iDB" role="3cqZAp">
<node concept="3cpWsn" id="2fVm_544iDC" role="3cpWs9">
<property role="TrG5h" value="bound" />
<node concept="3Tqbb2" id="2fVm_542EB5" role="1tU5fm">
<ref role="ehGHo" to="tpee:fz3vP1H" resolve="Type" />
</node>
<node concept="a7P8L" id="5itBwMaTxJf" role="3jbY8V">
<ref role="a7OzE" node="4btN1w5K1tx" resolve="TyArgs" />
<node concept="37vLTw" id="1BcUSjgaEo4" role="3gCZO6">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
</node>
<node concept="3jhG_Y" id="6BYZfeEX8Uo" role="3jhGvd">
<node concept="3jhG_Z" id="6cGbuqOX83b" role="3jhGob">
<ref role="3jhG_U" node="5itBwMaLICh" resolve="substitution" />
<node concept="37vLTw" id="8j2LhxDTEV" role="3jhG_S">
<ref role="3cqZAo" node="8j2Lhx$vUv" resolve="_subs" />
<node concept="2OqwBi" id="2fVm_544iDD" role="33vP2m">
<node concept="1y4W85" id="2fVm_544iDE" role="2Oq$k0">
<node concept="37vLTw" id="2fVm_544iDF" role="1y58nS">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
<node concept="37vLTw" id="2fVm_544iDG" role="1y566C">
<ref role="3cqZAo" node="3Z1xyIwmKJl" resolve="tvds" />
</node>
</node>
<node concept="3jhG_Z" id="6BYZfeEX8Uq" role="3jhGob">
<ref role="3jhG_U" node="6BYZfeEX8SG" resolve="bound" />
<node concept="2OqwBi" id="6BYZfeEX99M" role="3jhG_S">
<node concept="1y4W85" id="6BYZfeEX998" role="2Oq$k0">
<node concept="37vLTw" id="6BYZfeEX99l" role="1y58nS">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
<node concept="37vLTw" id="6BYZfeEX8Uv" role="1y566C">
<ref role="3cqZAo" node="3Z1xyIwmKJl" resolve="tvds" />
<node concept="3TrEf2" id="2fVm_544iDH" role="2OqNvi">
<ref role="3Tt5mk" to="tpee:hFztrQw" resolve="bound" />
</node>
</node>
</node>
</node>
<node concept="3clFbJ" id="2fVm_544j0S" role="3cqZAp">
<node concept="3clFbS" id="2fVm_544j0U" role="3clFbx">
<node concept="3clFbF" id="8j2Lhxqgvo" role="3cqZAp">
<node concept="2OqwBi" id="8j2LhxqgH4" role="3clFbG">
<node concept="37vLTw" id="8j2Lhx$wkE" role="2Oq$k0">
<ref role="3cqZAo" node="8j2Lhx$vUv" resolve="_subs" />
</node>
<node concept="liA8E" id="8j2Lhxqh38" role="2OqNvi">
<ref role="37wK5l" node="8j2Lhxq58B" resolve="visitedDeclarationSite" />
<node concept="3hN9Ij" id="8j2Lhxqh63" role="37wK5m">
<ref role="3hLkJx" node="5itBwMaSCVV" resolve="cls" />
</node>
</node>
</node>
</node>
<node concept="3X$Joe" id="2fVm_546W2j" role="3cqZAp">
<node concept="aZer4" id="2fVm_546W2k" role="3XD1gS">
<property role="TrG5h" value="Bnd" />
</node>
<node concept="32pEOW" id="2fVm_546W2m" role="3vLBG7" />
</node>
<node concept="3Aqczg" id="2fVm_546zWR" role="3cqZAp">
<node concept="3jbYBd" id="2fVm_546zWS" role="3Aqpz8">
<ref role="3jbY9l" node="5itBwMau8m1" resolve="lift" />
<node concept="37vLTw" id="2fVm_546$2n" role="3jbY8P">
<ref role="3cqZAo" node="2fVm_544iDC" resolve="bound" />
</node>
<node concept="a7P8L" id="2fVm_546Wbh" role="3jbY8V">
<ref role="a7OzE" node="2fVm_546W2k" resolve="Bnd" />
</node>
<node concept="3jhG_Y" id="2fVm_546zWV" role="3jhGvd">
<node concept="3jhG_Z" id="2fVm_546zWW" role="3jhGob">
<ref role="3jhG_U" node="5itBwMaLICh" resolve="substitution" />
<node concept="37vLTw" id="2fVm_546$2s" role="3jhG_S">
<ref role="3cqZAo" node="8j2Lhx$vUv" resolve="_subs" />
</node>
</node>
<node concept="3TrEf2" id="6BYZfeEXabe" role="2OqNvi">
<ref role="3Tt5mk" to="tpee:hFztrQw" resolve="bound" />
</node>
</node>
</node>
<node concept="3clFbF" id="2fVm_54d9ns" role="3cqZAp">
<node concept="2OqwBi" id="2fVm_54d9nt" role="3clFbG">
<node concept="37vLTw" id="2fVm_54d9nu" role="2Oq$k0">
<ref role="3cqZAo" node="8j2Lhx$vUv" resolve="_subs" />
</node>
<node concept="liA8E" id="2fVm_54d9nv" role="2OqNvi">
<ref role="37wK5l" node="2fVm_54aTpm" resolve="clearDeclarationSite" />
<node concept="3hN9Ij" id="2fVm_54d9nw" role="37wK5m">
<ref role="3hLkJx" node="5itBwMaSCVV" resolve="cls" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2fVm_54g5Ty" role="3cqZAp" />
<node concept="2xdQw9" id="2fVm_54u8og" role="3cqZAp">
<property role="2xdLsb" value="gZ5fh_4/error" />
<node concept="3cpWs3" id="2fVm_54xx4P" role="9lYJi">
<node concept="2OqwBi" id="2fVm_54xHv7" role="3uHU7w">
<node concept="1eOMI4" id="2fVm_54x_uw" role="2Oq$k0">
<node concept="3IkZw_" id="2fVm_54xDRD" role="1eOMHV">
<node concept="a7P8L" id="2fVm_54xDRE" role="3Ikct_">
<ref role="a7OzE" node="2fVm_546W2k" resolve="Bnd" />
</node>
</node>
</node>
<node concept="liA8E" id="2fVm_54xMPh" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~Object.getClass()" resolve="getClass" />
</node>
</node>
<node concept="3cpWs3" id="2fVm_54ul$C" role="3uHU7B">
<node concept="Xl_RD" id="2fVm_54u8oi" role="3uHU7B">
<property role="Xl_RC" value="**** Bnd: " />
</node>
<node concept="3IkZw_" id="2fVm_54uAwu" role="3uHU7w">
<node concept="a7P8L" id="2fVm_54uAwv" role="3Ikct_">
<ref role="a7OzE" node="2fVm_546W2k" resolve="Bnd" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2fVm_54u1L7" role="3cqZAp" />
<node concept="3Aqczg" id="2fVm_546RDq" role="3cqZAp">
<node concept="3jbYBd" id="2fVm_546RDr" role="3Aqpz8">
<ref role="3jbY9l" node="5itBwMau8m1" resolve="lift" />
<node concept="1y4W85" id="2fVm_546RDs" role="3jbY8P">
<node concept="37vLTw" id="2fVm_546RDt" role="1y58nS">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
<node concept="3hN9Ij" id="2fVm_546RDu" role="1y566C">
<ref role="3hLkJx" node="5itBwMaSF7g" resolve="typeArgs" />
</node>
</node>
<node concept="a7P8L" id="2fVm_546RDv" role="3jbY8V">
<ref role="a7OzE" node="4btN1w5K1tx" resolve="TyArgs" />
<node concept="37vLTw" id="2fVm_546RDw" role="3gCZO6">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
</node>
<node concept="3jhG_Y" id="2fVm_546RDx" role="3jhGvd">
<node concept="3jhG_Z" id="2fVm_546RDy" role="3jhGob">
<ref role="3jhG_U" node="5itBwMaLICh" resolve="substitution" />
<node concept="37vLTw" id="2fVm_54aRwa" role="3jhG_S">
<ref role="3cqZAo" node="8j2Lhx$vUv" resolve="_subs" />
</node>
</node>
<node concept="3jhG_Z" id="2fVm_546RMK" role="3jhGob">
<ref role="3jhG_U" node="6BYZfeEX8SG" resolve="Bound" />
<node concept="3IkZw_" id="2fVm_546Ya1" role="3jhG_S">
<node concept="a7P8L" id="2fVm_546Yaf" role="3Ikct_">
<ref role="a7OzE" node="2fVm_546W2k" resolve="Bnd" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2fVm_544j0T" role="3cqZAp" />
</node>
<node concept="2OqwBi" id="2fVm_544jct" role="3clFbw">
<node concept="37vLTw" id="2fVm_544j1Q" role="2Oq$k0">
<ref role="3cqZAo" node="2fVm_544iDC" resolve="bound" />
</node>
<node concept="3x8VRR" id="2fVm_544jt7" role="2OqNvi" />
</node>
<node concept="9aQIb" id="2fVm_546RsO" role="9aQIa">
<node concept="3clFbS" id="2fVm_546RsP" role="9aQI4">
<node concept="3Aqczg" id="5itBwMaTwRm" role="3cqZAp">
<node concept="3jbYBd" id="5itBwMaTwRj" role="3Aqpz8">
<ref role="3jbY9l" node="5itBwMau8m1" resolve="lift" />
<node concept="1y4W85" id="1BcUSjgaEfW" role="3jbY8P">
<node concept="37vLTw" id="1BcUSjgaEgr" role="1y58nS">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
<node concept="3hN9Ij" id="1BcUSjgaCl3" role="1y566C">
<ref role="3hLkJx" node="5itBwMaSF7g" resolve="typeArgs" />
</node>
</node>
<node concept="a7P8L" id="5itBwMaTxJf" role="3jbY8V">
<ref role="a7OzE" node="4btN1w5K1tx" resolve="TyArgs" />
<node concept="37vLTw" id="1BcUSjgaEo4" role="3gCZO6">
<ref role="3cqZAo" node="1BcUSjgaxCP" resolve="i" />
</node>
</node>
<node concept="3jhG_Y" id="6BYZfeEX8Uo" role="3jhGvd">
<node concept="3jhG_Z" id="6cGbuqOX83b" role="3jhGob">
<ref role="3jhG_U" node="5itBwMaLICh" resolve="substitution" />
<node concept="37vLTw" id="2fVm_54aRtQ" role="3jhG_S">
<ref role="3cqZAo" node="8j2Lhx$vUv" resolve="_subs" />
</node>
</node>
</node>
</node>
</node>
@ -31935,6 +32051,33 @@
</node>
</node>
<node concept="2tJIrI" id="8j2Lhxq4dF" role="jymVt" />
<node concept="3clFb_" id="2fVm_54aTpm" role="jymVt">
<property role="TrG5h" value="clearDeclarationSite" />
<node concept="3cqZAl" id="2fVm_54aTpn" role="3clF45" />
<node concept="3Tm1VV" id="2fVm_54aTpo" role="1B3o_S" />
<node concept="3clFbS" id="2fVm_54aTpp" role="3clF47">
<node concept="3clFbF" id="2fVm_54aTpq" role="3cqZAp">
<node concept="2OqwBi" id="2fVm_54aTpr" role="3clFbG">
<node concept="2OqwBi" id="2fVm_54aTps" role="2Oq$k0">
<node concept="Xjq3P" id="2fVm_54aTpt" role="2Oq$k0" />
<node concept="2OwXpG" id="2fVm_54aTpu" role="2OqNvi">
<ref role="2Oxat5" node="8j2LhxpSuW" resolve="declarationSites" />
</node>
</node>
<node concept="3dhRuq" id="2fVm_54aWu3" role="2OqNvi">
<node concept="37vLTw" id="2fVm_54aWu5" role="25WWJ7">
<ref role="3cqZAo" node="2fVm_54aTpx" resolve="cls" />
</node>
</node>
</node>
</node>
</node>
<node concept="37vLTG" id="2fVm_54aTpx" role="3clF46">
<property role="TrG5h" value="cls" />
<node concept="3Tqbb2" id="2fVm_54aTpy" role="1tU5fm" />
</node>
</node>
<node concept="2tJIrI" id="2fVm_54aTpl" role="jymVt" />
<node concept="3clFb_" id="6EY0p2w8YaM" role="jymVt">
<property role="TrG5h" value="substitute" />
<node concept="37vLTG" id="6EY0p2w8YbV" role="3clF46">