Introduce CallMacroTemplate, necessary refactorings. MPSCR-25

Call macros are to be parameterized with logicals and other parameters.
To replace combined expand/call macros causing confusion.
Context parameters to be passed explicitly.
This commit is contained in:
Fedor Isakov 2020-03-19 14:34:25 +01:00
parent 79952036cd
commit d5ea8e8006
7 changed files with 2000 additions and 422 deletions

View File

@ -1456,5 +1456,86 @@
</node>
</node>
</node>
<node concept="13h7C7" id="5itBwM5t4MP">
<property role="3GE5qa" value="macro.decl" />
<ref role="13h7C2" to="wq2x:5itBwM578SV" resolve="CallMacroTemplate" />
<node concept="13hLZK" id="5itBwM5t4MQ" role="13h7CW">
<node concept="3clFbS" id="5itBwM5t4MR" role="2VODD2" />
</node>
<node concept="13i0hz" id="5itBwM5t5_C" role="13h7CS">
<property role="TrG5h" value="availableLogicalVariable" />
<ref role="13i0hy" to="ha02:6YKq674fNYS" resolve="availableLogicalVariable" />
<node concept="3Tm1VV" id="5itBwM5t5_D" role="1B3o_S" />
<node concept="3clFbS" id="5itBwM5t5_J" role="3clF47">
<node concept="3clFbF" id="5itBwM5AkpQ" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5AsDs" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5Ao6V" role="2Oq$k0">
<node concept="2OqwBi" id="5itBwM5AkJx" role="2Oq$k0">
<node concept="13iPFW" id="5itBwM5AkpO" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5AlUq" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5$rCX" resolve="logical" />
</node>
</node>
<node concept="3goQfb" id="5itBwM5Aqw8" role="2OqNvi">
<node concept="1bVj0M" id="5itBwM5Aqwa" role="23t8la">
<node concept="3clFbS" id="5itBwM5Aqwb" role="1bW5cS">
<node concept="3clFbF" id="5itBwM5Ar0o" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5ArgA" role="3clFbG">
<node concept="37vLTw" id="5itBwM5Ar0n" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM5Aqwc" resolve="it" />
</node>
<node concept="3Tsc0h" id="5itBwM5ArVA" role="2OqNvi">
<ref role="3TtcxE" to="5j4j:2E5lcNn8k3O" resolve="declaration" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="5itBwM5Aqwc" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="5itBwM5Aqwd" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="3QWeyG" id="5itBwM5AtGx" role="2OqNvi">
<node concept="2OqwBi" id="5itBwM5tflV" role="576Qk">
<node concept="2OqwBi" id="5itBwM5t8ho" role="2Oq$k0">
<node concept="13iPFW" id="5itBwM5t7Dw" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5t8Vx" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5dHGo" resolve="variable" />
</node>
</node>
<node concept="3goQfb" id="5itBwM5thLN" role="2OqNvi">
<node concept="1bVj0M" id="5itBwM5thLP" role="23t8la">
<node concept="3clFbS" id="5itBwM5thLQ" role="1bW5cS">
<node concept="3clFbF" id="5itBwM5thSz" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5ti8D" role="3clFbG">
<node concept="37vLTw" id="5itBwM5thSy" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM5thLR" resolve="it" />
</node>
<node concept="3Tsc0h" id="5itBwM5tj9l" role="2OqNvi">
<ref role="3TtcxE" to="5j4j:2E5lcNn8k3O" resolve="declaration" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="5itBwM5thLR" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="5itBwM5thLS" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="A3Dl8" id="5itBwM5t5_K" role="3clF45">
<node concept="3Tqbb2" id="5itBwM5t5_L" role="A3Ik2">
<ref role="ehGHo" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
</node>
</node>
</node>
</model>

View File

