Ensure classifier type is created as pattern where applicable

List features in a term are by defualt created as empty list.
When a pattern is required, one must provide explicitly a
wildcard variable to capture either NIL or CONS list term.
This commit is contained in:
Fedor Isakov 2021-04-28 08:53:15 +02:00
parent 2f25f5566b
commit 1c82991112
3 changed files with 146 additions and 0 deletions

View File

@ -1907,6 +1907,9 @@
<node concept="aZer4" id="5cBWTAdGoWG" role="3XD1gS">
<property role="TrG5h" value="C" />
</node>
<node concept="aZer4" id="5BZU0S2DayV" role="3XD1gS">
<property role="TrG5h" value="TPs" />
</node>
<node concept="32pEOW" id="24ciDNzxNHC" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="1yt2T3T1O$C" role="0Rg$4">
@ -1934,6 +1937,14 @@
<node concept="3A8Hvi" id="5cBWTAdGy3s" role="3I6s78">
<node concept="ns1u0" id="5cBWTAdGy7b" role="3A8w4Q">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="nsMwS" id="5BZU0S2DayR" role="ns1xD">
<ref role="nsMwP" to="kqnc:ZJPHcupkiC" resolve="typeParams" />
<node concept="1nq8_$" id="5BZU0S2DazZ" role="nsMwV">
<node concept="a7P8L" id="5BZU0S2DazY" role="1nq8_t">
<ref role="a7OzE" node="5BZU0S2DayV" resolve="TPs" />
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="5cBWTAdGy2p" role="3A8wtg">
<ref role="a7OzE" node="5cBWTAdGoWG" resolve="C" />

View File

@ -115,6 +115,9 @@
<reference id="8829335963593822893" name="declaration" index="a7OzE" />
</concept>
<concept id="8829335963591572611" name="jetbrains.mps.logic.structure.LogicalVariableDeclaration" flags="ng" index="aZer4" />
<concept id="4780620083400582599" name="jetbrains.mps.logic.structure.LogicalItemExpression" flags="ng" index="1nq8_$">
<child id="4780620083400582654" name="logical" index="1nq8_t" />
</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">
@ -789,6 +792,14 @@
<node concept="3A8Hvi" id="3ZfjIHuvDK$" role="3I6s78">
<node concept="ns1u0" id="3ZfjIHuvDL0" role="3A8w4Q">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="nsMwS" id="5BZU0S2DbRP" role="ns1xD">
<ref role="nsMwP" to="kqnc:ZJPHcupkiC" resolve="typeParams" />
<node concept="1nq8_$" id="5BZU0S2DbSs" role="nsMwV">
<node concept="a7P8L" id="5BZU0S2DbSr" role="1nq8_t">
<ref role="a7OzE" node="5BZU0S2DbRU" resolve="TPs" />
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="3ZfjIHuvDKh" role="3A8wtg">
<ref role="a7OzE" node="3ZfjIHuvDtE" resolve="ClsType" />
@ -835,6 +846,12 @@
</node>
<node concept="32pEOW" id="3ZfjIHuvDtw" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="5BZU0S2DbRT" role="0Rg$4">
<node concept="aZer4" id="5BZU0S2DbRU" role="3XD1gS">
<property role="TrG5h" value="TPs" />
</node>
<node concept="32pEOW" id="5BZU0S2DbSa" role="3vLBG7" />
</node>
</node>
</node>
</node>

View File

