Types aspect. Simple typesystem based on Hindley-Milner.

This commit is contained in:
Fedor Isakov 2016-11-23 21:09:23 +01:00
parent e9c3191a59
commit 7fcb2fa333
6 changed files with 1981 additions and 9 deletions

View File

@ -5,7 +5,402 @@
<use id="af65afd8-f0dd-4942-87d9-63a55f2a9db1" name="jetbrains.mps.lang.behavior" version="0" />
<devkit ref="2677cb18-f558-4e33-bc38-a5139cee06dc(jetbrains.mps.devkit.language-design)" />
</languages>
<imports />
<registry />
<imports>
<import index="tpck" ref="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" />
<import index="8tt8" ref="r:e74c1bfc-387b-4b4b-abee-2eb77ee510ec(sample.fooblin.structure)" />
<import index="wyt6" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)" implicit="true" />
</imports>
<registry>
<language id="af65afd8-f0dd-4942-87d9-63a55f2a9db1" name="jetbrains.mps.lang.behavior">
<concept id="1225194240794" name="jetbrains.mps.lang.behavior.structure.ConceptBehavior" flags="ng" index="13h7C7">
<reference id="1225194240799" name="concept" index="13h7C2" />
<child id="1225194240805" name="method" index="13h7CS" />
<child id="1225194240801" name="constructor" index="13h7CW" />
</concept>
<concept id="1225194413805" name="jetbrains.mps.lang.behavior.structure.ConceptConstructorDeclaration" flags="in" index="13hLZK" />
<concept id="1225194472830" name="jetbrains.mps.lang.behavior.structure.ConceptMethodDeclaration" flags="ng" index="13i0hz" />
<concept id="1225194691553" name="jetbrains.mps.lang.behavior.structure.ThisNodeExpression" flags="nn" index="13iPFW" />
</language>
<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="4836112446988635817" name="jetbrains.mps.baseLanguage.structure.UndefinedType" flags="in" index="2jxLKc" />
<concept id="1076505808687" name="jetbrains.mps.baseLanguage.structure.WhileStatement" flags="nn" index="2$JKZl">
<child id="1076505808688" name="condition" index="2$JKZa" />
</concept>
<concept id="1154032098014" name="jetbrains.mps.baseLanguage.structure.AbstractLoopStatement" flags="nn" index="2LF5Ji">
<child id="1154032183016" name="body" index="2LFqv$" />
</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" />
</concept>
<concept id="1145552977093" name="jetbrains.mps.baseLanguage.structure.GenericNewExpression" flags="nn" index="2ShNRf">
<child id="1145553007750" name="creator" index="2ShVmc" />
</concept>
<concept id="1137021947720" name="jetbrains.mps.baseLanguage.structure.ConceptFunction" flags="in" index="2VMwT0">
<child id="1137022507850" name="body" index="2VODD2" />
</concept>
<concept id="1164991038168" name="jetbrains.mps.baseLanguage.structure.ThrowStatement" flags="nn" index="YS8fn">
<child id="1164991057263" name="throwable" index="YScLw" />
</concept>
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
<concept id="1068431474542" name="jetbrains.mps.baseLanguage.structure.VariableDeclaration" flags="ng" index="33uBYm">
<child id="1068431790190" name="initializer" index="33vP2m" />
</concept>
<concept id="1109279763828" name="jetbrains.mps.baseLanguage.structure.TypeVariableDeclaration" flags="ng" index="16euLQ" />
<concept id="1109279851642" name="jetbrains.mps.baseLanguage.structure.GenericDeclaration" flags="ng" index="16eOlS">
<child id="1109279881614" name="typeVariableDeclaration" index="16eVyc" />
</concept>
<concept id="1068498886296" name="jetbrains.mps.baseLanguage.structure.VariableReference" flags="nn" index="37vLTw">
<reference id="1068581517664" name="variableDeclaration" index="3cqZAo" />
</concept>
<concept id="1068498886294" name="jetbrains.mps.baseLanguage.structure.AssignmentExpression" flags="nn" index="37vLTI" />
<concept id="1225271283259" name="jetbrains.mps.baseLanguage.structure.NPEEqualsExpression" flags="nn" index="17R0WA" />
<concept id="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
<child id="5680397130376446158" name="type" index="1tU5fm" />
</concept>
<concept id="1068580123132" name="jetbrains.mps.baseLanguage.structure.BaseMethodDeclaration" flags="ng" index="3clF44">
<child id="1068580123133" name="returnType" index="3clF45" />
<child id="1068580123135" name="body" index="3clF47" />
</concept>
<concept id="1068580123152" name="jetbrains.mps.baseLanguage.structure.EqualsExpression" flags="nn" index="3clFbC" />
<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="1068580123159" name="jetbrains.mps.baseLanguage.structure.IfStatement" flags="nn" index="3clFbJ">
<child id="1068580123160" name="condition" index="3clFbw" />
<child id="1068580123161" name="ifTrue" index="3clFbx" />
</concept>
<concept id="1068580123136" name="jetbrains.mps.baseLanguage.structure.StatementList" flags="sn" stub="5293379017992965193" index="3clFbS">
<child id="1068581517665" name="statement" index="3cqZAp" />
</concept>
<concept id="1068580123137" name="jetbrains.mps.baseLanguage.structure.BooleanConstant" flags="nn" index="3clFbT">
<property id="1068580123138" name="value" index="3clFbU" />
</concept>
<concept id="1068581242878" name="jetbrains.mps.baseLanguage.structure.ReturnStatement" flags="nn" index="3cpWs6">
<child id="1068581517676" name="expression" index="3cqZAk" />
</concept>
<concept id="1068581242864" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" flags="nn" index="3cpWs8">
<child id="1068581242865" name="localVariableDeclaration" index="3cpWs9" />
</concept>
<concept id="1068581242863" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" flags="nr" index="3cpWsn" />
<concept id="1204053956946" name="jetbrains.mps.baseLanguage.structure.IMethodCall" flags="ng" index="1ndlxa">
<reference id="1068499141037" name="baseMethodDeclaration" index="37wK5l" />
</concept>
<concept id="1212685548494" name="jetbrains.mps.baseLanguage.structure.ClassCreator" flags="nn" index="1pGfFk" />
<concept id="1081773326031" name="jetbrains.mps.baseLanguage.structure.BinaryOperation" flags="nn" index="3uHJSO">
<child id="1081773367579" name="rightExpression" index="3uHU7w" />
<child id="1081773367580" name="leftExpression" index="3uHU7B" />
</concept>
<concept id="1073239437375" name="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" flags="nn" index="3y3z36" />
<concept id="1178549954367" name="jetbrains.mps.baseLanguage.structure.IVisible" flags="ng" index="1B3ioH">
<child id="1178549979242" name="visibility" index="1B3o_S" />
</concept>
<concept id="1146644602865" name="jetbrains.mps.baseLanguage.structure.PublicVisibility" flags="nn" index="3Tm1VV" />
</language>
<language id="fd392034-7849-419d-9071-12563d152375" name="jetbrains.mps.baseLanguage.closures">
<concept id="1199569711397" name="jetbrains.mps.baseLanguage.closures.structure.ClosureLiteral" flags="nn" index="1bVj0M">
<child id="1199569906740" name="parameter" index="1bW2Oz" />
<child id="1199569916463" name="body" index="1bW5cS" />
</concept>
</language>
<language id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel">
<concept id="1177026924588" name="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" flags="nn" index="chp4Y">
<reference id="1177026940964" name="conceptDeclaration" index="cht4Q" />
</concept>
<concept id="1138411891628" name="jetbrains.mps.lang.smodel.structure.SNodeOperation" flags="nn" index="eCIE_">
<child id="1144104376918" name="parameter" index="1xVPHs" />
</concept>
<concept id="7453996997717780434" name="jetbrains.mps.lang.smodel.structure.Node_GetSConceptOperation" flags="nn" index="2yIwOk" />
<concept id="2396822768958367367" name="jetbrains.mps.lang.smodel.structure.AbstractTypeCastExpression" flags="nn" index="$5XWr">
<reference id="6733348108486823428" name="concept" index="1m5ApE" />
<child id="6733348108486823193" name="leftExpression" index="1m5AlR" />
</concept>
<concept id="1145383075378" name="jetbrains.mps.lang.smodel.structure.SNodeListType" flags="in" index="2I9FWS">
<reference id="1145383142433" name="elementConcept" index="2I9WkF" />
</concept>
<concept id="1171305280644" name="jetbrains.mps.lang.smodel.structure.Node_GetDescendantsOperation" flags="nn" index="2Rf3mk" />
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
<concept id="1154546920561" name="jetbrains.mps.lang.smodel.structure.OperationParm_ConceptList" flags="ng" index="3gmYPX">
<child id="1154546920563" name="concept" index="3gmYPZ" />
</concept>
<concept id="1154546950173" name="jetbrains.mps.lang.smodel.structure.ConceptReference" flags="ng" index="3gn64h">
<reference id="1154546997487" name="concept" index="3gnhBz" />
</concept>
<concept id="6039268229364358244" name="jetbrains.mps.lang.smodel.structure.ExactConceptCase" flags="ng" index="1pnPoh">
<child id="6039268229364358388" name="body" index="1pnPq1" />
<child id="6039268229364358387" name="concept" index="1pnPq6" />
</concept>
<concept id="1144101972840" name="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" flags="ng" index="1xMEDy">
<child id="1207343664468" name="conceptArgument" index="ri$Ld" />
</concept>
<concept id="5944356402132808749" name="jetbrains.mps.lang.smodel.structure.ConceptSwitchStatement" flags="nn" index="1_3QMa">
<child id="6039268229365417680" name="defaultBlock" index="1prKM_" />
<child id="5944356402132808753" name="case" index="1_3QMm" />
<child id="5944356402132808752" name="expression" index="1_3QMn" />
</concept>
<concept id="1140137987495" name="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" flags="nn" index="1PxgMI" />
<concept id="1138055754698" name="jetbrains.mps.lang.smodel.structure.SNodeType" flags="in" index="3Tqbb2">
<reference id="1138405853777" name="concept" index="ehGHo" />
</concept>
<concept id="1138056022639" name="jetbrains.mps.lang.smodel.structure.SPropertyAccess" flags="nn" index="3TrcHB">
<reference id="1138056395725" name="property" index="3TsBF5" />
</concept>
<concept id="1138056143562" name="jetbrains.mps.lang.smodel.structure.SLinkAccess" flags="nn" index="3TrEf2">
<reference id="1138056516764" name="link" index="3Tt5mk" />
</concept>
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
<concept id="1133920641626" name="jetbrains.mps.lang.core.structure.BaseConcept" flags="ng" index="2VYdi">
<property id="1193676396447" name="virtualPackage" index="3GE5qa" />
</concept>
<concept id="1169194658468" name="jetbrains.mps.lang.core.structure.INamedConcept" flags="ng" index="TrEIO">
<property id="1169194664001" name="name" index="TrG5h" />
</concept>
</language>
<language id="83888646-71ce-4f1c-9c53-c54016f6ad4f" name="jetbrains.mps.baseLanguage.collections">
<concept id="1204796164442" name="jetbrains.mps.baseLanguage.collections.structure.InternalSequenceOperation" flags="nn" index="23sCx2">
<child id="1204796294226" name="closure" index="23t8la" />
</concept>
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1225727723840" name="jetbrains.mps.baseLanguage.collections.structure.FindFirstOperation" flags="nn" index="1z4cxt" />
</language>
</registry>
<node concept="13h7C7" id="4rRw8_AtH8f">
<property role="3GE5qa" value="expr" />
<ref role="13h7C2" to="8tt8:7_8aRkgDGPo" resolve="Var" />
<node concept="13i0hz" id="4rRw8_AtH8q" role="13h7CS">
<property role="TrG5h" value="binding" />
<node concept="3Tm1VV" id="4rRw8_AtH8r" role="1B3o_S" />
<node concept="3Tqbb2" id="4rRw8_AtH8E" role="3clF45">
<ref role="ehGHo" to="8tt8:7_8aRkgDGPo" resolve="Var" />
</node>
<node concept="3clFbS" id="4rRw8_AtH8t" role="3clF47">
<node concept="3cpWs8" id="4rRw8_AuQzk" role="3cqZAp">
<node concept="3cpWsn" id="4rRw8_AuQzl" role="3cpWs9">
<property role="TrG5h" value="current" />
<node concept="3Tqbb2" id="4rRw8_AuQzj" role="1tU5fm" />
<node concept="13iPFW" id="4rRw8_AuQzm" role="33vP2m" />
</node>
</node>
<node concept="2$JKZl" id="4rRw8_AuSzT" role="3cqZAp">
<node concept="3clFbS" id="4rRw8_AuSzV" role="2LFqv$">
<node concept="3cpWs8" id="4rRw8_AuAJC" role="3cqZAp">
<node concept="3cpWsn" id="4rRw8_AuAJD" role="3cpWs9">
<property role="TrG5h" value="binder" />
<node concept="3Tqbb2" id="4rRw8_AuAJB" role="1tU5fm">
<ref role="ehGHo" to="tpck:gw2VY9q" resolve="BaseConcept" />
</node>
<node concept="2OqwBi" id="4rRw8_AuAJE" role="33vP2m">
<node concept="37vLTw" id="4rRw8_AuQzn" role="2Oq$k0">
<ref role="3cqZAo" node="4rRw8_AuQzl" resolve="current" />
</node>
<node concept="2Xjw5R" id="4rRw8_AuAJG" role="2OqNvi">
<node concept="3gmYPX" id="4rRw8_AuAJH" role="1xVPHs">
<node concept="3gn64h" id="4rRw8_AuAJI" role="3gmYPZ">
<ref role="3gnhBz" to="8tt8:7_8aRkgDGQf" resolve="Abs" />
</node>
<node concept="3gn64h" id="4rRw8_AuAJJ" role="3gmYPZ">
<ref role="3gnhBz" to="8tt8:7_8aRkgDHAe" resolve="LetClause" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbJ" id="4rRw8_AuROO" role="3cqZAp">
<node concept="3clFbS" id="4rRw8_AuROQ" role="3clFbx">
<node concept="3cpWs6" id="4rRw8_AuSa6" role="3cqZAp">
<node concept="10Nm6u" id="4rRw8_AuSae" role="3cqZAk" />
</node>
</node>
<node concept="3clFbC" id="4rRw8_AuS9d" role="3clFbw">
<node concept="10Nm6u" id="4rRw8_AuS9E" role="3uHU7w" />
<node concept="37vLTw" id="4rRw8_AuS1f" role="3uHU7B">
<ref role="3cqZAo" node="4rRw8_AuAJD" resolve="binder" />
</node>
</node>
</node>
<node concept="3clFbH" id="4rRw8_AuSaA" role="3cqZAp" />
<node concept="3cpWs8" id="4rRw8_AuDnT" role="3cqZAp">
<node concept="3cpWsn" id="4rRw8_AuDnU" role="3cpWs9">
<property role="TrG5h" value="allBound" />
<node concept="2I9FWS" id="4rRw8_AuDnO" role="1tU5fm">
<ref role="2I9WkF" to="8tt8:7_8aRkgDGPo" resolve="Var" />
</node>
</node>
</node>
<node concept="1_3QMa" id="4rRw8_AuBgF" role="3cqZAp">
<node concept="2OqwBi" id="4rRw8_AuBn_" role="1_3QMn">
<node concept="37vLTw" id="4rRw8_AuBhm" role="2Oq$k0">
<ref role="3cqZAo" node="4rRw8_AuAJD" resolve="binder" />
</node>
<node concept="2yIwOk" id="4rRw8_AuBvl" role="2OqNvi" />
</node>
<node concept="1pnPoh" id="4rRw8_AuBvI" role="1_3QMm">
<node concept="3gn64h" id="4rRw8_AuBvW" role="1pnPq6">
<ref role="3gnhBz" to="8tt8:7_8aRkgDGQf" resolve="Abs" />
</node>
<node concept="3clFbS" id="4rRw8_AuBvK" role="1pnPq1">
<node concept="3clFbF" id="4rRw8_AuDEG" role="3cqZAp">
<node concept="37vLTI" id="4rRw8_AuDEI" role="3clFbG">
<node concept="2OqwBi" id="4rRw8_AuDnV" role="37vLTx">
<node concept="2OqwBi" id="4rRw8_AuDnW" role="2Oq$k0">
<node concept="1PxgMI" id="4rRw8_AuDnX" role="2Oq$k0">
<ref role="1m5ApE" to="8tt8:7_8aRkgDGQf" resolve="Abs" />
<node concept="37vLTw" id="4rRw8_AuDnY" role="1m5AlR">
<ref role="3cqZAo" node="4rRw8_AuAJD" resolve="binder" />
</node>
</node>
<node concept="3TrEf2" id="4rRw8_AuDnZ" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:7_8aRkgDGQg" resolve="bind" />
</node>
</node>
<node concept="2Rf3mk" id="4rRw8_AuDo0" role="2OqNvi">
<node concept="1xMEDy" id="4rRw8_AuDo1" role="1xVPHs">
<node concept="chp4Y" id="4rRw8_AuDo2" role="ri$Ld">
<ref role="cht4Q" to="8tt8:7_8aRkgDGPo" resolve="Var" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="4rRw8_AuDEM" role="37vLTJ">
<ref role="3cqZAo" node="4rRw8_AuDnU" resolve="allBound" />
</node>
</node>
</node>
<node concept="3clFbH" id="4rRw8_AuBwX" role="3cqZAp" />
</node>
</node>
<node concept="1pnPoh" id="4rRw8_AuBwk" role="1_3QMm">
<node concept="3gn64h" id="4rRw8_AuBwC" role="1pnPq6">
<ref role="3gnhBz" to="8tt8:7_8aRkgDHAe" resolve="LetClause" />
</node>
<node concept="3clFbS" id="4rRw8_AuBwo" role="1pnPq1">
<node concept="3clFbF" id="4rRw8_AuE83" role="3cqZAp">
<node concept="37vLTI" id="4rRw8_AuE84" role="3clFbG">
<node concept="2OqwBi" id="4rRw8_AuE85" role="37vLTx">
<node concept="2OqwBi" id="4rRw8_AuE86" role="2Oq$k0">
<node concept="1PxgMI" id="4rRw8_AuE87" role="2Oq$k0">
<ref role="1m5ApE" to="8tt8:7_8aRkgDHAe" resolve="LetClause" />
<node concept="37vLTw" id="4rRw8_AuE88" role="1m5AlR">
<ref role="3cqZAo" node="4rRw8_AuAJD" resolve="binder" />
</node>
</node>
<node concept="3TrEf2" id="4rRw8_Avj70" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:7_8aRkgDHAf" resolve="var" />
</node>
</node>
<node concept="2Rf3mk" id="4rRw8_AuE8a" role="2OqNvi">
<node concept="1xMEDy" id="4rRw8_AuE8b" role="1xVPHs">
<node concept="chp4Y" id="4rRw8_AuE8c" role="ri$Ld">
<ref role="cht4Q" to="8tt8:7_8aRkgDGPo" resolve="Var" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="4rRw8_AuE8d" role="37vLTJ">
<ref role="3cqZAo" node="4rRw8_AuDnU" resolve="allBound" />
</node>
</node>
</node>
<node concept="3clFbH" id="4rRw8_AuEv3" role="3cqZAp" />
</node>
</node>
<node concept="3clFbS" id="4rRw8_AuOep" role="1prKM_">
<node concept="YS8fn" id="4rRw8_AuOe_" role="3cqZAp">
<node concept="2ShNRf" id="4rRw8_AuOeV" role="YScLw">
<node concept="1pGfFk" id="4rRw8_AuOnv" role="2ShVmc">
<ref role="37wK5l" to="wyt6:~IllegalStateException.&lt;init&gt;()" resolve="IllegalStateException" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="4rRw8_AuOAF" role="3cqZAp">
<node concept="3cpWsn" id="4rRw8_AuOAG" role="3cpWs9">
<property role="TrG5h" value="bound" />
<node concept="3Tqbb2" id="4rRw8_AuOA_" role="1tU5fm">
<ref role="ehGHo" to="8tt8:7_8aRkgDGPo" resolve="Var" />
</node>
<node concept="2OqwBi" id="4rRw8_AuOAH" role="33vP2m">
<node concept="37vLTw" id="4rRw8_AuOAI" role="2Oq$k0">
<ref role="3cqZAo" node="4rRw8_AuDnU" resolve="allBound" />
</node>
<node concept="1z4cxt" id="4rRw8_AuOAJ" role="2OqNvi">
<node concept="1bVj0M" id="4rRw8_AuOAK" role="23t8la">
<node concept="3clFbS" id="4rRw8_AuOAL" role="1bW5cS">
<node concept="3clFbF" id="4rRw8_AuOAM" role="3cqZAp">
<node concept="17R0WA" id="4rRw8_AuOAN" role="3clFbG">
<node concept="2OqwBi" id="4rRw8_AuOAO" role="3uHU7w">
<node concept="13iPFW" id="4rRw8_AuOAP" role="2Oq$k0" />
<node concept="3TrcHB" id="4rRw8_AuOAQ" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
<node concept="2OqwBi" id="4rRw8_AuOAR" role="3uHU7B">
<node concept="37vLTw" id="4rRw8_AuOAS" role="2Oq$k0">
<ref role="3cqZAo" node="4rRw8_AuOAU" resolve="it" />
</node>
<node concept="3TrcHB" id="4rRw8_AuOAT" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="4rRw8_AuOAU" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="4rRw8_AuOAV" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="4rRw8_AuXKG" role="3cqZAp" />
<node concept="3clFbJ" id="4rRw8_AuPqc" role="3cqZAp">
<node concept="3clFbS" id="4rRw8_AuPqe" role="3clFbx">
<node concept="3cpWs6" id="4rRw8_AuPKr" role="3cqZAp">
<node concept="37vLTw" id="4rRw8_AuPKJ" role="3cqZAk">
<ref role="3cqZAo" node="4rRw8_AuOAG" resolve="bound" />
</node>
</node>
</node>
<node concept="3y3z36" id="4rRw8_AuPJu" role="3clFbw">
<node concept="10Nm6u" id="4rRw8_AuPK1" role="3uHU7w" />
<node concept="37vLTw" id="4rRw8_AuP_4" role="3uHU7B">
<ref role="3cqZAo" node="4rRw8_AuOAG" resolve="bound" />
</node>
</node>
</node>
<node concept="3clFbH" id="4rRw8_AuEBW" role="3cqZAp" />
<node concept="3clFbF" id="4rRw8_AuR5N" role="3cqZAp">
<node concept="37vLTI" id="4rRw8_AuRwC" role="3clFbG">
<node concept="37vLTw" id="4rRw8_AuRyY" role="37vLTx">
<ref role="3cqZAo" node="4rRw8_AuAJD" resolve="binder" />
</node>
<node concept="37vLTw" id="4rRw8_AuR5L" role="37vLTJ">
<ref role="3cqZAo" node="4rRw8_AuQzl" resolve="current" />
</node>
</node>
</node>
</node>
<node concept="3clFbT" id="4rRw8_AuSKI" role="2$JKZa">
<property role="3clFbU" value="true" />
</node>
</node>
<node concept="3clFbH" id="4rRw8_AtH9u" role="3cqZAp" />
</node>
<node concept="16euLQ" id="4rRw8_AtH8Q" role="16eVyc" />
</node>
<node concept="13hLZK" id="4rRw8_AtH8g" role="13h7CW">
<node concept="3clFbS" id="4rRw8_AtH8h" role="2VODD2" />
</node>
</node>
</model>

