New features in typechecking lang to facilitate working with types

Introduce TypeTermTable as an alternative to TermTable dedicated to
types. A "type term" declaration has a type builder: an expression
which creates the corresponding SNode.
To access term's features on can use FeatureReferenceExpression.

The new _ExpectType_ _RecoverType_ rule tables are automatically added
to the user's 'types' aspect and serve to extract types from types.

AssignType and RecoverType pseudo-constraints can be used to
extract/assign or just extract the type, correspondingly.
This commit is contained in:
Fedor Isakov 2021-09-21 17:45:17 +02:00
parent 82b04c23ae
commit ac89cbb3b6
8 changed files with 2139 additions and 109 deletions

View File

@ -27,6 +27,7 @@
<dependencies>
<dependency reexport="false">f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)</dependency>
<dependency reexport="false">6998f568-f0e9-473b-b4a8-9efb6499fc8d(jetbrains.mps.coderules.typechecking)</dependency>
<dependency reexport="false">c4803b19-6d89-4a3b-bf82-390769514add(jetbrains.mps.lang.coderules)</dependency>
</dependencies>
<languageVersions>
<language slang="l:f3061a53-9226-4cc5-a443-f952ceaf5816:jetbrains.mps.baseLanguage" version="11" />
@ -67,6 +68,7 @@
<module reference="52b81ac7-93fd-4e9e-b972-4995882da6d4(jetbrains.mps.baseLanguage.references.runtime)" version="0" />
<module reference="e39e4a59-8cb6-498e-860e-8fa8361c0d90(jetbrains.mps.baseLanguage.scopes)" version="0" />
<module reference="f97d84b2-8bad-4fdd-8ede-da17b3eacf4c(jetbrains.mps.coderules)" version="0" />
<module reference="f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)" version="0" />
<module reference="6998f568-f0e9-473b-b4a8-9efb6499fc8d(jetbrains.mps.coderules.typechecking)" version="0" />
<module reference="942985d5-7bcf-46ee-8b79-7b662eaebb4e(jetbrains.mps.dataform)" version="0" />
<module reference="2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel)" version="0" />
@ -102,6 +104,8 @@
<dependency reexport="false">6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)</dependency>
<dependency reexport="false">f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)</dependency>
<dependency reexport="false">6998f568-f0e9-473b-b4a8-9efb6499fc8d(jetbrains.mps.coderules.typechecking)</dependency>
<dependency reexport="false">1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor)</dependency>
<dependency reexport="false">bfbdd672-7ff5-403f-af4f-16da5226f34c(jetbrains.mps.findUsages.runtime)</dependency>
</dependencies>
<languageVersions>
<language slang="l:f3061a53-9226-4cc5-a443-f952ceaf5816:jetbrains.mps.baseLanguage" version="11" />
@ -126,6 +130,7 @@
<language slang="l:ceab5195-25ea-4f22-9b92-103b95ca8c0c:jetbrains.mps.lang.core" version="2" />
<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="14" />
<language slang="l:d7a92d38-f7db-40d0-8431-763b0c3c9f20:jetbrains.mps.lang.intentions" version="1" />
<language slang="l:90746344-04fd-4286-97d5-b46ae6a81709:jetbrains.mps.lang.migration" version="2" />
<language slang="l:446c26eb-2b7b-4bf0-9b35-f83fa582753e:jetbrains.mps.lang.modelapi" version="0" />
<language slang="l:d4615e3b-d671-4ba9-af01-2b78369b0ba7:jetbrains.mps.lang.pattern" version="2" />
@ -134,6 +139,7 @@
<language slang="l:982eb8df-2c96-4bd7-9963-11712ea622e5:jetbrains.mps.lang.resources" version="2" />
<language slang="l:b3551702-269c-4f05-ba61-58060cef4292:jetbrains.mps.lang.rulesAndMessages" version="0" />
<language slang="l:d8f591ec-4d86-4af2-9f92-a9e93c803ffa:jetbrains.mps.lang.scopes" version="0" />
<language slang="l:13744753-c81f-424a-9c1b-cf8943bf4e86:jetbrains.mps.lang.sharedConcepts" version="0" />
<language slang="l:7866978e-a0f0-4cc7-81bc-4d213d9375e1:jetbrains.mps.lang.smodel" version="18" />
<language slang="l:1a8554c4-eb84-43ba-8c34-6f0d90c6e75a:jetbrains.mps.lang.smodel.query" version="3" />
<language slang="l:c72da2b9-7cce-4447-8389-f407dc1158b7:jetbrains.mps.lang.structure" version="9" />
@ -147,15 +153,20 @@
<module reference="3f233e7f-b8a6-46d2-a57f-795d56775243(Annotations)" version="0" />
<module reference="6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)" version="0" />
<module reference="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)" version="0" />
<module reference="1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor)" version="0" />
<module reference="498d89d2-c2e9-11e2-ad49-6cf049e62fe5(MPS.IDEA)" version="0" />
<module reference="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" version="0" />
<module reference="742f6602-5a2f-4313-aa6e-ae1cd4ffdc61(MPS.Platform)" version="0" />
<module reference="f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)" version="0" />
<module reference="fd392034-7849-419d-9071-12563d152375(jetbrains.mps.baseLanguage.closures)" version="0" />
<module reference="83888646-71ce-4f1c-9c53-c54016f6ad4f(jetbrains.mps.baseLanguage.collections)" version="0" />
<module reference="c7d5b9dd-a05f-4be2-bc73-f2e16994cc67(jetbrains.mps.baseLanguage.lightweightdsl)" version="0" />
<module reference="e39e4a59-8cb6-498e-860e-8fa8361c0d90(jetbrains.mps.baseLanguage.scopes)" version="0" />
<module reference="f97d84b2-8bad-4fdd-8ede-da17b3eacf4c(jetbrains.mps.coderules)" version="0" />
<module reference="f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)" version="0" />
<module reference="6998f568-f0e9-473b-b4a8-9efb6499fc8d(jetbrains.mps.coderules.typechecking)" version="0" />
<module reference="942985d5-7bcf-46ee-8b79-7b662eaebb4e(jetbrains.mps.dataform)" version="0" />
<module reference="bfbdd672-7ff5-403f-af4f-16da5226f34c(jetbrains.mps.findUsages.runtime)" version="0" />
<module reference="2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel)" version="0" />
<module reference="f159adf4-3c93-40f9-9c5a-1f245a8697af(jetbrains.mps.lang.aspect)" version="0" />
<module reference="d936855b-48da-4812-a8a0-2bfddd633ac5(jetbrains.mps.lang.behavior.api)" version="0" />

View File