@ -4371,6 +4371,14 @@
</node>
<node concept="ns1u0" id="6RzTUCSWRXB" role="3A8w4Q">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="nsMwS" id="5BZU0S2DdvT" role="ns1xD">
<ref role="nsMwP" to="kqnc:ZJPHcupkiC" resolve="typeParams" />
<node concept="1nq8_$" id="5BZU0S2DdwS" role="nsMwV">
<node concept="a7P8L" id="5BZU0S2DdwR" role="1nq8_t">
<ref role="a7OzE" node="5BZU0S2Ddwl" resolve="TPs" />
</node>
</node>
</node>
</node>
</node>
</node>
@ -4415,6 +4423,12 @@
</node>
<node concept="32pEOW" id="6RzTUCSWP8j" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="5BZU0S2Ddwk" role="0Rg$4">
<node concept="aZer4" id="5BZU0S2Ddwl" role="3XD1gS">
<property role="TrG5h" value="TPs" />
</node>
<node concept="32pEOW" id="5BZU0S2DdwA" role="3vLBG7" />
</node>
</node>
</node>
</node>
@ -19679,6 +19693,110 @@
</node>
</node>
</node>
<node concept="1nLNMY" id="32iFMN7afQf" role="1nK1Vg">
<property role="TrG5h" value="node_convertsTo_conceptNode" />
<node concept="3clFbS" id="32iFMN7afQg" role="1nLNMH">
<node concept="1nLNNL" id="32iFMN7ag9Z" role="3cqZAp">
<node concept="1nLNMm" id="32iFMN7aga0" role="1nLNNK">
<node concept="3Aq93q" id="32iFMN7aga1" role="1nLNMb">
<node concept="3I6sU6" id="32iFMN7aga2" role="3Ip0Jz">
<node concept="3I6s7M" id="32iFMN7aga3" role="3I6sU7">
<node concept="3Aqt3T" id="32iFMN7aga4" role="3I6s78">
<ref role="3AqCNq" to="kqnc:3vTJNooZDgN" resolve="convertsTo" />
<node concept="1HFMs5" id="32iFMN7agab" role="3AunhB">
<node concept="a7P8L" id="32iFMN7agfC" role="1uarlU">
<ref role="a7OzE" node="32iFMN7agag" resolve="Type" />
</node>
<node concept="ns1u0" id="32iFMN7agad" role="1uarlW">
<ref role="ns1xF" node="7LI_gNMWw2A" resolve="node" />
<node concept="nsMwS" id="32iFMN7agfK" role="ns1xD">
<ref role="nsMwP" node="7LI_gNMWxb4" resolve="concept" />
<node concept="1nq8_$" id="32iFMN7aggf" role="nsMwV">
<node concept="a7P8L" id="32iFMN7agge" role="1nq8_t">
<ref role="a7OzE" node="32iFMN7agak" resolve="Concept" />
</node>
</node>
</node>
</node>
</node>
<node concept="1HFMs5" id="32iFMN7aga5" role="3AunhB">
<node concept="a7P8L" id="32iFMN7agfw" role="1uarlU">
<ref role="a7OzE" node="32iFMN7agah" resolve="SType" />
</node>
<node concept="ns1u0" id="32iFMN7aga7" role="1uarlW">
<ref role="ns1xF" node="3bgqfmmKNsS" resolve="conceptNode" />
</node>
</node>
<node concept="a7P8L" id="32iFMN7agae" role="3AunhB">
<ref role="a7OzE" node="32iFMN7agaC" resolve="Options" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="32iFMN7agaf" role="0Rg$4">
<node concept="aZer4" id="32iFMN7agag" role="3XD1gS">
<property role="TrG5h" value="Type" />
</node>
<node concept="aZer4" id="32iFMN7agah" role="3XD1gS">
<property role="TrG5h" value="SType" />
</node>
<node concept="32pEOW" id="32iFMN7agai" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="32iFMN7agaj" role="0Rg$4">
<node concept="aZer4" id="32iFMN7agak" role="3XD1gS">
<property role="TrG5h" value="Concept" />
</node>
<node concept="aZer4" id="32iFMN7agal" role="3XD1gS">
<property role="TrG5h" value="CDecl" />
</node>
<node concept="3Tqbb2" id="32iFMN7agam" role="3vLBG7" />
</node>
<node concept="3xSepi" id="32iFMN7agan" role="3xSepv">
<node concept="3Aq9E8" id="32iFMN7agao" role="3xSepj">
<node concept="3I6sU6" id="32iFMN7agap" role="3Ip0Jz">
<node concept="3I6s7M" id="32iFMN7agau" role="3I6sU7">
<node concept="3Aqt3T" id="32iFMN7agav" role="3I6s78">
<ref role="3AqCNq" to="kqnc:3vTJNooZDgN" resolve="convertsTo" />
<node concept="a7P8L" id="32iFMN7ahkK" role="3AunhB">
<ref role="a7OzE" node="32iFMN7agag" resolve="Type" />
</node>
<node concept="ns1u0" id="32iFMN7ahl6" role="3AunhB">
<ref role="ns1xF" node="7LI_gNMWw2A" resolve="node" />
<node concept="nsMwS" id="32iFMN7ahl7" role="ns1xD">
<ref role="nsMwP" node="7LI_gNMWxb4" resolve="concept" />
<node concept="2OqwBi" id="32iFMN7ahl8" role="nsMwV">
<node concept="2c44tf" id="32iFMN7ahl9" role="2Oq$k0">
<node concept="3bZ5Sz" id="32iFMN7ahla" role="2c44tc">
<ref role="3bZ5Sy" to="tpce:h0PkWnZ" resolve="AbstractConceptDeclaration" />
</node>
</node>
<node concept="3TrEf2" id="32iFMN7ahlb" role="2OqNvi">
<ref role="3Tt5mk" to="tp25:5MFgGQnlLNJ" resolve="conceptDeclaraton" />
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="32iFMN7aga_" role="3AunhB">
<ref role="a7OzE" node="32iFMN7agaC" resolve="Options" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="32iFMN7agaA" role="0Rg$4">
<node concept="3uibUv" id="32iFMN7agaB" role="3vLBG7">
<ref role="3uigEE" to="kqnc:3vTJNooZBhQ" resolve="ConvertsContext.Options" />
</node>
<node concept="aZer4" id="32iFMN7agaC" role="3XD1gS">
<property role="TrG5h" value="Options" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1nLNMY" id="6Dg__VJJnlM" role="1nK1Vg">
<property role="TrG5h" value="converts_enummember_erased" />
<node concept="3clFbS" id="6Dg__VJJnlN" role="1nLNMH">