View File

@ -88,6 +88,7 @@
<concept id="5692353713941573329" name="jetbrains.mps.lang.editor.structure.QueryFunction_TransformationMenu_ActionLabelText" flags="ig" index="1hCUdq" />
<concept id="3308396621974580100" name="jetbrains.mps.lang.editor.structure.SubstituteMenu_Default" flags="ng" index="3p36aQ" />
<concept id="1139848536355" name="jetbrains.mps.lang.editor.structure.CellModel_WithRole" flags="ng" index="1$h60E">
<property id="1139852716018" name="noTargetText" index="1$x2rV" />
<reference id="1140103550593" name="relationDeclaration" index="1NtTu8" />
</concept>
<concept id="1073389214265" name="jetbrains.mps.lang.editor.structure.EditorCellModel" flags="ng" index="3EYTF0">
@ -129,6 +130,7 @@
</concept>
</language>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<concept id="1080223426719" name="jetbrains.mps.baseLanguage.structure.OrExpression" flags="nn" index="22lmx$" />
<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" />
@ -355,7 +357,7 @@
</node>
<node concept="24kQdi" id="7_8aRkgE08o">
<property role="3GE5qa" value="expr.fun" />
<ref role="1XX52x" to="8tt8:7_8aRkgDGQi" resolve="VarType" />
<ref role="1XX52x" to="8tt8:7_8aRkgDGQi" resolve="BindVar" />
<node concept="3EZMnI" id="7_8aRkgE08q" role="2wV5jI">
<node concept="3F1sOY" id="7_8aRkgE08x" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:7_8aRkgDGQj" resolve="var" />
@ -389,6 +391,9 @@
<node concept="3F1sOY" id="7_8aRkgE090" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:7_8aRkgDGPL" resolve="fun" />
</node>
<node concept="3F0ifn" id="4ZByBOoFhg_" role="3EZMnx">
<property role="3F0ifm" value=" " />
</node>
<node concept="3F1sOY" id="7_8aRkgE096" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:7_8aRkgDGPX" resolve="arg" />
</node>
@ -848,7 +853,7 @@
<node concept="3cpWsn" id="7_8aRkgGaHx" role="3cpWs9">
<property role="TrG5h" value="varType" />
<node concept="3Tqbb2" id="7_8aRkgGaHp" role="1tU5fm">
<ref role="ehGHo" to="8tt8:7_8aRkgDGQi" resolve="VarType" />
<ref role="ehGHo" to="8tt8:7_8aRkgDGQi" resolve="BindVar" />
</node>
<node concept="2OqwBi" id="7_8aRkgGaHy" role="33vP2m">
<node concept="2OqwBi" id="7_8aRkgGaHz" role="2Oq$k0">
@ -860,7 +865,7 @@
</node>
</node>
<node concept="2DeJnY" id="7_8aRkgGRu1" role="2OqNvi">
<ref role="1A9B2P" to="8tt8:7_8aRkgDGQi" resolve="VarType" />
<ref role="1A9B2P" to="8tt8:7_8aRkgDGQi" resolve="BindVar" />
</node>
</node>
</node>
@ -957,5 +962,105 @@
<property role="3GE5qa" value="expr.fun" />
<ref role="aqKnT" to="8tt8:7_8aRkgDGPK" resolve="App" />
</node>
<node concept="24kQdi" id="3_qfG1EP6NQ">
<property role="3GE5qa" value="type" />
<ref role="1XX52x" to="8tt8:3_qfG1EP6NP" resolve="StrType" />
<node concept="3EZMnI" id="3_qfG1EP6NS" role="2wV5jI">
<node concept="3F0ifn" id="3_qfG1EP6NZ" role="3EZMnx">
<property role="3F0ifm" value="Str" />
</node>
<node concept="l2Vlx" id="3_qfG1EP6NV" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="3_qfG1EP6O3">
<property role="3GE5qa" value="type" />
<ref role="1XX52x" to="8tt8:3_qfG1EP6O2" resolve="NumType" />
<node concept="3EZMnI" id="3_qfG1EP6O5" role="2wV5jI">
<node concept="3F0ifn" id="3_qfG1EP6Oc" role="3EZMnx">
<property role="3F0ifm" value="Num" />
</node>
<node concept="l2Vlx" id="3_qfG1EP6O8" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="3_qfG1EP6Og">
<property role="3GE5qa" value="type" />
<ref role="1XX52x" to="8tt8:3_qfG1EP6Of" resolve="FunType" />
<node concept="3EZMnI" id="3_qfG1EP6Oi" role="2wV5jI">
<node concept="3F0ifn" id="4rRw8_AvxCu" role="3EZMnx">
<property role="3F0ifm" value="(" />
<node concept="pkWqt" id="4rRw8_AvxCL" role="pqm2j">
<node concept="3clFbS" id="4rRw8_AvxCM" role="2VODD2">
<node concept="3clFbF" id="4rRw8_Avyxn" role="3cqZAp">
<node concept="22lmx$" id="4rRw8_AvzoJ" role="3clFbG">
<node concept="3clFbC" id="4rRw8_Avyxo" role="3uHU7B">
<node concept="28GBK8" id="4rRw8_Avyxs" role="3uHU7B">
<ref role="28GBKb" to="8tt8:3_qfG1EP6Of" resolve="FunType" />
<ref role="28H3Ia" to="8tt8:3_qfG1EP6Op" resolve="argType" />
</node>
<node concept="2OqwBi" id="4rRw8_Avyxp" role="3uHU7w">
<node concept="pncrf" id="4rRw8_Avyxq" role="2Oq$k0" />
<node concept="25OxAV" id="4rRw8_Avyxr" role="2OqNvi" />
</node>
</node>
<node concept="3clFbC" id="4rRw8_AvzwM" role="3uHU7w">
<node concept="28GBK8" id="4rRw8_AvzwN" role="3uHU7B">
<ref role="28GBKb" to="8tt8:3_qfG1EP6Of" resolve="FunType" />
<ref role="28H3Ia" to="8tt8:3_qfG1EP6O_" resolve="resType" />
</node>
<node concept="2OqwBi" id="4rRw8_AvzwO" role="3uHU7w">
<node concept="pncrf" id="4rRw8_AvzwP" role="2Oq$k0" />
<node concept="25OxAV" id="4rRw8_AvzwQ" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3F1sOY" id="3_qfG1EP6OC" role="3EZMnx">
<property role="1$x2rV" value="*" />
<ref role="1NtTu8" to="8tt8:3_qfG1EP6Op" resolve="argType" />
</node>
<node concept="3F0ifn" id="3_qfG1EP6OI" role="3EZMnx">
<property role="3F0ifm" value="-&gt;" />
</node>
<node concept="3F1sOY" id="3_qfG1EP6OV" role="3EZMnx">
<property role="1$x2rV" value="*" />
<ref role="1NtTu8" to="8tt8:3_qfG1EP6O_" resolve="resType" />
</node>
<node concept="3F0ifn" id="4rRw8_AvxCE" role="3EZMnx">
<property role="3F0ifm" value=")" />
<node concept="pkWqt" id="4rRw8_Av_at" role="pqm2j">
<node concept="3clFbS" id="4rRw8_Av_au" role="2VODD2">
<node concept="3clFbF" id="4rRw8_Av_hW" role="3cqZAp">
<node concept="22lmx$" id="4rRw8_Av_hX" role="3clFbG">
<node concept="3clFbC" id="4rRw8_Av_hY" role="3uHU7B">
<node concept="28GBK8" id="4rRw8_Av_hZ" role="3uHU7B">
<ref role="28GBKb" to="8tt8:3_qfG1EP6Of" resolve="FunType" />
<ref role="28H3Ia" to="8tt8:3_qfG1EP6Op" resolve="argType" />
</node>
<node concept="2OqwBi" id="4rRw8_Av_i0" role="3uHU7w">
<node concept="pncrf" id="4rRw8_Av_i1" role="2Oq$k0" />
<node concept="25OxAV" id="4rRw8_Av_i2" role="2OqNvi" />
</node>
</node>
<node concept="3clFbC" id="4rRw8_Av_i3" role="3uHU7w">
<node concept="28GBK8" id="4rRw8_Av_i4" role="3uHU7B">
<ref role="28GBKb" to="8tt8:3_qfG1EP6Of" resolve="FunType" />
<ref role="28H3Ia" to="8tt8:3_qfG1EP6O_" resolve="resType" />
</node>
<node concept="2OqwBi" id="4rRw8_Av_i5" role="3uHU7w">
<node concept="pncrf" id="4rRw8_Av_i6" role="2Oq$k0" />
<node concept="25OxAV" id="4rRw8_Av_i7" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="l2Vlx" id="3_qfG1EP6Ol" role="2iSdaV" />
</node>
</node>
</model>