@ -70,10 +70,18 @@
<concept id="1138411891628" name="jetbrains.mps.lang.smodel.structure.SNodeOperation" flags="nn" index="eCIE_">
<child id="1144104376918" name="parameter" index="1xVPHs" />
</concept>
<concept id="2396822768958367367" name="jetbrains.mps.lang.smodel.structure.AbstractTypeCastExpression" flags="nn" index="$5XWr">
<child id="6733348108486823193" name="leftExpression" index="1m5AlR" />
<child id="3906496115198199033" name="conceptArgument" index="3oSUPX" />
</concept>
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
<concept id="1139613262185" name="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" flags="nn" index="1mfA1w" />
<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="1140137987495" name="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" flags="nn" index="1PxgMI">
<property id="1238684351431" name="asCast" index="1BlNFB" />
</concept>
<concept id="1138055754698" name="jetbrains.mps.lang.smodel.structure.SNodeType" flags="in" index="3Tqbb2">
<reference id="1138405853777" name="concept" index="ehGHo" />
</concept>
@ -91,7 +99,7 @@
</language>
</registry>
<node concept="13h7C7" id="7lmP5gAXQeM">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="13h7C2" to="zfi7:7lmP5gALJP$" resolve="TypecheckingQueryTemplate" />
<node concept="13i0hz" id="3vih52511I4" role="13h7CS">
<property role="TrG5h" value="getQueryClassfier" />
@ -120,7 +128,7 @@
</node>
</node>
<node concept="13h7C7" id="7lmP5gAXSzm">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="13h7C2" to="zfi7:7lmP5gALJQ1" resolve="CheckQueryTemplate" />
<node concept="13hLZK" id="7lmP5gAXSzn" role="13h7CW">
<node concept="3clFbS" id="7lmP5gAXSzo" role="2VODD2" />
@ -149,7 +157,7 @@
</node>
</node>
<node concept="13h7C7" id="7lmP5gAXT$3">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="13h7C2" to="zfi7:7lmP5gALKDQ" resolve="TypeofQueryTemplate" />
<node concept="13hLZK" id="7lmP5gAXT$4" role="13h7CW">
<node concept="3clFbS" id="7lmP5gAXT$5" role="2VODD2" />
@ -178,7 +186,7 @@
</node>
</node>
<node concept="13h7C7" id="7lmP5gAYgV9">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="13h7C2" to="zfi7:7lmP5gAYc5S" resolve="TypecheckingQueryParameter" />
<node concept="13i0hz" id="7lmP5gAYgVD" role="13h7CS">
<property role="TrG5h" value="getTypecheckingQueryTemplate" />
@ -206,7 +214,7 @@
</node>
</node>
<node concept="13h7C7" id="7lmP5gAYJ47">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="13h7C2" to="zfi7:7lmP5gAYIZq" resolve="ConvertsQueryTemplate" />
<node concept="13hLZK" id="7lmP5gAYJ48" role="13h7CW">
<node concept="3clFbS" id="7lmP5gAYJ49" role="2VODD2" />
@ -235,7 +243,7 @@
</node>
</node>
<node concept="13h7C7" id="7lmP5gAYJq0">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="13h7C2" to="zfi7:7lmP5gAYJev" resolve="CoerceToQueryTemplate" />
<node concept="13hLZK" id="7lmP5gAYJq1" role="13h7CW">
<node concept="3clFbS" id="7lmP5gAYJq2" role="2VODD2" />
@ -263,5 +271,33 @@
</node>
</node>
</node>
<node concept="13h7C7" id="1vAI4X$KvCS">
<property role="3GE5qa" value="typeTerm" />
<ref role="13h7C2" to="zfi7:6wBZuQUG1yn" resolve="TypeNodeBuilder" />
<node concept="13i0hz" id="1vAI4X$KvKn" role="13h7CS">
<property role="TrG5h" value="getTypeTermDeclaration" />
<node concept="3Tm1VV" id="1vAI4X$KvKo" role="1B3o_S" />
<node concept="3Tqbb2" id="1vAI4X$KvN3" role="3clF45">
<ref role="ehGHo" to="zfi7:6wBZuQUFd0b" resolve="TypeTermDeclaration" />
</node>
<node concept="3clFbS" id="1vAI4X$KvKq" role="3clF47">
<node concept="3clFbF" id="1vAI4X$Kwv_" role="3cqZAp">
<node concept="1PxgMI" id="1vAI4X$Kx9D" role="3clFbG">
<property role="1BlNFB" value="true" />
<node concept="chp4Y" id="1vAI4X$Kxg5" role="3oSUPX">
<ref role="cht4Q" to="zfi7:6wBZuQUFd0b" resolve="TypeTermDeclaration" />
</node>
<node concept="2OqwBi" id="1vAI4X$KwDU" role="1m5AlR">
<node concept="13iPFW" id="1vAI4X$Kwv$" role="2Oq$k0" />
<node concept="1mfA1w" id="1vAI4X$KwQg" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="13hLZK" id="1vAI4X$KvCT" role="13h7CW">
<node concept="3clFbS" id="1vAI4X$KvCU" role="2VODD2" />
</node>
</node>
</model>

View File

