Add typechecking for recursive closure invoke expression, add tests & fix older ones

This commit is contained in:
Grigorii Kirgizov 2020-04-30 14:36:42 +03:00
parent 3284d2c331
commit 72d48d76e3
4 changed files with 2281 additions and 1102 deletions

View File

@ -221,6 +221,35 @@
</node>
</node>
</node>
<node concept="1LZb2c" id="5QlJgjTF$RH" role="1SL9yI">
<property role="TrG5h" value="literalsAndRecInvocations" />
<node concept="3cqZAl" id="5QlJgjTF$RI" role="3clF45" />
<node concept="3clFbS" id="5QlJgjTF$RJ" role="3clF47">
<node concept="2Hmddi" id="5QlJgjTF$RK" role="3cqZAp">
<node concept="2OqwBi" id="5QlJgjTF$RL" role="2Hmdds">
<node concept="2YIFZM" id="5QlJgjTF$RM" role="2Oq$k0">
<ref role="37wK5l" to="tj24:27bTNFfaOo$" resolve="ofNode" />
<ref role="1Pybhc" to="tj24:1N_0WA5JxZO" resolve="TypecheckingTestHelper" />
<node concept="2OqwBi" id="5QlJgjTF$RN" role="37wK5m">
<node concept="2WthIp" id="5QlJgjTF$RO" role="2Oq$k0" />
<node concept="2XshWL" id="5QlJgjTF$RP" role="2OqNvi">
<ref role="2WH_rO" node="35YJGAJTxCf" resolve="resolve" />
<node concept="2tJFMh" id="5QlJgjTF$RQ" role="2XxRq1">
<node concept="ZC_QK" id="5QlJgjTF_4C" role="2tJFKM">
<ref role="2aWVGs" to="anco:4yZzE4kOJc5" resolve="ClosureLiteralsInvoke" />
</node>
</node>
</node>
</node>
<node concept="1jxXqW" id="5QlJgjTF$RS" role="37wK5m" />
</node>
<node concept="liA8E" id="5QlJgjTF$RT" role="2OqNvi">
<ref role="37wK5l" to="tj24:27bTNFfaYS2" resolve="checkTypes" />
</node>
</node>
</node>
</node>
</node>
<node concept="2XrIbr" id="35YJGAJTxCf" role="1qtyYc">
<property role="TrG5h" value="resolve" />
<node concept="37vLTG" id="35YJGAJTxCF" role="3clF46">

View File

@ -13,8 +13,15 @@
</imports>
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<concept id="1215693861676" name="jetbrains.mps.baseLanguage.structure.BaseAssignmentExpression" flags="nn" index="d038R">
<child id="1068498886297" name="rValue" index="37vLTx" />
<child id="1068498886295" name="lValue" index="37vLTJ" />
</concept>
<concept id="1465982738277781862" name="jetbrains.mps.baseLanguage.structure.PlaceholderMember" flags="ng" index="2tJIrI" />
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
<concept id="1070534760951" name="jetbrains.mps.baseLanguage.structure.ArrayType" flags="in" index="10Q1$e">
<child id="1070534760952" name="componentType" index="10Q1$1" />
</concept>
<concept id="1068390468198" name="jetbrains.mps.baseLanguage.structure.ClassConcept" flags="ig" index="312cEu">
<child id="1165602531693" name="superclass" index="1zkMxy" />
</concept>
@ -34,6 +41,7 @@
<reference id="1068581517664" name="variableDeclaration" index="3cqZAo" />
</concept>
<concept id="1068498886292" name="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" flags="ir" index="37vLTG" />
<concept id="1068498886294" name="jetbrains.mps.baseLanguage.structure.AssignmentExpression" flags="nn" index="37vLTI" />
<concept id="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
<child id="5680397130376446158" name="type" index="1tU5fm" />
</concept>
@ -43,6 +51,9 @@
<child id="1068580123135" name="body" index="3clF47" />
</concept>
<concept id="1068580123165" name="jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" flags="ig" index="3clFb_" />
<concept id="1068580123155" name="jetbrains.mps.baseLanguage.structure.ExpressionStatement" flags="nn" index="3clFbF">
<child id="1068580123156" name="expression" index="3clFbG" />
</concept>
<concept id="1068580123157" name="jetbrains.mps.baseLanguage.structure.Statement" flags="nn" index="3clFbH" />
<concept id="1068580123136" name="jetbrains.mps.baseLanguage.structure.StatementList" flags="sn" stub="5293379017992965193" index="3clFbS">
<child id="1068581517665" name="statement" index="3cqZAp" />
@ -120,6 +131,55 @@
</node>
</node>
<node concept="2tJIrI" id="3MFPGC52gL5" role="jymVt" />
<node concept="3clFb_" id="6BFOg89Ju5T" role="jymVt">
<property role="TrG5h" value="array" />
<node concept="37vLTG" id="6BFOg89Jv5c" role="3clF46">
<property role="TrG5h" value="aas" />
<node concept="10Q1$e" id="6BFOg89Jvwj" role="1tU5fm">
<node concept="3uibUv" id="6BFOg89Jvwg" role="10Q1$1">
<ref role="3uigEE" node="3MFPGC51QOV" resolve="SequenceConversions.A" />
</node>
</node>
</node>
<node concept="37vLTG" id="6BFOg89Jwfz" role="3clF46">
<property role="TrG5h" value="sas" />
<node concept="A3Dl8" id="6BFOg89JwGD" role="1tU5fm">
<node concept="3uibUv" id="6BFOg89Jx6m" role="A3Ik2">
<ref role="3uigEE" node="3MFPGC51QOV" resolve="SequenceConversions.A" />
</node>
</node>
</node>
<node concept="3clFbS" id="6BFOg89Ju5W" role="3clF47">
<node concept="3clFbF" id="6BFOg89Jyck" role="3cqZAp">
<node concept="37vLTI" id="6BFOg89JyIS" role="3clFbG">
<node concept="37vLTw" id="6BFOg89Jzb2" role="37vLTx">
<ref role="3cqZAo" node="6BFOg89Jv5c" resolve="aas" />
</node>
<node concept="37vLTw" id="6BFOg89Jycj" role="37vLTJ">
<ref role="3cqZAo" node="6BFOg89Jwfz" resolve="sas" />
</node>
<node concept="1U20sH" id="6BFOg89J$Aj" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
<node concept="3clFbF" id="6BFOg89J_8D" role="3cqZAp">
<node concept="37vLTI" id="6BFOg89J_AK" role="3clFbG">
<node concept="37vLTw" id="6BFOg89JA2S" role="37vLTx">
<ref role="3cqZAo" node="6BFOg89Jwfz" resolve="sas" />
</node>
<node concept="37vLTw" id="6BFOg89J_8B" role="37vLTJ">
<ref role="3cqZAo" node="6BFOg89Jv5c" resolve="aas" />
</node>
<node concept="1U20sH" id="6BFOg89JAxr" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="6BFOg89Jt_D" role="1B3o_S" />
<node concept="3cqZAl" id="6BFOg89JtF1" role="3clF45" />
</node>
<node concept="2tJIrI" id="3MFPGC52yiK" role="jymVt" />
<node concept="3clFb_" id="3MFPGC52fKG" role="jymVt">
<property role="TrG5h" value="foo" />