View File

@ -102,7 +102,7 @@
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="bind" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="7_8aRkgDGQi" resolve="VarType" />
<ref role="20lvS9" node="7_8aRkgDGQi" resolve="BindVar" />
</node>
<node concept="1TJgyj" id="7_8aRkgDGQl" role="1TKVEi">
<property role="IQ2ns" value="8739282858702982549" />
@ -114,7 +114,7 @@
</node>
<node concept="1TIwiD" id="7_8aRkgDGQi">
<property role="EcuMT" value="8739282858702982546" />
<property role="TrG5h" value="VarType" />
<property role="TrG5h" value="BindVar" />
<property role="3GE5qa" value="expr.fun" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="7_8aRkgDGQj" role="1TKVEi">
@ -260,5 +260,45 @@
<ref role="20lvS9" node="7_8aRkgDGPJ" resolve="Expr" />
</node>
</node>
<node concept="1TIwiD" id="3_qfG1EP6Nw">
<property role="EcuMT" value="4132684604212800736" />
<property role="TrG5h" value="Type" />
<property role="R5$K7" value="true" />
<property role="R5$K2" value="false" />
<property role="3GE5qa" value="type" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
</node>
<node concept="1TIwiD" id="3_qfG1EP6NP">
<property role="EcuMT" value="4132684604212800757" />
<property role="TrG5h" value="StrType" />
<property role="3GE5qa" value="type" />
<ref role="1TJDcQ" node="3_qfG1EP6Nw" resolve="Type" />
</node>
<node concept="1TIwiD" id="3_qfG1EP6O2">
<property role="EcuMT" value="4132684604212800770" />
<property role="TrG5h" value="NumType" />
<property role="3GE5qa" value="type" />
<ref role="1TJDcQ" node="3_qfG1EP6Nw" resolve="Type" />
</node>
<node concept="1TIwiD" id="3_qfG1EP6Of">
<property role="EcuMT" value="4132684604212800783" />
<property role="TrG5h" value="FunType" />
<property role="3GE5qa" value="type" />
<ref role="1TJDcQ" node="3_qfG1EP6Nw" resolve="Type" />
<node concept="1TJgyj" id="3_qfG1EP6Op" role="1TKVEi">
<property role="IQ2ns" value="4132684604212800793" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="argType" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="3_qfG1EP6Nw" resolve="Type" />
</node>
<node concept="1TJgyj" id="3_qfG1EP6O_" role="1TKVEi">
<property role="IQ2ns" value="4132684604212800805" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="resType" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="3_qfG1EP6Nw" resolve="Type" />
</node>
</node>
</model>