@ -8,7 +8,352 @@
</languages>
<imports>
<import index="zfi7" ref="r:39840d4e-f61c-4452-88c5-75b1eb10e892(jetbrains.mps.lang.typechecking.structure)" />
<import index="o8zo" ref="r:314576fc-3aee-4386-a0a5-a38348ac317d(jetbrains.mps.scope)" />
<import index="wq2x" ref="r:83137295-aa87-45e8-b0c0-ede2adf2a396(jetbrains.mps.lang.coderules.structure)" />
<import index="h103" ref="r:9c80bc3e-1982-4e7d-8fe4-1b25a1c02635(jetbrains.mps.lang.typechecking.behavior)" />
<import index="x5bw" ref="r:15ea4f4e-2f41-4ce3-b7e4-a4e0737f0171(jetbrains.mps.lang.coderules.behavior)" />
<import index="tpck" ref="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" implicit="true" />
<import index="wyt6" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)" implicit="true" />
</imports>
<registry />
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<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" />
</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="1182160077978" name="jetbrains.mps.baseLanguage.structure.AnonymousClassCreator" flags="nn" index="YeOm9">
<child id="1182160096073" name="cls" index="YeSDq" />
</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="1513279640923991009" name="jetbrains.mps.baseLanguage.structure.IGenericClassCreator" flags="ng" index="366HgL">
<property id="1513279640906337053" name="inferTypeParams" index="373rjd" />
</concept>
<concept id="1068498886296" name="jetbrains.mps.baseLanguage.structure.VariableReference" flags="nn" index="37vLTw">
<reference id="1068581517664" name="variableDeclaration" index="3cqZAo" />
</concept>
<concept id="1068498886292" name="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" flags="ir" index="37vLTG" />
<concept id="1225271177708" name="jetbrains.mps.baseLanguage.structure.StringType" flags="in" index="17QB3L" />
<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="1068580123134" name="parameter" index="3clF46" />
<child id="1068580123135" name="body" index="3clF47" />
</concept>
<concept id="1068580123165" name="jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" flags="ig" index="3clFb_" />
<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="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="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" />
<child id="1068499141038" name="actualArgument" index="37wK5m" />
</concept>
<concept id="1212685548494" name="jetbrains.mps.baseLanguage.structure.ClassCreator" flags="nn" index="1pGfFk" />
<concept id="1107461130800" name="jetbrains.mps.baseLanguage.structure.Classifier" flags="ng" index="3pOWGL">
<property id="521412098689998745" name="nonStatic" index="2bfB8j" />
<child id="5375687026011219971" name="member" index="jymVt" unordered="true" />
</concept>
<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="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" />
<concept id="1170345865475" name="jetbrains.mps.baseLanguage.structure.AnonymousClass" flags="ig" index="1Y3b0j">
<reference id="1170346070688" name="classifier" index="1Y3XeK" />
</concept>
</language>
<language id="3f4bc5f5-c6c1-4a28-8b10-c83066ffa4a1" name="jetbrains.mps.lang.constraints">
<concept id="6702802731807351367" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_CanBeAChild" flags="in" index="9S07l" />
<concept id="1202989658459" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_parentNode" flags="nn" index="nLn13" />
<concept id="8966504967485224688" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_contextNode" flags="nn" index="2rP1CM" />
<concept id="5564765827938091039" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_ReferentSearchScope_Scope" flags="ig" index="3dgokm" />
<concept id="1213093968558" name="jetbrains.mps.lang.constraints.structure.ConceptConstraints" flags="ng" index="1M2fIO">
<reference id="1213093996982" name="concept" index="1M2myG" />
<child id="6702802731807737306" name="canBeChild" index="9Vyp8" />
<child id="1213100494875" name="referent" index="1Mr941" />
</concept>
<concept id="1148687176410" name="jetbrains.mps.lang.constraints.structure.NodeReferentConstraint" flags="ng" index="1N5Pfh">
<reference id="1148687202698" name="applicableLink" index="1N5Vy1" />
<child id="1148687345559" name="searchScopeFactory" index="1N6uqs" />
</concept>
</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="1179409122411" name="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" flags="nn" index="2qgKlT" />
<concept id="2396822768958367367" name="jetbrains.mps.lang.smodel.structure.AbstractTypeCastExpression" flags="nn" index="$5XWr">
<child id="6733348108486823193" name="leftExpression" index="1m5AlR" />
<child id="3906496115198199033" name="conceptArgument" index="3oSUPX" />
</concept>
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
<concept id="1172008320231" name="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" flags="nn" index="3x8VRR" />
<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="1140137987495" name="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" flags="nn" index="1PxgMI">
<property id="1238684351431" name="asCast" index="1BlNFB" />
</concept>
<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>
</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="1176906603202" name="jetbrains.mps.baseLanguage.collections.structure.BinaryOperation" flags="nn" index="56pJg">
<child id="1176906787974" name="rightExpression" index="576Qk" />
</concept>
<concept id="1151688443754" name="jetbrains.mps.baseLanguage.collections.structure.ListType" flags="in" index="_YKpA">
<child id="1151688676805" name="elementType" index="_ZDj9" />
</concept>
<concept id="1151702311717" name="jetbrains.mps.baseLanguage.collections.structure.ToListOperation" flags="nn" index="ANE8D" />
<concept id="3358009230509553641" name="jetbrains.mps.baseLanguage.collections.structure.LinkedListType" flags="in" index="2BANLN" />
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1201792049884" name="jetbrains.mps.baseLanguage.collections.structure.TranslateOperation" flags="nn" index="3goQfb" />
<concept id="1180964022718" name="jetbrains.mps.baseLanguage.collections.structure.ConcatOperation" flags="nn" index="3QWeyG" />
</language>
</registry>
<node concept="1M2fIO" id="1vAI4X$Mne2">
<property role="3GE5qa" value="typeTerm" />
<ref role="1M2myG" to="zfi7:1vAI4X$MkW8" resolve="FeatureReferenceExpression" />
<node concept="1N5Pfh" id="1vAI4X$Mx9h" role="1Mr941">
<ref role="1N5Vy1" to="zfi7:1vAI4X$MlAp" resolve="feature" />
<node concept="3dgokm" id="1vAI4X$Mxpx" role="1N6uqs">
<node concept="3clFbS" id="1vAI4X$Mxpz" role="2VODD2">
<node concept="3cpWs8" id="1vAI4X$MyiX" role="3cqZAp">
<node concept="3cpWsn" id="1vAI4X$MyiY" role="3cpWs9">
<property role="TrG5h" value="tnb" />
<node concept="3Tqbb2" id="1vAI4X$My8M" role="1tU5fm">
<ref role="ehGHo" to="zfi7:6wBZuQUG1yn" resolve="TypeNodeBuilder" />
</node>
<node concept="2OqwBi" id="1vAI4X$MyiZ" role="33vP2m">
<node concept="2rP1CM" id="1vAI4X$Myj0" role="2Oq$k0" />
<node concept="2Xjw5R" id="1vAI4X$Myj1" role="2OqNvi">
<node concept="1xMEDy" id="1vAI4X$Myj2" role="1xVPHs">
<node concept="chp4Y" id="1vAI4X$Myj3" role="ri$Ld">
<ref role="cht4Q" to="zfi7:6wBZuQUG1yn" resolve="TypeNodeBuilder" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbJ" id="1vAI4X$Mz1X" role="3cqZAp">
<node concept="3clFbS" id="1vAI4X$Mz2f" role="3clFbx">
<node concept="3cpWs6" id="1vAI4X$MzaQ" role="3cqZAp">
<node concept="2ShNRf" id="1vAI4X$Mzhs" role="3cqZAk">
<node concept="1pGfFk" id="1vAI4X$MBt_" role="2ShVmc">
<property role="373rjd" value="true" />
<ref role="37wK5l" to="o8zo:7ipADkTfAzT" resolve="EmptyScope" />
</node>
</node>
</node>
</node>
<node concept="3clFbC" id="1vAI4X$My$H" role="3clFbw">
<node concept="10Nm6u" id="1vAI4X$MyPv" role="3uHU7w" />
<node concept="37vLTw" id="1vAI4X$Myj4" role="3uHU7B">
<ref role="3cqZAo" node="1vAI4X$MyiY" resolve="tnb" />
</node>
</node>
</node>
<node concept="3cpWs8" id="1vAI4X$MGI4" role="3cqZAp">
<node concept="3cpWsn" id="1vAI4X$MGI5" role="3cpWs9">
<property role="TrG5h" value="decls" />
<node concept="2BANLN" id="1vAI4X$MGAd" role="1tU5fm">
<node concept="3Tqbb2" id="1vAI4X$MGAg" role="_ZDj9">
<ref role="ehGHo" to="wq2x:JOGAOsxaC9" resolve="TermDeclaration" />
</node>
</node>
<node concept="2OqwBi" id="1vAI4X$MGI6" role="33vP2m">
<node concept="2OqwBi" id="1vAI4X$MGI7" role="2Oq$k0">
<node concept="37vLTw" id="1vAI4X$MGI8" role="2Oq$k0">
<ref role="3cqZAo" node="1vAI4X$MyiY" resolve="tnb" />
</node>
<node concept="2qgKlT" id="1vAI4X$MGI9" role="2OqNvi">
<ref role="37wK5l" to="h103:1vAI4X$KvKn" resolve="getTypeTermDeclaration" />
</node>
</node>
<node concept="2qgKlT" id="1vAI4X$MGIa" role="2OqNvi">
<ref role="37wK5l" to="x5bw:4lCLOtww4qi" resolve="prototypesStack" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="1vAI4X$N8T9" role="3cqZAp">
<node concept="3cpWsn" id="1vAI4X$N8Ta" role="3cpWs9">
<property role="TrG5h" value="features" />
<node concept="_YKpA" id="1vAI4X$N8$0" role="1tU5fm">
<node concept="3Tqbb2" id="1vAI4X$N8$3" role="_ZDj9">
<ref role="ehGHo" to="wq2x:JOGAOsxiL_" resolve="TermFeature" />
</node>
</node>
<node concept="2OqwBi" id="1vAI4X$N8Tb" role="33vP2m">
<node concept="2OqwBi" id="1vAI4X$N8Tc" role="2Oq$k0">
<node concept="37vLTw" id="1vAI4X$N8Td" role="2Oq$k0">
<ref role="3cqZAo" node="1vAI4X$MGI5" resolve="decls" />
</node>
<node concept="3goQfb" id="1vAI4X$N8Te" role="2OqNvi">
<node concept="1bVj0M" id="1vAI4X$N8Tf" role="23t8la">
<node concept="3clFbS" id="1vAI4X$N8Tg" role="1bW5cS">
<node concept="3clFbF" id="1vAI4X$N8Th" role="3cqZAp">
<node concept="2OqwBi" id="1vAI4X$N8Ti" role="3clFbG">
<node concept="2OqwBi" id="1vAI4X$N8Tj" role="2Oq$k0">
<node concept="37vLTw" id="1vAI4X$N8Tk" role="2Oq$k0">
<ref role="3cqZAo" node="1vAI4X$N8Tq" resolve="it" />
</node>
<node concept="2qgKlT" id="1vAI4X$N8Tl" role="2OqNvi">
<ref role="37wK5l" to="x5bw:7c96q9tALRr" resolve="valueFeatures" />
</node>
</node>
<node concept="3QWeyG" id="1vAI4X$N8Tm" role="2OqNvi">
<node concept="2OqwBi" id="1vAI4X$N8Tn" role="576Qk">
<node concept="37vLTw" id="1vAI4X$N8To" role="2Oq$k0">
<ref role="3cqZAo" node="1vAI4X$N8Tq" resolve="it" />
</node>
<node concept="2qgKlT" id="1vAI4X$N8Tp" role="2OqNvi">
<ref role="37wK5l" to="x5bw:7c96q9tCSX_" resolve="childFeatures" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="1vAI4X$N8Tq" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="1vAI4X$N8Tr" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="ANE8D" id="1vAI4X$N8Ts" role="2OqNvi" />
</node>
</node>
</node>
<node concept="3clFbF" id="1vAI4X$Nbcb" role="3cqZAp">
<node concept="2ShNRf" id="1vAI4X$Nbc7" role="3clFbG">
<node concept="YeOm9" id="1vAI4X$Ng2c" role="2ShVmc">
<node concept="1Y3b0j" id="1vAI4X$Ng2f" role="YeSDq">
<property role="2bfB8j" value="true" />
<property role="373rjd" value="true" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<node concept="3Tm1VV" id="1vAI4X$Ng2g" role="1B3o_S" />
<node concept="37vLTw" id="1vAI4X$Nfo5" role="37wK5m">
<ref role="3cqZAo" node="1vAI4X$N8Ta" resolve="features" />
</node>
<node concept="3clFb_" id="1vAI4X$No_G" role="jymVt">
<property role="TrG5h" value="getName" />
<node concept="37vLTG" id="1vAI4X$NrYO" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="1vAI4X$Nuqz" role="1tU5fm" />
</node>
<node concept="17QB3L" id="1vAI4X$NrhC" role="3clF45" />
<node concept="3Tm1VV" id="1vAI4X$No_J" role="1B3o_S" />
<node concept="3clFbS" id="1vAI4X$No_K" role="3clF47">
<node concept="3clFbF" id="1vAI4X$Nw10" role="3cqZAp">
<node concept="2OqwBi" id="1vAI4X$NxeB" role="3clFbG">
<node concept="1PxgMI" id="1vAI4X$Nww0" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<node concept="chp4Y" id="1vAI4X$NwQs" role="3oSUPX">
<ref role="cht4Q" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
<node concept="37vLTw" id="1vAI4X$Nw0Z" role="1m5AlR">
<ref role="3cqZAo" node="1vAI4X$NrYO" resolve="child" />
</node>
</node>
<node concept="3TrcHB" id="1vAI4X$NxCg" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
<node concept="2AHcQZ" id="1vAI4X$NqAB" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="9S07l" id="1vAI4X$Mnp1" role="9Vyp8">
<node concept="3clFbS" id="1vAI4X$Mnp2" role="2VODD2">
<node concept="3clFbF" id="1vAI4X$MnT3" role="3cqZAp">
<node concept="2OqwBi" id="1vAI4X$MoGO" role="3clFbG">
<node concept="2OqwBi" id="1vAI4X$Mo2Z" role="2Oq$k0">
<node concept="nLn13" id="1vAI4X$MnT2" role="2Oq$k0" />
<node concept="2Xjw5R" id="1vAI4X$Mol2" role="2OqNvi">
<node concept="1xMEDy" id="1vAI4X$Mol4" role="1xVPHs">
<node concept="chp4Y" id="1vAI4X$Mox3" role="ri$Ld">
<ref role="cht4Q" to="zfi7:6wBZuQUG1yn" resolve="TypeNodeBuilder" />
</node>
</node>
</node>
</node>
<node concept="3x8VRR" id="1vAI4X$MoOC" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -58,6 +58,8 @@
<reference id="6591946374543067572" name="conceptDeclaration" index="aqKnT" />
<child id="5991739802479788259" name="type" index="22hAXT" />
</concept>
<concept id="1233758997495" name="jetbrains.mps.lang.editor.structure.PunctuationLeftStyleClassItem" flags="ln" index="11L4FC" />
<concept id="1233759184865" name="jetbrains.mps.lang.editor.structure.PunctuationRightStyleClassItem" flags="ln" index="11LMrY" />
<concept id="8998492695583125082" name="jetbrains.mps.lang.editor.structure.SubstituteFeature_MatchingText" flags="ng" index="16NfWO">
<child id="8998492695583129244" name="query" index="16NeZM" />
</concept>
@ -98,6 +100,7 @@
</concept>
<concept id="1073389882823" name="jetbrains.mps.lang.editor.structure.CellModel_RefNode" flags="sg" stub="730538219795960754" index="3F1sOY" />
<concept id="1073390211982" name="jetbrains.mps.lang.editor.structure.CellModel_RefNodeList" flags="sg" stub="2794558372793454595" index="3F2HdR" />
<concept id="625126330682908270" name="jetbrains.mps.lang.editor.structure.CellModel_ReferencePresentation" flags="sg" stub="730538219795961225" index="3SHvHV" />
<concept id="1166049232041" name="jetbrains.mps.lang.editor.structure.AbstractComponent" flags="ng" index="1XWOmA">
<reference id="1166049300910" name="conceptDeclaration" index="1XX52x" />
</concept>
@ -156,7 +159,7 @@
</language>
</registry>
<node concept="24kQdi" id="7lmP5gALJrJ">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gALJri" resolve="TypecheckingQueries" />
<node concept="3EZMnI" id="7lmP5gALJrL" role="2wV5jI">
<node concept="PMmxH" id="7lmP5gALJrS" role="3EZMnx">
@ -199,7 +202,7 @@
</node>
</node>
<node concept="24kQdi" id="7lmP5gALJRi">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gALJP$" resolve="TypecheckingQueryTemplate" />
<node concept="3EZMnI" id="7lmP5gALQbc" role="2wV5jI">
<node concept="3F0ifn" id="7lmP5gALQbj" role="3EZMnx">
@ -214,21 +217,21 @@
</node>
</node>
<node concept="24kQdi" id="7lmP5gALP1c">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gALJQ1" resolve="CheckQueryTemplate" />
<node concept="PMmxH" id="7lmP5gAYxcx" role="2wV5jI">
<ref role="PMmxG" node="7lmP5gAYx5Q" resolve="TypecheckingQueryTemplate_component" />
</node>
</node>
<node concept="24kQdi" id="7lmP5gALP8w">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gALKDQ" resolve="TypeofQueryTemplate" />
<node concept="PMmxH" id="7lmP5gAYx6D" role="2wV5jI">
<ref role="PMmxG" node="7lmP5gAYx5Q" resolve="TypecheckingQueryTemplate_component" />
</node>
</node>
<node concept="24kQdi" id="7lmP5gAYc72">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gAYc5S" resolve="TypecheckingQueryParameter" />
<node concept="3EZMnI" id="5EDW3XEaRlR" role="2wV5jI">
<node concept="PMmxH" id="5EDW3XEaRlY" role="3EZMnx">
@ -239,7 +242,7 @@
</node>
</node>
<node concept="22mcaB" id="7lmP5gAYcrc">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="aqKnT" to="zfi7:7lmP5gAYc5S" resolve="TypecheckingQueryParameter" />
<node concept="3ft6gV" id="5EDW3XEaQms" role="3ft7WO">
<node concept="3eGOop" id="5EDW3XEc8hU" role="3ft5RZ">
@ -293,7 +296,7 @@
</node>
<node concept="PKFIW" id="7lmP5gAYx5Q">
<property role="TrG5h" value="TypecheckingQueryTemplate_component" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gALJP$" resolve="TypecheckingQueryTemplate" />
<node concept="3EZMnI" id="7lmP5gAYx6d" role="2wV5jI">
<node concept="l2Vlx" id="7lmP5gAYx6e" role="2iSdaV" />
@ -345,20 +348,21 @@
</node>
</node>
<node concept="24kQdi" id="7lmP5gAYJ1k">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gAYIZq" resolve="ConvertsQueryTemplate" />
<node concept="PMmxH" id="7lmP5gAYJ23" role="2wV5jI">
<ref role="PMmxG" node="7lmP5gAYx5Q" resolve="TypecheckingQueryTemplate_component" />
</node>
</node>
<node concept="24kQdi" id="7lmP5gAYJor">
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1XX52x" to="zfi7:7lmP5gAYJev" resolve="CoerceToQueryTemplate" />
<node concept="PMmxH" id="7lmP5gAYJpa" role="2wV5jI">
<ref role="PMmxG" node="7lmP5gAYx5Q" resolve="TypecheckingQueryTemplate_component" />
</node>
</node>
<node concept="24kQdi" id="6wBZuQUFfnV">
<property role="3GE5qa" value="typeTerm" />
<ref role="1XX52x" to="zfi7:6wBZuQUF2vT" resolve="TypeTermTable" />
<node concept="3EZMnI" id="5hSMZ_lNwqE" role="2wV5jI">
<node concept="3EZMnI" id="5hSMZ_lNwqF" role="3EZMnx">
@ -443,6 +447,7 @@
</node>
</node>
<node concept="24kQdi" id="6wBZuQUFpkt">
<property role="3GE5qa" value="typeTerm" />
<ref role="1XX52x" to="zfi7:6wBZuQUFd0b" resolve="TypeTermDeclaration" />
<node concept="3EZMnI" id="4MEOIDFttNp" role="2wV5jI">
<node concept="PMmxH" id="6wBZuQUGw5w" role="3EZMnx">
@ -458,6 +463,7 @@
</node>
</node>
<node concept="24kQdi" id="6wBZuQUG4V5">
<property role="3GE5qa" value="typeTerm" />
<ref role="1XX52x" to="zfi7:6wBZuQUG1yn" resolve="TypeNodeBuilder" />
<node concept="3EZMnI" id="6wBZuQUG4Xz" role="2wV5jI">
<node concept="3F1sOY" id="6wBZuQUG5Ff" role="3EZMnx">
@ -466,5 +472,88 @@
<node concept="l2Vlx" id="6wBZuQUG4XA" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="1vAI4X$MmtF">
<property role="3GE5qa" value="typeTerm" />
<ref role="1XX52x" to="zfi7:1vAI4X$MkW8" resolve="FeatureReferenceExpression" />
<node concept="3EZMnI" id="1vAI4X$MmzN" role="2wV5jI">
<node concept="1iCGBv" id="1vAI4X$MmIy" role="3EZMnx">
<ref role="1NtTu8" to="zfi7:1vAI4X$MlAp" resolve="feature" />
<node concept="1sVBvm" id="1vAI4X$MmI_" role="1sWHZn">
<node concept="3SHvHV" id="1vAI4X$MmIB" role="2wV5jI" />
</node>
</node>
<node concept="l2Vlx" id="1vAI4X$MmzQ" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="4qGA5WCG54h">
<ref role="1XX52x" to="zfi7:4qGA5WCG3z$" resolve="AssignTypePseudoConstraint" />
<node concept="3EZMnI" id="4qGA5WCGeM8" role="2wV5jI">
<node concept="PMmxH" id="4qGA5WCGeVb" role="3EZMnx">
<ref role="PMmxG" to="tpco:2wZex4PafBj" resolve="alias" />
<ref role="1k5W1q" to="vxmb:7ksQUDZpd8b" resolve="ConstraintKeyword" />
</node>
<node concept="3F0ifn" id="4qGA5WCGfwe" role="3EZMnx">
<property role="3F0ifm" value="&lt;" />
<node concept="11L4FC" id="5itBwMaayLi" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11LMrY" id="5itBwM7GBU6" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F1sOY" id="4qGA5WCGgsl" role="3EZMnx">
<ref role="1NtTu8" to="zfi7:4qGA5WCG9BX" resolve="type" />
</node>
<node concept="3F0ifn" id="4qGA5WCGg66" role="3EZMnx">
<property role="3F0ifm" value="&gt;" />
<node concept="11L4FC" id="4qGA5WCGg67" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="4qGA5WCGgzX" role="3EZMnx">
<property role="3F0ifm" value="to" />
<ref role="1k5W1q" to="vxmb:7ksQUDZpd8b" resolve="ConstraintKeyword" />
</node>
<node concept="3F1sOY" id="4qGA5WCGijO" role="3EZMnx">
<ref role="1NtTu8" to="zfi7:4qGA5WCG8eX" resolve="location" />
</node>
<node concept="l2Vlx" id="4qGA5WCGeMb" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="4LE1vMPhz1V">
<ref role="1XX52x" to="zfi7:4LE1vMPhxmj" resolve="RecoverType" />
<node concept="3EZMnI" id="4LE1vMPhzr9" role="2wV5jI">
<node concept="PMmxH" id="4LE1vMPhzra" role="3EZMnx">
<ref role="1k5W1q" to="vxmb:7ksQUDZpd8b" resolve="ConstraintKeyword" />
<ref role="PMmxG" to="tpco:2wZex4PafBj" resolve="alias" />
</node>
<node concept="3F0ifn" id="4LE1vMPhzrb" role="3EZMnx">
<property role="3F0ifm" value="&lt;" />
<node concept="11L4FC" id="4LE1vMPhzrc" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11LMrY" id="4LE1vMPhzrd" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F1sOY" id="4LE1vMPhzre" role="3EZMnx">
<ref role="1NtTu8" to="zfi7:4LE1vMPhyby" resolve="term" />
</node>
<node concept="3F0ifn" id="4LE1vMPhzrf" role="3EZMnx">
<property role="3F0ifm" value="&gt;" />
<node concept="11L4FC" id="4LE1vMPhzrg" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="4LE1vMPhzrh" role="3EZMnx">
<property role="3F0ifm" value="as" />
<ref role="1k5W1q" to="vxmb:7ksQUDZpd8b" resolve="ConstraintKeyword" />
</node>
<node concept="3F1sOY" id="4LE1vMPhzri" role="3EZMnx">
<ref role="1NtTu8" to="zfi7:4LE1vMPhyzS" resolve="type" />
</node>
<node concept="l2Vlx" id="4LE1vMPhzrj" role="2iSdaV" />
</node>
</node>
</model>