@ -20,6 +20,7 @@
<import index="hy7p" ref="r:01ee26d6-df00-4ffb-931c-1ddec5984886(jetbrains.mps.lang.coderules.util)" />
<import index="i348" ref="r:42a15dec-83a9-4fe1-80d6-3bf898c512bd(jetbrains.mps.lang.coderules.template)" />
<import index="x5bw" ref="r:15ea4f4e-2f41-4ce3-b7e4-a4e0737f0171(jetbrains.mps.lang.coderules.behavior)" implicit="true" />
<import index="wyt6" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)" implicit="true" />
</imports>
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
@ -32,6 +33,12 @@
<child id="1068498886295" name="lValue" index="37vLTJ" />
</concept>
<concept id="4836112446988635817" name="jetbrains.mps.baseLanguage.structure.UndefinedType" flags="in" index="2jxLKc" />
<concept id="1188207840427" name="jetbrains.mps.baseLanguage.structure.AnnotationInstance" flags="nn" index="2AHcQZ">
<reference id="1188208074048" name="annotation" index="2AI5Lk" />
</concept>
<concept id="1188208481402" name="jetbrains.mps.baseLanguage.structure.HasAnnotation" flags="ng" index="2AJDlI">
<child id="1188208488637" name="annotation" index="2AJF6D" />
</concept>
<concept id="1197027756228" name="jetbrains.mps.baseLanguage.structure.DotExpression" flags="nn" index="2OqwBi">
<child id="1197027771414" name="operand" index="2Oq$k0" />
<child id="1197027833540" name="operation" index="2OqNvi" />
@ -798,8 +805,8 @@
<node concept="3gn64h" id="1mdVbTSoaPB" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="1mdVbTSoaPC" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5wVA8" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
<node concept="1xIGOp" id="1mdVbTSoaPD" role="1xVPHs" />
@ -888,8 +895,8 @@
<node concept="3gn64h" id="1mdVbTSocwO" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="1mdVbTSocwP" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5wTKI" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
<node concept="1xIGOp" id="1mdVbTSocwQ" role="1xVPHs" />
@ -978,8 +985,8 @@
<node concept="3gn64h" id="1mdVbTSnWep" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="1mdVbTSnWeq" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5wYEK" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
<node concept="1xIGOp" id="1mdVbTSnWer" role="1xVPHs" />
@ -1304,8 +1311,8 @@
<node concept="3gn64h" id="4jcOV4hwMIZ" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="4jcOV4hwMJ0" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5wXjQ" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
<node concept="1xIGOp" id="4jcOV4hwMJ1" role="1xVPHs" />
@ -1380,8 +1387,8 @@
<node concept="3gn64h" id="4jcOV4hEF_p" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="4jcOV4hEF_q" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5wWcD" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
<node concept="1xIGOp" id="4jcOV4hEF_r" role="1xVPHs" />
@ -1439,5 +1446,85 @@
</node>
</node>
</node>
<node concept="1M2fIO" id="5itBwM5m8KJ">
<property role="3GE5qa" value="macro.decl" />
<ref role="1M2myG" to="wq2x:5itBwM5kgmv" resolve="CallMacroParameterReference" />
<node concept="1N5Pfh" id="5itBwM5mrq0" role="1Mr941">
<ref role="1N5Vy1" to="wq2x:5itBwM5mdnH" resolve="declaration" />
<node concept="3dgokm" id="5itBwM5mtoA" role="1N6uqs">
<node concept="3clFbS" id="5itBwM5mtoB" role="2VODD2">
<node concept="3cpWs8" id="5itBwM5mz1L" role="3cqZAp">
<node concept="3cpWsn" id="5itBwM5mz1M" role="3cpWs9">
<property role="TrG5h" value="cmt" />
<node concept="3Tqbb2" id="5itBwM5myCd" role="1tU5fm">
<ref role="ehGHo" to="wq2x:5itBwM578SV" resolve="CallMacroTemplate" />
</node>
<node concept="2OqwBi" id="5itBwM5mz1N" role="33vP2m">
<node concept="2rP1CM" id="5itBwM5mz1O" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM5mz1P" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM5mz1Q" role="1xVPHs">
<node concept="chp4Y" id="5itBwM5mz1R" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM578SV" resolve="CallMacroTemplate" />
</node>
</node>
<node concept="1xIGOp" id="5itBwM5mz1S" role="1xVPHs" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="5itBwM5m$gy" role="3cqZAp">
<node concept="2ShNRf" id="5itBwM5m$gu" role="3clFbG">
<node concept="YeOm9" id="5itBwM5mDok" role="2ShVmc">
<node concept="1Y3b0j" id="5itBwM5mDon" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<node concept="3Tm1VV" id="5itBwM5mDoo" role="1B3o_S" />
<node concept="2OqwBi" id="5itBwM5n3wt" role="37wK5m">
<node concept="37vLTw" id="5itBwM5n3wu" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM5mz1M" resolve="cmt" />
</node>
<node concept="3Tsc0h" id="5itBwM5n3wv" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5irVx" resolve="parameter" />
</node>
</node>
<node concept="3clFb_" id="5itBwM5mDOU" role="jymVt">
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="5itBwM5mDOV" role="3clF45" />
<node concept="3Tm1VV" id="5itBwM5mDOW" role="1B3o_S" />
<node concept="37vLTG" id="5itBwM5mDOY" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="5itBwM5mDOZ" role="1tU5fm" />
</node>
<node concept="3clFbS" id="5itBwM5mDP1" role="3clF47">
<node concept="3clFbF" id="5itBwM5mELo" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5mH9x" role="3clFbG">
<node concept="1PxgMI" id="5itBwM5mFLR" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<node concept="chp4Y" id="5itBwM5mH0C" role="3oSUPX">
<ref role="cht4Q" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
<node concept="37vLTw" id="5itBwM5mELn" role="1m5AlR">
<ref role="3cqZAo" node="5itBwM5mDOY" resolve="child" />
</node>
</node>
<node concept="3TrcHB" id="5itBwM5mHGp" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
<node concept="2AHcQZ" id="5itBwM5mDP2" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -2805,8 +2805,8 @@
<node concept="3gn64h" id="5HLeEcfpD8F" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="5HLeEcfpD8G" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5wZxg" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
<node concept="3gn64h" id="5HLeEcfpD8H" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3Qe" resolve="Guard" />
@ -3678,8 +3678,8 @@
<node concept="3gn64h" id="5HLeEcfrTSO" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="5HLeEcfrTSP" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5x1dN" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
<node concept="1xIGOp" id="5HLeEcfrTSQ" role="1xVPHs" />
@ -5938,5 +5938,368 @@
</node>
</node>
</node>
<node concept="24kQdi" id="5itBwM5dlZe">
<property role="3GE5qa" value="macro.decl" />
<ref role="1XX52x" to="wq2x:5itBwM578SV" resolve="CallMacroTemplate" />
<node concept="3EZMnI" id="5itBwM5dn$w" role="2wV5jI">
<node concept="3F0ifn" id="5itBwM5dn$x" role="3EZMnx">
<property role="3F0ifm" value="macro" />
<ref role="1k5W1q" to="qgy9:4aJUH_hW38r" resolve="RuleKeyword" />
<node concept="A1WHu" id="5itBwM5_jVS" role="3vIgyS">
<ref role="A1WHt" node="5itBwM5_bOR" resolve="CallMacroTemplate_AddLogical" />
</node>
</node>
<node concept="3EZMnI" id="5itBwM5$HaZ" role="3EZMnx">
<node concept="3F0ifn" id="5itBwM5$Hb0" role="3EZMnx">
<property role="3F0ifm" value="&lt;" />
<node concept="11LMrY" id="5itBwM5$Hb1" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="VPM3Z" id="5itBwM5$Hb2" role="3F10Kt">
<property role="VOm3f" value="false" />
</node>
<node concept="3F2HdR" id="5itBwM5$Hb3" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:5itBwM5$rCX" resolve="logical" />
<node concept="l2Vlx" id="5itBwM5$Hb4" role="2czzBx" />
<node concept="3F0ifn" id="5itBwM5$Hb5" role="2czzBI">
<property role="ilYzB" value="&lt;no logical&gt;" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM5$Hb6" role="3EZMnx">
<property role="3F0ifm" value="&gt;" />
<node concept="11L4FC" id="5itBwM5$Hb7" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="l2Vlx" id="5itBwM5$Hb8" role="2iSdaV" />
<node concept="pkWqt" id="5itBwM5$Hb9" role="pqm2j">
<node concept="3clFbS" id="5itBwM5$Hba" role="2VODD2">
<node concept="3clFbF" id="5itBwM5$Hbb" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5$Hbc" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5$Hbd" role="2Oq$k0">
<node concept="pncrf" id="5itBwM5$Hbe" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5$TvC" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5$rCX" resolve="logical" />
</node>
</node>
<node concept="3GX2aA" id="5itBwM5$Hbg" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="3F0A7n" id="5itBwM5dn$y" role="3EZMnx">
<ref role="1k5W1q" to="tpen:hshUnm6" resolve="StaticMethod" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
<node concept="3F0ifn" id="5itBwM5iyXb" role="3EZMnx">
<property role="3F0ifm" value="(" />
<ref role="1k5W1q" to="tpen:hY9fg1G" resolve="LeftParenAfterName" />
</node>
<node concept="3F2HdR" id="5itBwM5iw20" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:5itBwM5irVx" resolve="parameter" />
<node concept="l2Vlx" id="5itBwM5iw22" role="2czzBx" />
<node concept="tppnM" id="5itBwM5iKkM" role="sWeuL">
<node concept="11L4FC" id="5itBwM5iL7s" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM5jvh6" role="2czzBI">
<property role="3F0ifm" value="" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM5iEfL" role="3EZMnx">
<property role="3F0ifm" value=")" />
<ref role="1k5W1q" to="tpen:hFCSUmN" resolve="RightParen" />
</node>
<node concept="3F0ifn" id="5itBwM5ebQK" role="3EZMnx">
<property role="3F0ifm" value="produce" />
<ref role="1k5W1q" to="qgy9:4aJUH_hW38r" resolve="RuleKeyword" />
<node concept="lj46D" id="5itBwM5zj89" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="pVoyu" id="5itBwM5ebQL" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="A1WHu" id="5itBwM5_af$" role="3vIgyS">
<ref role="A1WHt" node="5itBwM5$ZOD" resolve="CallMacroTemplate_AddVariable" />
</node>
</node>
<node concept="3EZMnI" id="5itBwM5ebQN" role="3EZMnx">
<node concept="3F0ifn" id="5itBwM5ebQO" role="3EZMnx">
<property role="3F0ifm" value="&lt;" />
<node concept="11LMrY" id="5itBwM5ebQP" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="VPM3Z" id="5itBwM5ebQQ" role="3F10Kt">
<property role="VOm3f" value="false" />
</node>
<node concept="3F2HdR" id="5itBwM5ebQR" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:5itBwM5dHGo" resolve="variable" />
<node concept="l2Vlx" id="5itBwM5ebQS" role="2czzBx" />
<node concept="3F0ifn" id="5itBwM5ebQT" role="2czzBI">
<property role="ilYzB" value="&lt;no logical&gt;" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM5ebQU" role="3EZMnx">
<property role="3F0ifm" value="&gt;" />
<node concept="11L4FC" id="5itBwM5ebQV" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="l2Vlx" id="5itBwM5ebQW" role="2iSdaV" />
<node concept="pkWqt" id="5itBwM5ebQX" role="pqm2j">
<node concept="3clFbS" id="5itBwM5ebQY" role="2VODD2">
<node concept="3clFbF" id="5itBwM5ebQZ" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5ev5y" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5esek" role="2Oq$k0">
<node concept="pncrf" id="5itBwM5erW6" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5esVY" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5dHGo" resolve="variable" />
</node>
</node>
<node concept="3GX2aA" id="5itBwM5eygB" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="3EZMnI" id="5itBwM5ebR5" role="3EZMnx">
<node concept="VPM3Z" id="5itBwM5ebR6" role="3F10Kt">
<property role="VOm3f" value="false" />
</node>
<node concept="lj46D" id="5itBwM5ebR7" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="pVoyu" id="5itBwM5ebR8" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="l2Vlx" id="5itBwM5ebR9" role="2iSdaV" />
<node concept="3F0ifn" id="5itBwM5ebRa" role="3EZMnx">
<property role="3F0ifm" value="%%" />
<ref role="1k5W1q" node="7LZcKzBE07j" resolve="EmitConstraint" />
<node concept="lj46D" id="5itBwM5zmG4" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="ljvvj" id="5itBwM5ebRb" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3EZMnI" id="5itBwM5ebRc" role="3EZMnx">
<property role="S$Qs1" value="true" />
<node concept="VPM3Z" id="5itBwM5ebRd" role="3F10Kt">
<property role="VOm3f" value="false" />
</node>
<node concept="pVoyu" id="5itBwM5ebRe" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="lj46D" id="5itBwM5ebRf" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="ljvvj" id="5itBwM5ebRg" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="l2Vlx" id="5itBwM5ebRh" role="2iSdaV" />
<node concept="3F1sOY" id="5itBwM5ebRi" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM5dCWA" resolve="code" />
<node concept="lj46D" id="5itBwM5zr2F" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
</node>
<node concept="3F0ifn" id="5itBwM5ebRj" role="3EZMnx">
<property role="3F0ifm" value="%%" />
<ref role="1k5W1q" node="7LZcKzBE07j" resolve="EmitConstraint" />
<node concept="lj46D" id="5itBwM5zohr" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="pVoyu" id="5itBwM5ebRk" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
</node>
<node concept="l2Vlx" id="5itBwM5dn$V" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="5itBwM5igta">
<property role="3GE5qa" value="macro.decl" />
<ref role="1XX52x" to="wq2x:5itBwM5i6X6" resolve="CallMacroParameterDeclaration" />
<node concept="3EZMnI" id="5itBwM5ijeo" role="2wV5jI">
<node concept="3F1sOY" id="5itBwM5ijBN" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM5ifE5" resolve="type" />
</node>
<node concept="3F0A7n" id="5itBwM5ikqx" role="3EZMnx">
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
<node concept="l2Vlx" id="5itBwM5ijer" role="2iSdaV" />
</node>
</node>
<node concept="Q6S24" id="5itBwM5nh5s">
<property role="3GE5qa" value="macro.decl" />
<property role="TrG5h" value="CallMacroParameterReference" />
<ref role="aqKnT" to="tpee:fz3vP1J" resolve="Expression" />
<node concept="3ft6gV" id="5itBwM5nkDj" role="3ft7WO">
<node concept="3ft6gW" id="5itBwM5nl2E" role="3ft5RY">
<node concept="3clFbS" id="5itBwM5nl2F" role="2VODD2">
<node concept="3clFbF" id="5itBwM5nlw3" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5nnMO" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5nlCF" role="2Oq$k0">
<node concept="3bvxqY" id="5itBwM5nlw2" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM5nm9C" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM5nm9E" role="1xVPHs">
<node concept="chp4Y" id="5itBwM5nmEr" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM578SV" resolve="CallMacroTemplate" />
</node>
</node>
<node concept="1xIGOp" id="5itBwM5nnAn" role="1xVPHs" />
</node>
</node>
<node concept="3x8VRR" id="5itBwM5noUI" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="1s_PAr" id="5itBwM5qf3J" role="3ft5RZ">
<node concept="2kknPI" id="5itBwM5qft8" role="1s_PAo">
<ref role="2kkw0f" node="5itBwM5nvTV" resolve="CallMacroParameterReference_Smart" />
</node>
</node>
</node>
</node>
<node concept="Q6S24" id="5itBwM5nvTV">
<property role="3GE5qa" value="macro.decl" />
<property role="TrG5h" value="CallMacroParameterReference_Smart" />
<ref role="aqKnT" to="wq2x:5itBwM5kgmv" resolve="CallMacroParameterReference" />
<node concept="3XHNnq" id="5itBwM5nx5S" role="3ft7WO">
<ref role="3XGfJA" to="wq2x:5itBwM5mdnH" resolve="declaration" />
</node>
</node>
<node concept="24kQdi" id="5itBwM5r4M0">
<property role="3GE5qa" value="macro.decl" />
<ref role="1XX52x" to="wq2x:5itBwM5kgmv" resolve="CallMacroParameterReference" />
<node concept="3EZMnI" id="5itBwM5r5bm" role="2wV5jI">
<node concept="1iCGBv" id="5itBwM5r6np" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM5mdnH" resolve="declaration" />
<node concept="1sVBvm" id="5itBwM5r6nr" role="1sWHZn">
<node concept="3F0A7n" id="5itBwM5r6KT" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
<node concept="l2Vlx" id="5itBwM5r5bp" role="2iSdaV" />
</node>
</node>
<node concept="3ICXOK" id="5itBwM5$ZOD">
<property role="3GE5qa" value="macro.decl" />
<property role="TrG5h" value="CallMacroTemplate_AddVariable" />
<ref role="aqKnT" to="wq2x:5itBwM578SV" resolve="CallMacroTemplate" />
<node concept="1Qtc8_" id="5itBwM5gyUA" role="IW6Ez">
<node concept="IWgqT" id="5itBwM5gyUB" role="1Qtc8A">
<node concept="1hCUdq" id="5itBwM5gyUC" role="1hCUd6">
<node concept="3clFbS" id="5itBwM5gyUD" role="2VODD2">
<node concept="3clFbF" id="5itBwM5gyUE" role="3cqZAp">
<node concept="Xl_RD" id="5itBwM5gyUF" role="3clFbG">
<property role="Xl_RC" value="&lt;" />
</node>
</node>
</node>
</node>
<node concept="IWg2L" id="5itBwM5gyUG" role="IWgqQ">
<node concept="3clFbS" id="5itBwM5gyUH" role="2VODD2">
<node concept="3clFbF" id="5itBwM5gyUI" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5gyUJ" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5gyUK" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM5gyUL" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5g_FB" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5dHGo" resolve="variable" />
</node>
</node>
<node concept="2DeJg1" id="5itBwM5gyUN" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="27VH4U" id="5itBwM5gyUO" role="2jiSrf">
<node concept="3clFbS" id="5itBwM5gyUP" role="2VODD2">
<node concept="3clFbF" id="5itBwM5gyUQ" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5gyUR" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5gyUS" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM5gyUT" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5g_86" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5dHGo" resolve="variable" />
</node>
</node>
<node concept="1v1jN8" id="5itBwM5gyUV" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cWJ9i" id="5itBwM5gyUW" role="1Qtc8$">
<node concept="CtIbL" id="5itBwM5gyUX" role="CtIbM">
<property role="CtIbK" value="30NnNOohrQL/RIGHT" />
</node>
</node>
</node>
</node>
<node concept="3ICXOK" id="5itBwM5_bOR">
<property role="3GE5qa" value="macro.decl" />
<property role="TrG5h" value="CallMacroTemplate_AddLogical" />
<ref role="aqKnT" to="wq2x:5itBwM578SV" resolve="CallMacroTemplate" />
<node concept="1Qtc8_" id="5itBwM5_bOS" role="IW6Ez">
<node concept="IWgqT" id="5itBwM5_bOT" role="1Qtc8A">
<node concept="1hCUdq" id="5itBwM5_bOU" role="1hCUd6">
<node concept="3clFbS" id="5itBwM5_bOV" role="2VODD2">
<node concept="3clFbF" id="5itBwM5_bOW" role="3cqZAp">
<node concept="Xl_RD" id="5itBwM5_bOX" role="3clFbG">
<property role="Xl_RC" value="&lt;" />
</node>
</node>
</node>
</node>
<node concept="IWg2L" id="5itBwM5_bOY" role="IWgqQ">
<node concept="3clFbS" id="5itBwM5_bOZ" role="2VODD2">
<node concept="3clFbF" id="5itBwM5_bP0" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5_bP1" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5_bP2" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM5_bP3" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5_gCg" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5$rCX" resolve="logical" />
</node>
</node>
<node concept="2DeJg1" id="5itBwM5_bP5" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="27VH4U" id="5itBwM5_bP6" role="2jiSrf">
<node concept="3clFbS" id="5itBwM5_bP7" role="2VODD2">
<node concept="3clFbF" id="5itBwM5_bP8" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM5_bP9" role="3clFbG">
<node concept="2OqwBi" id="5itBwM5_bPa" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM5_bPb" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM5_fET" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM5$rCX" resolve="logical" />
</node>
</node>
<node concept="1v1jN8" id="5itBwM5_bPd" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cWJ9i" id="5itBwM5_bPe" role="1Qtc8$">
<node concept="CtIbL" id="5itBwM5_bPf" role="CtIbM">
<property role="CtIbK" value="30NnNOohrQL/RIGHT" />
</node>
</node>
</node>
</node>
</model>