File diff suppressed because it is too large Load Diff

View File

@ -54,6 +54,7 @@
<dependencies>
<dependency reexport="false">8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)</dependency>
<dependency reexport="false">af858d84-85f2-42f4-a854-0b3c6b5cd482(sample.fooblin)</dependency>
<dependency reexport="false">26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.typesystem2.runtime)</dependency>
</dependencies>
<usedDevKits>
<usedDevKit>2677cb18-f558-4e33-bc38-a5139cee06dc(jetbrains.mps.devkit.language-design)</usedDevKit>
@ -76,12 +77,14 @@
<language slang="l:3f4bc5f5-c6c1-4a28-8b10-c83066ffa4a1:jetbrains.mps.lang.constraints" version="0" />
<language slang="l:ceab5195-25ea-4f22-9b92-103b95ca8c0c:jetbrains.mps.lang.core" version="1" />
<language slang="l:7fa12e9c-b949-4976-b4fa-19accbc320b4:jetbrains.mps.lang.dataFlow" version="0" />
<language slang="l:f4ad079d-bc71-4ffb-9600-9328705cf998:jetbrains.mps.lang.descriptor" version="0" />
<language slang="l:18bc6592-03a6-4e29-a83a-7ff23bde13ba:jetbrains.mps.lang.editor" version="4" />
<language slang="l:64d34fcd-ad02-4e73-aff8-a581124c2e30:jetbrains.mps.lang.findUsages" version="0" />
<language slang="l:b401a680-8325-4110-8fd3-84331ff25bef:jetbrains.mps.lang.generator" version="0" />
<language slang="l:d7706f63-9be2-479c-a3da-ae92af1e64d5:jetbrains.mps.lang.generator.generationContext" version="0" />
<language slang="l:d7a92d38-f7db-40d0-8431-763b0c3c9f20:jetbrains.mps.lang.intentions" version="0" />
<language slang="l:d4615e3b-d671-4ba9-af01-2b78369b0ba7:jetbrains.mps.lang.pattern" version="1" />
<language slang="l:86ef8290-12bb-4ca7-947f-093788f263a9:jetbrains.mps.lang.project" version="0" />
<language slang="l:3a13115c-633c-4c5c-bbcc-75c4219e9555:jetbrains.mps.lang.quotation" version="0" />
<language slang="l:3ecd7c84-cde3-45de-886c-135ecc69b742:jetbrains.mps.lang.refactoring" version="0" />
<language slang="l:982eb8df-2c96-4bd7-9963-11712ea622e5:jetbrains.mps.lang.resources" version="2" />
@ -92,6 +95,8 @@
<language slang="l:b83431fe-5c8f-40bc-8a36-65e25f4dd253:jetbrains.mps.lang.textGen" version="0" />
<language slang="l:9ded098b-ad6a-4657-bfd9-48636cfe8bc3:jetbrains.mps.lang.traceable" version="0" />
<language slang="l:7a5dda62-9140-4668-ab76-d5ed1746f2b2:jetbrains.mps.lang.typesystem" version="0" />
<language slang="l:c4803b19-6d89-4a3b-bf82-390769514add:jetbrains.mps.lang.typesystem2" version="0" />
<language slang="l:35320f26-77cb-4c55-be9f-a97a27770af1:jetbrains.mps.logic" version="0" />
</languageVersions>
<dependencyVersions>
<module reference="3f233e7f-b8a6-46d2-a57f-795d56775243(Annotations)" version="0" />
@ -101,6 +106,9 @@
<module reference="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" version="0" />
<module reference="d7eb0a2a-bd50-4576-beae-e4a89db35f20(jetbrains.mps.lang.scopes.runtime)" version="0" />
<module reference="c72da2b9-7cce-4447-8389-f407dc1158b7(jetbrains.mps.lang.structure)" version="0" />
<module reference="26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.typesystem2.runtime)" version="0" />
<module reference="9c4ae21e-62e0-4110-95b7-191b357a42d2(jetbrains.mps.lang.typesystem2.samplechecker.handler.util)" version="0" />
<module reference="bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)" version="0" />
<module reference="af858d84-85f2-42f4-a854-0b3c6b5cd482(sample.fooblin)" version="0" />
</dependencyVersions>
<extendedLanguages />

