BL types: a few fixes, stabilize typechecking

Support Type type.
Simplify depdendency of var decl to its type.
Covariant subtyping for UpperBoundType.
Straightforward dependencies on type's parameters.
Specify BaseConcept as general type's concept.
Fix method reference.
This commit is contained in:
Fedor Isakov 2020-12-28 22:36:51 +01:00
parent 4acae7a1b7
commit 6f92d666f7
1 changed files with 194 additions and 27 deletions

View File

@ -463,9 +463,6 @@
<child id="1145567471833" name="createdType" index="2T96Bj" />
</concept>
<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>
@ -13936,6 +13933,105 @@
</node>
</node>
</node>
<node concept="1nLNMY" id="6V7LFEu9D5Z" role="1nK1Vg">
<property role="TrG5h" value="converts_upperBoundType_covariant" />
<node concept="3clFbS" id="6V7LFEu9D60" role="1nLNMH">
<node concept="1nLNNL" id="6V7LFEu9D61" role="3cqZAp">
<node concept="1nLNMm" id="6V7LFEu9D62" role="1nLNNK">
<node concept="3Aq93q" id="6V7LFEu9D63" role="1nLNMb">
<node concept="3I6sU6" id="6V7LFEu9D64" role="3Ip0Jz">
<node concept="3I6s7M" id="6V7LFEu9D65" role="3I6sU7">
<node concept="3Aqt3T" id="6V7LFEu9D66" role="3I6s78">
<ref role="3AqCNq" node="3vTJNooZDgN" resolve="convertsTo" />
<node concept="1HFMs5" id="6V7LFEu9D67" role="3AunhB">
<node concept="ns1u0" id="6V7LFEu9D68" role="1uarlW">
<ref role="ns1xF" node="JOGAOsVt2u" resolve="upperBound" />
<node concept="nsMwS" id="6V7LFEu9D69" role="ns1xD">
<ref role="nsMwP" node="39Sam6YgyvP" resolve="parameter" />
<node concept="1nq8_$" id="6V7LFEu9D6a" role="nsMwV">
<node concept="a7P8L" id="6V7LFEu9D6b" role="1nq8_t">
<ref role="a7OzE" node="6V7LFEu9D6i" resolve="UBnd" />
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="6V7LFEu9D6c" role="1uarlU">
<ref role="a7OzE" node="6V7LFEu9D6h" resolve="UBType" />
</node>
</node>
<node concept="1HFMs5" id="6V7LFEu9Ewb" role="3AunhB">
<node concept="a7P8L" id="6V7LFEu9D6d" role="1uarlU">
<ref role="a7OzE" node="6V7LFEu9D6g" resolve="Type" />
</node>
<node concept="ns1u0" id="6V7LFEu9ELe" role="1uarlW">
<ref role="ns1xF" node="JOGAOsVt2u" resolve="upperBound" />
<node concept="nsMwS" id="6V7LFEu9EZP" role="ns1xD">
<ref role="nsMwP" node="39Sam6YgyvP" resolve="parameter" />
<node concept="1nq8_$" id="6V7LFEu9H7v" role="nsMwV">
<node concept="a7P8L" id="6V7LFEu9H7u" role="1nq8_t">
<ref role="a7OzE" node="6V7LFEu9FcW" resolve="TypeUBnd" />
</node>
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="6V7LFEu9D6e" role="3AunhB">
<ref role="a7OzE" node="6V7LFEu9D6u" resolve="Options" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="6V7LFEu9D6f" role="0Rg$4">
<node concept="aZer4" id="6V7LFEu9D6h" role="3XD1gS">
<property role="TrG5h" value="UBType" />
</node>
<node concept="aZer4" id="6V7LFEu9D6i" role="3XD1gS">
<property role="TrG5h" value="UBnd" />
</node>
<node concept="32pEOW" id="6V7LFEu9D6j" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="6V7LFEu9FcV" role="0Rg$4">
<node concept="aZer4" id="6V7LFEu9D6g" role="3XD1gS">
<property role="TrG5h" value="Type" />
</node>
<node concept="aZer4" id="6V7LFEu9FcW" role="3XD1gS">
<property role="TrG5h" value="TypeUBnd" />
</node>
<node concept="32pEOW" id="6V7LFEu9FXM" role="3vLBG7" />
</node>
<node concept="3xSepi" id="6V7LFEu9D6k" role="3xSepv">
<node concept="3Aq9E8" id="6V7LFEu9D6l" role="3xSepj">
<node concept="3I6sU6" id="6V7LFEu9D6m" role="3Ip0Jz">
<node concept="3I6s7M" id="6V7LFEub$B7" role="3I6sU7">
<node concept="3Aqt3T" id="6V7LFEub$B5" role="3I6s78">
<ref role="3AqCNq" node="3vTJNooZDgN" resolve="convertsTo" />
<node concept="a7P8L" id="6V7LFEub_1G" role="3AunhB">
<ref role="a7OzE" node="6V7LFEu9D6i" resolve="UBnd" />
</node>
<node concept="a7P8L" id="6V7LFEub_tS" role="3AunhB">
<ref role="a7OzE" node="6V7LFEu9FcW" resolve="TypeUBnd" />
</node>
<node concept="a7P8L" id="6V7LFEubAbM" role="3AunhB">
<ref role="a7OzE" node="6V7LFEu9D6u" resolve="Options" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="6V7LFEu9D6s" role="0Rg$4">
<node concept="3uibUv" id="6V7LFEu9D6t" role="3vLBG7">
<ref role="3uigEE" node="3vTJNooZBhQ" resolve="ConvertsContext.Options" />
</node>
<node concept="aZer4" id="6V7LFEu9D6u" role="3XD1gS">
<property role="TrG5h" value="Options" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1nLNMY" id="1fKFQTSrPcv" role="1nK1Vg">
<property role="TrG5h" value="converts_upperBoundType_any" />
<node concept="3clFbS" id="1fKFQTSrPcw" role="1nLNMH">
@ -15319,7 +15415,7 @@
</node>
<node concept="3iF_et" id="5itBwMau8m1" role="3iTdIJ">
<property role="TrG5h" value="lift" />
<ref role="3iEmPG" to="tpee:fz3vP1H" resolve="Type" />
<ref role="3iEmPG" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="3uniRu" id="5itBwMau8pc" role="3iPQ67">
<node concept="aZer4" id="5itBwMau8pd" role="3XD1gS">
<property role="TrG5h" value="Type" />
@ -15375,6 +15471,33 @@
</node>
</node>
</node>
<node concept="3iyZe8" id="5dFCr0y8A6J" role="0oKgB">
<ref role="3iRiWT" node="5itBwMau8m1" resolve="lift" />
<node concept="3clFbS" id="5dFCr0y8A6K" role="3iwQuN">
<node concept="3Aqczg" id="1wOsNdKoiI3" role="3cqZAp">
<node concept="3A8Hvi" id="1wOsNdKoiI0" role="3Aqpz8">
<node concept="a7P8L" id="1wOsNdKojaK" role="3A8wtg">
<ref role="a7OzE" node="5dFCr0y8A6N" resolve="Type" />
</node>
<node concept="ns1u0" id="1wOsNdKoj$V" role="3A8w4Q">
<ref role="ns1xF" node="4lCLOtwq2MF" resolve="type" />
</node>
</node>
</node>
</node>
<node concept="3uniRu" id="5dFCr0y8A6L" role="3tb1AD">
<node concept="32pEOW" id="5dFCr0y8A6M" role="3vLBG7" />
<node concept="aZer4" id="5dFCr0y8A6N" role="3XD1gS">
<property role="TrG5h" value="Type" />
</node>
</node>
<node concept="3ixlbQ" id="5dFCr0y8A6O" role="3iweTQ">
<ref role="3ixz9q" to="tpee:fz3vP1H" resolve="Type" />
<node concept="3ixQyH" id="5dFCr0y8A6P" role="3ix8rx">
<property role="TrG5h" value="typeNode" />
</node>
</node>
</node>
</node>
<node concept="AVZre" id="1_2bK$p16Ic">
<property role="3GE5qa" value="rule.relation" />
@ -37980,6 +38103,16 @@
</node>
</node>
</node>
<node concept="Oftf1" id="1wOsNdKB7u0" role="3cqZAp">
<node concept="2OqwBi" id="1wOsNdKB7F1" role="Oftjs">
<node concept="3A2sRY" id="1wOsNdKB7ua" role="2Oq$k0">
<ref role="3A2yKK" node="4pwDyRBZ6_o" resolve="ct" />
</node>
<node concept="3Tsc0h" id="1wOsNdKB7YR" role="2OqNvi">
<ref role="3TtcxE" to="tpee:g91_B6F" resolve="parameter" />
</node>
</node>
</node>
</node>
<node concept="2t___k" id="4pwDyRBZ6_n" role="1nLNMg">
<ref role="2t_S0q" to="tpee:g7uibYu" resolve="ClassifierType" />
@ -39763,12 +39896,12 @@
<node concept="32pEOW" id="24ciDNzxNHA" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="4s_lMmH6CtZ" role="0Rg$4">
<node concept="3uibUv" id="4s_lMmH6Cu0" role="3vLBG7">
<ref role="3uigEE" node="3vTJNooZBhQ" resolve="ConvertsContext.Options" />
</node>
<node concept="aZer4" id="4s_lMmH6Cu1" role="3XD1gS">
<property role="TrG5h" value="Options" />
</node>
<node concept="3uibUv" id="4s_lMmH6Cu0" role="3vLBG7">
<ref role="3uigEE" node="3vTJNooZBhQ" resolve="ConvertsContext.Options" />
</node>
</node>
<node concept="3xSepi" id="6E2cNicdimc" role="3xSepv">
<node concept="3Aq9E8" id="ONSj15S84D" role="3xSepj">
@ -42442,7 +42575,7 @@
<node concept="37jhX" id="1T5MAgP_idB" role="3AunhB">
<node concept="2OqwBi" id="1T5MAgP_idC" role="37jj2">
<node concept="KwDlU" id="1T5MAgP_idD" role="2Oq$k0" />
<node concept="liA8E" id="1T5MAgP_idE" role="2OqNvi">
<node concept="liA8E" id="2U9DwYvtdFE" role="2OqNvi">
<ref role="37wK5l" to="tj24:5EDW3XDYOgY" resolve="getTypesCollector" />
</node>
</node>
@ -43832,26 +43965,13 @@
<node concept="1nLNMY" id="39eNUjlkRi8" role="1nK1Vg">
<property role="TrG5h" value="variableDeclaration_require" />
<node concept="3clFbS" id="39eNUjlkRi9" role="1nLNMH">
<node concept="Oftf1" id="39eNUjlkSf6" role="3cqZAp">
<node concept="2OqwBi" id="39eNUjlkSf7" role="Oftjs">
<node concept="2OqwBi" id="39eNUjlkSf8" role="2Oq$k0">
<node concept="3A2sRY" id="39eNUjlkSf9" role="2Oq$k0">
<ref role="3A2yKK" node="39eNUjlkRky" resolve="vdecl" />
</node>
<node concept="3TrEf2" id="39eNUjlkSfa" role="2OqNvi">
<ref role="3Tt5mk" to="tpee:4VkOLwjf83e" resolve="type" />
</node>
<node concept="1mebxG" id="4E4$NIUvXQA" role="3cqZAp">
<node concept="2OqwBi" id="4E4$NIUvXQB" role="1mebXD">
<node concept="3A2sRY" id="4E4$NIUvXQC" role="2Oq$k0">
<ref role="3A2yKK" node="39eNUjlkRky" resolve="vdecl" />
</node>
<node concept="2Rf3mk" id="39eNUjlkSfb" role="2OqNvi">
<node concept="3gmYPX" id="39eNUjlkSlc" role="1xVPHs">
<node concept="3gn64h" id="39eNUjlkSld" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:g96syBo" resolve="TypeVariableReference" />
</node>
<node concept="3gn64h" id="39eNUjlkSnW" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:g7uibYu" resolve="ClassifierType" />
</node>
</node>
<node concept="1xIGOp" id="2GIrmkQ99oh" role="1xVPHs" />
<node concept="3TrEf2" id="4E4$NIUvXQD" role="2OqNvi">
<ref role="3Tt5mk" to="tpee:4VkOLwjf83e" resolve="type" />
</node>
</node>
</node>
@ -55162,5 +55282,52 @@
</node>
</node>
</node>
<node concept="AVZre" id="1wOsNdK$s8C">
<property role="3GE5qa" value="rule.type" />
<property role="TrG5h" value="Wildcards" />
<ref role="2YbDB9" node="6qJjpCjlmVR" resolve="CheckAll" />
<node concept="1nLNMY" id="1wOsNdK$s8F" role="1nK1Vg">
<property role="TrG5h" value="upperBoundType" />
<node concept="3clFbS" id="1wOsNdK$s8G" role="1nLNMH">
<node concept="1mebxG" id="1wOsNdK$s8N" role="3cqZAp">
<node concept="2OqwBi" id="1wOsNdK$slv" role="1mebXD">
<node concept="3A2sRY" id="1wOsNdK$s8R" role="2Oq$k0">
<ref role="3A2yKK" node="1wOsNdK$s8I" resolve="ubt" />
</node>
<node concept="3TrEf2" id="1wOsNdK$sy0" role="2OqNvi">
<ref role="3Tt5mk" to="tpee:h3qUExb" resolve="bound" />
</node>
</node>
</node>
</node>
<node concept="2t___k" id="1wOsNdK$s8H" role="1nLNMg">
<ref role="2t_S0q" to="tpee:h3qUExa" resolve="UpperBoundType" />
<node concept="3A20r5" id="1wOsNdK$s8I" role="2t_VXX">
<property role="TrG5h" value="ubt" />
</node>
</node>
</node>
<node concept="1nLNMY" id="1wOsNdK$syf" role="1nK1Vg">
<property role="TrG5h" value="lowerBoundType" />
<node concept="3clFbS" id="1wOsNdK$syg" role="1nLNMH">
<node concept="1mebxG" id="1wOsNdK$syv" role="3cqZAp">
<node concept="2OqwBi" id="1wOsNdK$sLQ" role="1mebXD">
<node concept="3A2sRY" id="1wOsNdK$syz" role="2Oq$k0">
<ref role="3A2yKK" node="1wOsNdK$syi" resolve="lbt" />
</node>
<node concept="3TrEf2" id="1wOsNdK$sYG" role="2OqNvi">
<ref role="3Tt5mk" to="tpee:h3qUv9r" resolve="bound" />
</node>
</node>
</node>
</node>
<node concept="2t___k" id="1wOsNdK$syh" role="1nLNMg">
<ref role="2t_S0q" to="tpee:h3qUtkX" resolve="LowerBoundType" />
<node concept="3A20r5" id="1wOsNdK$syi" role="2t_VXX">
<property role="TrG5h" value="lbt" />
</node>
</node>
</node>
</node>
</model>