View File

@ -294,8 +294,8 @@
<node concept="3gn64h" id="2TtA2rKl5c8" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:6p0DfM0a3TO" resolve="Body" />
</node>
<node concept="3gn64h" id="2TtA2rKl5iD" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFe_ZPX_" resolve="MacroBody" />
<node concept="3gn64h" id="5itBwM5x5N7" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
</node>

View File

@ -438,7 +438,7 @@
<property role="20kJfa" value="macro" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<property role="IQ2ns" value="1618328391714763070" />
<ref role="20lvS9" node="1pPth$m5Bbz" resolve="MacroDeclaration" />
<ref role="20lvS9" node="5itBwM56wgT" resolve="MacroTemplate" />
</node>
<node concept="PrWs8" id="1pPth$m5B55" role="PzmwI">
<ref role="PrY4T" to="tpee:hCUYCKd" resolve="IValidIdentifier" />
@ -472,8 +472,8 @@
<property role="20kJfa" value="body" />
<ref role="20lvS9" node="7IysFe_ZPX_" resolve="MacroBody" />
</node>
<node concept="PrWs8" id="5yr01fDEW3P" role="PzmwI">
<ref role="PrY4T" node="6OXbTDyHcuD" resolve="Template" />
<node concept="PrWs8" id="5itBwM56QHJ" role="PzmwI">
<ref role="PrY4T" node="5itBwM56wgT" resolve="MacroTemplate" />
</node>
<node concept="PrWs8" id="1pPth$m5Bb$" role="PzmwI">
<ref role="PrY4T" to="tpee:hCUYCKd" resolve="IValidIdentifier" />
@ -570,6 +570,9 @@
<node concept="PrWs8" id="7IysFe_ZPXA" role="PzmwI">
<ref role="PrY4T" to="5j4j:7E86$tK$Rgo" resolve="LogicalVariableScope" />
</node>
<node concept="PrWs8" id="5itBwM5wQOg" role="PzmwI">
<ref role="PrY4T" node="5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
</node>
<node concept="1TIwiD" id="7IysFe_ZPXH">
<property role="EcuMT" value="8908809128801951597" />
@ -1441,5 +1444,104 @@
<ref role="20lvS9" node="6p0DfM0a3TO" resolve="Body" />
</node>
</node>
<node concept="PlHQZ" id="5itBwM56wgT">
<property role="EcuMT" value="6097203247139390521" />
<property role="3GE5qa" value="macro" />
<property role="TrG5h" value="MacroTemplate" />
<node concept="PrWs8" id="5itBwM56xRq" role="PrDN$">
<ref role="PrY4T" node="6OXbTDyHcuD" resolve="Template" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM578SV">
<property role="EcuMT" value="6097203247139556923" />
<property role="3GE5qa" value="macro.decl" />
<property role="TrG5h" value="CallMacroTemplate" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="PrWs8" id="5itBwM57a68" role="PzmwI">
<ref role="PrY4T" node="5itBwM56wgT" resolve="MacroTemplate" />
</node>
<node concept="PrWs8" id="5itBwM5xp12" role="PzmwI">
<ref role="PrY4T" node="5itBwM5wMtr" resolve="MacroTemplateBody" />
</node>
<node concept="PrWs8" id="5itBwM57bFt" role="PzmwI">
<ref role="PrY4T" node="7IysFeBd3kI" resolve="ApplicationSessionParticipant" />
</node>
<node concept="PrWs8" id="5itBwM57bFu" role="PzmwI">
<ref role="PrY4T" to="5j4j:7E86$tK$Rgo" resolve="LogicalVariableScope" />
</node>
<node concept="PrWs8" id="5itBwM57bFv" role="PzmwI">
<ref role="PrY4T" node="1CgWc1Tyjkz" resolve="Commentable" />
</node>
<node concept="1TJgyj" id="5itBwM5$rCX" role="1TKVEi">
<property role="IQ2ns" value="6097203247147235901" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="logical" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<ref role="20lvS9" node="7IysFe_ZPXH" resolve="MacroBodyLogicalDeclaration" />
</node>
<node concept="1TJgyj" id="5itBwM5irVx" role="1TKVEi">
<property role="IQ2ns" value="6097203247142518497" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="parameter" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<ref role="20lvS9" node="5itBwM5i6X6" resolve="CallMacroParameterDeclaration" />
</node>
<node concept="1TJgyj" id="5itBwM5dHGo" role="1TKVEi">
<property role="IQ2ns" value="6097203247141280536" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="variable" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<ref role="20lvS9" node="7IysFe_ZPXH" resolve="MacroBodyLogicalDeclaration" />
</node>
<node concept="1TJgyj" id="5itBwM5dCWA" role="1TKVEi">
<property role="IQ2ns" value="6097203247141261094" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="code" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="tpee:fzclF80" resolve="StatementList" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM5i6X6">
<property role="EcuMT" value="6097203247142432582" />
<property role="3GE5qa" value="macro.decl" />
<property role="TrG5h" value="CallMacroParameterDeclaration" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="5itBwM5ifE5" role="1TKVEi">
<property role="IQ2ns" value="6097203247142468229" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="type" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="tpee:fz3vP1H" resolve="Type" />
</node>
<node concept="PrWs8" id="5itBwM5ie4J" role="PzmwI">
<ref role="PrY4T" to="tpee:hCUYCKd" resolve="IValidIdentifier" />
</node>
<node concept="PrWs8" id="5itBwM5ie4K" role="PzmwI">
<ref role="PrY4T" to="tpee:4H$HgYMZ7sw" resolve="IVariableDeclaration" />
</node>
<node concept="PrWs8" id="5itBwM5ie4L" role="PzmwI">
<ref role="PrY4T" to="tpck:hqLv6T6" resolve="IResolveInfo" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM5kgmv">
<property role="EcuMT" value="6097203247142995359" />
<property role="3GE5qa" value="macro.decl" />
<property role="TrG5h" value="CallMacroParameterReference" />
<ref role="1TJDcQ" to="tpee:fz3vP1J" resolve="Expression" />
<node concept="PrWs8" id="5itBwM5klv$" role="PzmwI">
<ref role="PrY4T" to="tpee:SORzhOp6jM" resolve="IVariableReference" />
</node>
<node concept="1TJgyj" id="5itBwM5mdnH" role="1TKVEi">
<property role="IQ2ns" value="6097203247143507437" />
<property role="20kJfa" value="declaration" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" node="5itBwM5i6X6" resolve="CallMacroParameterDeclaration" />
</node>
</node>
<node concept="PlHQZ" id="5itBwM5wMtr">
<property role="EcuMT" value="6097203247146280795" />
<property role="3GE5qa" value="macro" />
<property role="TrG5h" value="MacroTemplateBody" />
</node>
</model>