View File

@ -20,7 +20,7 @@
<concept id="8739282858702982568" name="sample.fooblin.structure.Doc" flags="ng" index="1DVIrt">
<child id="8739282858702982571" name="clause" index="1DVIru" />
</concept>
<concept id="8739282858702982546" name="sample.fooblin.structure.VarType" flags="ng" index="1DVIrB">
<concept id="8739282858702982546" name="sample.fooblin.structure.BindVar" flags="ng" index="1DVIrB">
<child id="8739282858702982547" name="var" index="1DVIrA" />
</concept>
<concept id="8739282858702982543" name="sample.fooblin.structure.Abs" flags="ng" index="1DVIrU">
@ -30,6 +30,9 @@
<concept id="8739282858702985712" name="sample.fooblin.structure.NumConst" flags="ng" index="1DVJa5">
<property id="8739282858702985713" name="value" index="1DVJa4" />
</concept>
<concept id="8739282858702985676" name="sample.fooblin.structure.StringConst" flags="ng" index="1DVJaT">
<property id="8739282858702985677" name="value" index="1DVJaS" />
</concept>
<concept id="8739282858702985614" name="sample.fooblin.structure.LetClause" flags="ng" index="1DVJbV">
<child id="8739282858702985617" name="expr" index="1DVJb$" />
<child id="8739282858702985615" name="var" index="1DVJbU" />
@ -40,12 +43,54 @@
<property role="TrG5h" value="Demo1" />
<node concept="1DVJbV" id="7_8aRkgE06X" role="1DVIru">
<node concept="1DVIoH" id="7_8aRkgE06Z" role="1DVJbU">
<property role="TrG5h" value="x" />
<property role="TrG5h" value="v" />
</node>
<node concept="1DVJa5" id="7_8aRkgE076" role="1DVJb$">
<property role="1DVJa4" value="2" />
</node>
</node>
<node concept="1DVJbV" id="44a9n8Es6Qy" role="1DVIru">
<node concept="1DVIoH" id="44a9n8Es6Q$" role="1DVJbU">
<property role="TrG5h" value="w" />
</node>
<node concept="1DVIo5" id="4ZByBOoFgQW" role="1DVJb$">
<node concept="1DVIrU" id="4ZByBOoFgQ_" role="1DVIo4">
<node concept="1DVIrB" id="4ZByBOoFgQH" role="1DVIr_">
<node concept="1DVIoH" id="4ZByBOoFgQx" role="1DVIrA">
<property role="TrG5h" value="y" />
</node>
</node>
<node concept="1DVIoH" id="4rRw8_Avoyv" role="1DVIrw">
<property role="TrG5h" value="y" />
</node>
</node>
<node concept="1DVIo5" id="6siydCyjxU0" role="1DVIo8">
<node concept="1DVJaT" id="6siydCyjxUp" role="1DVIo8">
<property role="1DVJaS" value="asd" />
</node>
<node concept="1DVIrU" id="44a9n8Es6R8" role="1DVIo4">
<node concept="1DVIrB" id="44a9n8Es6Rg" role="1DVIr_">
<node concept="1DVIoH" id="44a9n8Es6R4" role="1DVIrA">
<property role="TrG5h" value="x" />
</node>
</node>
<node concept="1DVIrU" id="4rRw8_Avoz9" role="1DVIrw">
<node concept="1DVIoH" id="4rRw8_Avozu" role="1DVIrw">
<property role="TrG5h" value="x" />
</node>
<node concept="1DVIrB" id="4rRw8_Avozh" role="1DVIr_">
<node concept="1DVIoH" id="4rRw8_Avoz5" role="1DVIrA">
<property role="TrG5h" value="z" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1DVIrt" id="1PL$JmLA85j">
<property role="TrG5h" value="Demo2" />
<node concept="1DVJbV" id="7_8aRkgHLyo" role="1DVIru">
<node concept="1DVIoH" id="7_8aRkgHLyq" role="1DVJbU">
<property role="TrG5h" value="Y" />