View File

@ -0,0 +1,365 @@
<?xml version="1.0" encoding="UTF-8"?>
<model ref="r:8de5be67-6245-4092-8e75-6ac2abbea9d3(jetbrains.mps.lang.typechecking.intentions)">
<persistence version="9" />
<languages>
<use id="d7a92d38-f7db-40d0-8431-763b0c3c9f20" name="jetbrains.mps.lang.intentions" version="1" />
<use id="13744753-c81f-424a-9c1b-cf8943bf4e86" name="jetbrains.mps.lang.sharedConcepts" version="0" />
<devkit ref="fbc25dd2-5da4-483a-8b19-70928e1b62d7(jetbrains.mps.devkit.general-purpose)" />
</languages>
<imports>
<import index="zfi7" ref="r:39840d4e-f61c-4452-88c5-75b1eb10e892(jetbrains.mps.lang.typechecking.structure)" />
<import index="lui2" ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.module(MPS.OpenAPI/)" />
<import index="cj4x" ref="1ed103c3-3aa6-49b7-9c21-6765ee11f224/java:jetbrains.mps.openapi.editor(MPS.Editor/)" />
<import index="bbgb" ref="r:3189948c-a57a-415e-beba-405572f2d13c(jetbrains.mps.ide.findusages.model.scopes)" />
<import index="mk8z" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.progress(MPS.Core/)" />
<import index="82uw" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util.function(JDK/)" />
<import index="mhbf" ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.model(MPS.OpenAPI/)" />
<import index="w1kc" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.smodel(MPS.Core/)" />
<import index="wq2x" ref="r:83137295-aa87-45e8-b0c0-ede2adf2a396(jetbrains.mps.lang.coderules.structure)" implicit="true" />
<import index="tpck" ref="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" implicit="true" />
</imports>
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<concept id="1082485599095" name="jetbrains.mps.baseLanguage.structure.BlockStatement" flags="nn" index="9aQIb">
<child id="1082485599096" name="statements" index="9aQI4" />
</concept>
<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="1202948039474" name="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" flags="nn" index="liA8E" />
<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="1070475926800" name="jetbrains.mps.baseLanguage.structure.StringLiteral" flags="nn" index="Xl_RD">
<property id="1070475926801" name="value" index="Xl_RC" />
</concept>
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
<concept id="1070534934090" name="jetbrains.mps.baseLanguage.structure.CastExpression" flags="nn" index="10QFUN">
<child id="1070534934091" name="type" index="10QFUM" />
<child id="1070534934092" name="expression" index="10QFUP" />
</concept>
<concept id="1068431474542" name="jetbrains.mps.baseLanguage.structure.VariableDeclaration" flags="ng" index="33uBYm">
<child id="1068431790190" name="initializer" index="33vP2m" />
</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="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
<child id="5680397130376446158" name="type" index="1tU5fm" />
</concept>
<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="1082485599094" name="ifFalseStatement" index="9aQIa" />
<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="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="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" />
</concept>
<concept id="1107535904670" name="jetbrains.mps.baseLanguage.structure.ClassifierType" flags="in" index="3uibUv">
<reference id="1107535924139" name="classifier" index="3uigEE" />
</concept>
</language>
<language id="d7a92d38-f7db-40d0-8431-763b0c3c9f20" name="jetbrains.mps.lang.intentions">
<concept id="1192794744107" name="jetbrains.mps.lang.intentions.structure.IntentionDeclaration" flags="ig" index="2S6QgY" />
<concept id="1192794782375" name="jetbrains.mps.lang.intentions.structure.DescriptionBlock" flags="in" index="2S6ZIM" />
<concept id="1192795771125" name="jetbrains.mps.lang.intentions.structure.IsApplicableBlock" flags="in" index="2SaL7w" />
<concept id="1192795911897" name="jetbrains.mps.lang.intentions.structure.ExecuteBlock" flags="in" index="2Sbjvc" />
<concept id="1192796902958" name="jetbrains.mps.lang.intentions.structure.ConceptFunctionParameter_node" flags="nn" index="2Sf5sV" />
<concept id="2522969319638091381" name="jetbrains.mps.lang.intentions.structure.BaseIntentionDeclaration" flags="ig" index="2ZfUlf">
<reference id="2522969319638198290" name="forConcept" index="2ZfgGC" />
<child id="2522969319638198291" name="executeFunction" index="2ZfgGD" />
<child id="2522969319638093995" name="isApplicableFunction" index="2ZfVeh" />
<child id="2522969319638093993" name="descriptionFunction" index="2ZfVej" />
</concept>
</language>
<language id="3a13115c-633c-4c5c-bbcc-75c4219e9555" name="jetbrains.mps.lang.quotation">
<concept id="5455284157994012186" name="jetbrains.mps.lang.quotation.structure.NodeBuilderInitLink" flags="ng" index="2pIpSj">
<reference id="5455284157994012188" name="link" index="2pIpSl" />
<child id="1595412875168045827" name="initValue" index="28nt2d" />
</concept>
<concept id="5455284157993863837" name="jetbrains.mps.lang.quotation.structure.NodeBuilder" flags="nn" index="2pJPEk">
<child id="5455284157993863838" name="quotedNode" index="2pJPEn" />
</concept>
<concept id="5455284157993863840" name="jetbrains.mps.lang.quotation.structure.NodeBuilderNode" flags="nn" index="2pJPED">
<reference id="5455284157993910961" name="concept" index="2pJxaS" />
<child id="5455284157993911099" name="values" index="2pJxcM" />
</concept>
<concept id="8182547171709752110" name="jetbrains.mps.lang.quotation.structure.NodeBuilderExpression" flags="nn" index="36biLy">
<child id="8182547171709752112" name="expression" index="36biLW" />
</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="1140725362528" name="jetbrains.mps.lang.smodel.structure.Link_SetTargetOperation" flags="nn" index="2oxUTD">
<child id="1140725362529" name="linkTarget" index="2oxUTC" />
</concept>
<concept id="7453996997717780434" name="jetbrains.mps.lang.smodel.structure.Node_GetSConceptOperation" flags="nn" index="2yIwOk" />
<concept id="1145404486709" name="jetbrains.mps.lang.smodel.structure.SemanticDowncastExpression" flags="nn" index="2JrnkZ">
<child id="1145404616321" name="leftExpression" index="2JrQYb" />
</concept>
<concept id="1180636770613" name="jetbrains.mps.lang.smodel.structure.SNodeCreator" flags="nn" index="3zrR0B">
<child id="1180636770616" name="createdType" index="3zrR0E" />
</concept>
<concept id="1172326502327" name="jetbrains.mps.lang.smodel.structure.Concept_IsExactlyOperation" flags="nn" index="3O6GUB">
<child id="1206733650006" name="conceptArgument" index="3QVz_e" />
</concept>
<concept id="1140131837776" name="jetbrains.mps.lang.smodel.structure.Node_ReplaceWithAnotherOperation" flags="nn" index="1P9Npp">
<child id="1140131861877" name="replacementNode" index="1P9ThW" />
</concept>
<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>
<concept id="1228341669568" name="jetbrains.mps.lang.smodel.structure.Node_DetachOperation" flags="nn" index="3YRAZt" />
</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>
</registry>
<node concept="2S6QgY" id="4qGA5WCHkjP">
<property role="3GE5qa" value="typeTerm" />
<property role="TrG5h" value="ConvertToTypeTerm" />
<ref role="2ZfgGC" to="wq2x:JOGAOsxaC9" resolve="TermDeclaration" />
<node concept="2S6ZIM" id="4qGA5WCHkjQ" role="2ZfVej">
<node concept="3clFbS" id="4qGA5WCHkjR" role="2VODD2">
<node concept="3clFbF" id="4qGA5WCHl4S" role="3cqZAp">
<node concept="Xl_RD" id="4qGA5WCHl4R" role="3clFbG">
<property role="Xl_RC" value="Convert to Type Term Declaration" />
</node>
</node>
</node>
</node>
<node concept="2Sbjvc" id="4qGA5WCHkjS" role="2ZfgGD">
<node concept="3clFbS" id="4qGA5WCHkjT" role="2VODD2">
<node concept="3cpWs8" id="4qGA5WCHsVW" role="3cqZAp">
<node concept="3cpWsn" id="4qGA5WCHsVX" role="3cpWs9">
<property role="TrG5h" value="ttd" />
<node concept="3Tqbb2" id="4qGA5WCHsQ0" role="1tU5fm">
<ref role="ehGHo" to="zfi7:6wBZuQUFd0b" resolve="TypeTermDeclaration" />
</node>
<node concept="2ShNRf" id="4qGA5WCHsVY" role="33vP2m">
<node concept="3zrR0B" id="4qGA5WCHsVZ" role="2ShVmc">
<node concept="3Tqbb2" id="4qGA5WCHsW0" role="3zrR0E">
<ref role="ehGHo" to="zfi7:6wBZuQUFd0b" resolve="TypeTermDeclaration" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4qGA5WCH_AE" role="3cqZAp">
<node concept="37vLTI" id="4qGA5WCHArZ" role="3clFbG">
<node concept="2OqwBi" id="4qGA5WCHAAu" role="37vLTx">
<node concept="2Sf5sV" id="4qGA5WCHAtE" role="2Oq$k0" />
<node concept="3TrcHB" id="4qGA5WCHANV" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
<node concept="2OqwBi" id="4qGA5WCH_Nb" role="37vLTJ">
<node concept="37vLTw" id="4qGA5WCH_AC" role="2Oq$k0">
<ref role="3cqZAo" node="4qGA5WCHsVX" resolve="ttd" />
</node>
<node concept="3TrcHB" id="4qGA5WCHA21" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4qGA5WCHqEX" role="3cqZAp">
<node concept="37vLTI" id="4qGA5WCHtQ_" role="3clFbG">
<node concept="2OqwBi" id="4qGA5WCHuu9" role="37vLTx">
<node concept="2OqwBi" id="4qGA5WCHu38" role="2Oq$k0">
<node concept="2Sf5sV" id="4qGA5WCHtSo" role="2Oq$k0" />
<node concept="3TrEf2" id="4qGA5WCHuoX" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:JOGAOsxaCc" resolve="template" />
</node>
</node>
<node concept="3YRAZt" id="4qGA5WCHuLI" role="2OqNvi" />
</node>
<node concept="2OqwBi" id="4qGA5WCHtmx" role="37vLTJ">
<node concept="37vLTw" id="4qGA5WCHsW1" role="2Oq$k0">
<ref role="3cqZAo" node="4qGA5WCHsVX" resolve="ttd" />
</node>
<node concept="3TrEf2" id="4qGA5WCHtE6" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:JOGAOsxaCc" resolve="template" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4qGA5WCHuUa" role="3cqZAp">
<node concept="2OqwBi" id="4qGA5WCHv_x" role="3clFbG">
<node concept="2OqwBi" id="4qGA5WCHv4R" role="2Oq$k0">
<node concept="37vLTw" id="4qGA5WCHuU8" role="2Oq$k0">
<ref role="3cqZAo" node="4qGA5WCHsVX" resolve="ttd" />
</node>
<node concept="3TrEf2" id="4qGA5WCHvrW" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:JOGAOsxaCh" resolve="prototype" />
</node>
</node>
<node concept="2oxUTD" id="4qGA5WCHwdV" role="2OqNvi">
<node concept="2OqwBi" id="4qGA5WCHwlV" role="2oxUTC">
<node concept="2Sf5sV" id="4qGA5WCHwke" role="2Oq$k0" />
<node concept="3TrEf2" id="4qGA5WCHwCK" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:JOGAOsxaCh" resolve="prototype" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbJ" id="4qGA5WCHptX" role="3cqZAp">
<node concept="3clFbS" id="4qGA5WCHptZ" role="3clFbx">
<node concept="3clFbF" id="4qGA5WCHqcQ" role="3cqZAp">
<node concept="2OqwBi" id="4qGA5WCHzan" role="3clFbG">
<node concept="2OqwBi" id="4qGA5WCHqf0" role="2Oq$k0">
<node concept="37vLTw" id="4qGA5WCHyKV" role="2Oq$k0">
<ref role="3cqZAo" node="4qGA5WCHsVX" resolve="ttd" />
</node>
<node concept="3TrEf2" id="4qGA5WCHyZo" role="2OqNvi">
<ref role="3Tt5mk" to="zfi7:6wBZuQUG3fi" resolve="builder" />
</node>
</node>
<node concept="2oxUTD" id="4qGA5WCHDsG" role="2OqNvi">
<node concept="2pJPEk" id="4qGA5WCHDFP" role="2oxUTC">
<node concept="2pJPED" id="4qGA5WCHDFR" role="2pJPEn">
<ref role="2pJxaS" to="zfi7:6wBZuQUG1yn" resolve="TypeNodeBuilder" />
<node concept="2pIpSj" id="4qGA5WCHF0g" role="2pJxcM">
<ref role="2pIpSl" to="zfi7:6wBZuQUG57q" resolve="body" />
<node concept="36biLy" id="4qGA5WCIHBJ" role="28nt2d">
<node concept="10Nm6u" id="4qGA5WCIHBH" role="36biLW" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="4qGA5WCHq0s" role="3cqZAp" />
</node>
<node concept="3fqX7Q" id="4qGA5WCHq8v" role="3clFbw">
<node concept="2OqwBi" id="4qGA5WCHq8x" role="3fr31v">
<node concept="2Sf5sV" id="4qGA5WCHq8y" role="2Oq$k0" />
<node concept="3TrcHB" id="4qGA5WCHq8z" role="2OqNvi">
<ref role="3TsBF5" to="wq2x:4vr5SApqc6O" resolve="open" />
</node>
</node>
</node>
<node concept="9aQIb" id="4qGA5WCHwZR" role="9aQIa">
<node concept="3clFbS" id="4qGA5WCHwZS" role="9aQI4">
<node concept="3clFbF" id="4qGA5WCHx3x" role="3cqZAp">
<node concept="37vLTI" id="4qGA5WCHxL8" role="3clFbG">
<node concept="3clFbT" id="4qGA5WCHxMM" role="37vLTx">
<property role="3clFbU" value="true" />
</node>
<node concept="2OqwBi" id="4qGA5WCHxdP" role="37vLTJ">
<node concept="37vLTw" id="4qGA5WCHx3w" role="2Oq$k0">
<ref role="3cqZAo" node="4qGA5WCHsVX" resolve="ttd" />
</node>
<node concept="3TrcHB" id="4qGA5WCHxpB" role="2OqNvi">
<ref role="3TsBF5" to="wq2x:4vr5SApqc6O" resolve="open" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4qGA5WCI$12" role="3cqZAp">
<node concept="2OqwBi" id="4qGA5WCI_OP" role="3clFbG">
<node concept="liA8E" id="4qGA5WCICmw" role="2OqNvi">
<ref role="37wK5l" to="w1kc:~SNode.setId(org.jetbrains.mps.openapi.model.SNodeId)" resolve="setId" />
<node concept="2OqwBi" id="4qGA5WCIDH5" role="37wK5m">
<node concept="2JrnkZ" id="4qGA5WCIDtP" role="2Oq$k0">
<node concept="2Sf5sV" id="4qGA5WCID1Z" role="2JrQYb" />
</node>
<node concept="liA8E" id="4qGA5WCIDQf" role="2OqNvi">
<ref role="37wK5l" to="mhbf:~SNode.getNodeId()" resolve="getNodeId" />
</node>
</node>
</node>
<node concept="1eOMI4" id="4qGA5WCIBOp" role="2Oq$k0">
<node concept="10QFUN" id="4qGA5WCIBOm" role="1eOMHV">
<node concept="3uibUv" id="4qGA5WCIC6a" role="10QFUM">
<ref role="3uigEE" to="w1kc:~SNode" resolve="SNode" />
</node>
<node concept="2JrnkZ" id="4qGA5WCIBOr" role="10QFUP">
<node concept="37vLTw" id="4qGA5WCIBOs" role="2JrQYb">
<ref role="3cqZAo" node="4qGA5WCHsVX" resolve="ttd" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4qGA5WCHnMX" role="3cqZAp">
<node concept="2OqwBi" id="4qGA5WCHnWh" role="3clFbG">
<node concept="2Sf5sV" id="4qGA5WCHnMW" role="2Oq$k0" />
<node concept="1P9Npp" id="4qGA5WCHyhq" role="2OqNvi">
<node concept="37vLTw" id="4qGA5WCHynu" role="1P9ThW">
<ref role="3cqZAo" node="4qGA5WCHsVX" resolve="ttd" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2SaL7w" id="4qGA5WCHlK3" role="2ZfVeh">
<node concept="3clFbS" id="4qGA5WCHlK4" role="2VODD2">
<node concept="3clFbF" id="4qGA5WCHlPK" role="3cqZAp">
<node concept="2OqwBi" id="4qGA5WCHmPz" role="3clFbG">
<node concept="2OqwBi" id="4qGA5WCHm4X" role="2Oq$k0">
<node concept="2Sf5sV" id="4qGA5WCHlPJ" role="2Oq$k0" />
<node concept="2yIwOk" id="4qGA5WCHmsM" role="2OqNvi" />
</node>
<node concept="3O6GUB" id="4qGA5WCHngn" role="2OqNvi">
<node concept="chp4Y" id="4qGA5WCHnxj" role="3QVz_e">
<ref role="cht4Q" to="wq2x:JOGAOsxaC9" resolve="TermDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -11,6 +11,7 @@
<import index="tpee" ref="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" />
<import index="wq2x" ref="r:83137295-aa87-45e8-b0c0-ede2adf2a396(jetbrains.mps.lang.coderules.structure)" />
<import index="tpck" ref="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" implicit="true" />
<import index="5j4j" ref="r:c8fb1c5e-8204-4904-a38f-678899d447c1(jetbrains.mps.logic.structure)" implicit="true" />
</imports>
<registry>
<language id="c72da2b9-7cce-4447-8389-f407dc1158b7" name="jetbrains.mps.lang.structure">
@ -47,7 +48,7 @@
<property role="TrG5h" value="TypecheckingQueries" />
<property role="19KtqR" value="true" />
<property role="34LRSv" value="typechecking queries" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="7lmP5gALKoA" role="1TKVEi">
<property role="IQ2ns" value="8455178808327603750" />
@ -61,7 +62,7 @@
<property role="EcuMT" value="8455178808327601508" />
<property role="TrG5h" value="TypecheckingQueryTemplate" />
<property role="R5$K7" value="true" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="7lmP5gALJP_" role="1TKVEi">
<property role="IQ2ns" value="8455178808327601509" />
@ -75,35 +76,35 @@
<property role="EcuMT" value="8455178808327601537" />
<property role="TrG5h" value="CheckQueryTemplate" />
<property role="34LRSv" value="check" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1TJDcQ" node="7lmP5gALJP$" resolve="TypecheckingQueryTemplate" />
</node>
<node concept="1TIwiD" id="7lmP5gALKDQ">
<property role="EcuMT" value="8455178808327604854" />
<property role="TrG5h" value="TypeofQueryTemplate" />
<property role="34LRSv" value="typeOf" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1TJDcQ" node="7lmP5gALJP$" resolve="TypecheckingQueryTemplate" />
</node>
<node concept="1TIwiD" id="7lmP5gAYc5S">
<property role="EcuMT" value="8455178808330862968" />
<property role="TrG5h" value="TypecheckingQueryParameter" />
<property role="34LRSv" value="query" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1TJDcQ" to="tpee:fz3vP1J" resolve="Expression" />
</node>
<node concept="1TIwiD" id="7lmP5gAYIZq">
<property role="EcuMT" value="8455178808331005914" />
<property role="TrG5h" value="ConvertsQueryTemplate" />
<property role="34LRSv" value="convertsTo" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1TJDcQ" node="7lmP5gALJP$" resolve="TypecheckingQueryTemplate" />
</node>
<node concept="1TIwiD" id="7lmP5gAYJev">
<property role="EcuMT" value="8455178808331006879" />
<property role="TrG5h" value="CoerceToQueryTemplate" />
<property role="34LRSv" value="coerceTo" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<ref role="1TJDcQ" node="7lmP5gALJP$" resolve="TypecheckingQueryTemplate" />
</node>
<node concept="1TIwiD" id="6wBZuQUF2vT">
@ -111,6 +112,7 @@
<property role="TrG5h" value="TypeTermTable" />
<property role="34LRSv" value="typechecking terms" />
<property role="19KtqR" value="true" />
<property role="3GE5qa" value="typeTerm" />
<ref role="1TJDcQ" to="wq2x:JOGAOsxaCw" resolve="TermTable" />
<node concept="1TJgyj" id="6wBZuQUF99Q" role="1TKVEi">
<property role="IQ2ns" value="7505246501517169270" />
@ -129,6 +131,7 @@
<node concept="1TIwiD" id="6wBZuQUFd0b">
<property role="EcuMT" value="7505246501517185035" />
<property role="TrG5h" value="TypeTermDeclaration" />
<property role="3GE5qa" value="typeTerm" />
<ref role="1TJDcQ" to="wq2x:JOGAOsxaC9" resolve="TermDeclaration" />
<node concept="1TJgyj" id="6wBZuQUG3fi" role="1TKVEi">
<property role="IQ2ns" value="7505246501517407186" />
@ -140,6 +143,7 @@
<node concept="1TIwiD" id="6wBZuQUG1yn">
<property role="EcuMT" value="7505246501517400215" />
<property role="TrG5h" value="TypeNodeBuilder" />
<property role="3GE5qa" value="typeTerm" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" />
<node concept="1TJgyj" id="6wBZuQUG57q" role="1TKVEi">
<property role="IQ2ns" value="7505246501517414874" />
@ -149,5 +153,57 @@
<ref role="20lvS9" to="tpee:fz3vP1J" resolve="Expression" />
</node>
</node>
<node concept="1TIwiD" id="1vAI4X$MkW8">
<property role="EcuMT" value="1722266558648635144" />
<property role="3GE5qa" value="typeTerm" />
<property role="TrG5h" value="FeatureReferenceExpression" />
<ref role="1TJDcQ" to="tpee:fz3vP1J" resolve="Expression" />
<node concept="1TJgyj" id="1vAI4X$MlAp" role="1TKVEi">
<property role="IQ2ns" value="1722266558648637849" />
<property role="20kJfa" value="feature" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="wq2x:JOGAOsxiL_" resolve="TermFeature" />
</node>
</node>
<node concept="1TIwiD" id="4qGA5WCG3z$">
<property role="EcuMT" value="5092612813121140964" />
<property role="TrG5h" value="AssignTypePseudoConstraint" />
<property role="34LRSv" value="assign type" />
<ref role="1TJDcQ" to="wq2x:18kNIl0mxXI" resolve="PseudoConstraint" />
<node concept="1TJgyj" id="4qGA5WCG8eX" role="1TKVEi">
<property role="IQ2ns" value="5092612813121160125" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="location" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="tpee:fz3vP1J" resolve="Expression" />
</node>
<node concept="1TJgyj" id="4qGA5WCG9BX" role="1TKVEi">
<property role="IQ2ns" value="5092612813121165821" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="type" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
</node>
<node concept="1TIwiD" id="4LE1vMPhxmj">
<property role="EcuMT" value="5506220077345019283" />
<property role="TrG5h" value="RecoverType" />
<property role="34LRSv" value="recover" />
<ref role="1TJDcQ" to="wq2x:18kNIl0mxXI" resolve="PseudoConstraint" />
<node concept="1TJgyj" id="4LE1vMPhyby" role="1TKVEi">
<property role="IQ2ns" value="5506220077345022690" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="term" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
<node concept="1TJgyj" id="4LE1vMPhyzS" role="1TKVEi">
<property role="IQ2ns" value="5506220077345024248" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="type" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
</node>
</model>

View File

@ -102,7 +102,7 @@
</registry>
<node concept="1YbPZF" id="7lmP5gAYhwd">
<property role="TrG5h" value="typeof_TypecheckingQueryParameter" />
<property role="3GE5qa" value="query" />
<property role="3GE5qa" value="typecheckingQuery" />
<node concept="3clFbS" id="7lmP5gAYhwe" role="18ibNy">
<node concept="3cpWs8" id="7lmP5gAYjvY" role="3cqZAp">
<node concept="3cpWsn" id="7lmP5gAYjvZ" role="3cpWs9">