View File

@ -1570,5 +1570,39 @@
<ref role="1YaFvo" to="wq2x:1laj_RSpLVV" resolve="OriginSpec" />
</node>
</node>
<node concept="1YbPZF" id="5itBwM5rMjq">
<property role="TrG5h" value="typeof_CallMacroParameterReference" />
<property role="3GE5qa" value="macro.decl" />
<node concept="3clFbS" id="5itBwM5rMjr" role="18ibNy">
<node concept="1Z5TYs" id="5itBwM5rU6a" role="3cqZAp">
<node concept="mw_s8" id="5itBwM5rUT4" role="1ZfhKB">
<node concept="2OqwBi" id="5itBwM5rWbm" role="mwGJk">
<node concept="2OqwBi" id="5itBwM5rV1j" role="2Oq$k0">
<node concept="1YBJjd" id="5itBwM5rUT2" role="2Oq$k0">
<ref role="1YBMHb" node="5itBwM5rMjt" resolve="cmpr" />
</node>
<node concept="3TrEf2" id="5itBwM5rV_w" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM5mdnH" resolve="declaration" />
</node>
</node>
<node concept="3TrEf2" id="5itBwM5rWQw" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM5ifE5" resolve="type" />
</node>
</node>
</node>
<node concept="mw_s8" id="5itBwM5rU6d" role="1ZfhK$">
<node concept="1Z2H0r" id="5itBwM5rP4Q" role="mwGJk">
<node concept="1YBJjd" id="5itBwM5rPvY" role="1Z2MuG">
<ref role="1YBMHb" node="5itBwM5rMjt" resolve="cmpr" />
</node>
</node>
</node>
</node>
</node>
<node concept="1YaCAy" id="5itBwM5rMjt" role="1YuTPh">
<property role="TrG5h" value="cmpr" />
<ref role="1YaFvo" to="wq2x:5itBwM5kgmv" resolve="CallMacroParameterReference" />
</node>
</node>
</model>