Skip to content

Commit b1a7688

Browse files
committed
feat(react): several usability improvements of the react language
1 parent afdff62 commit b1a7688

8 files changed

+1709
-189
lines changed

mps/modules/org.modelix.mps.react/generator/templates/org.modelix.mps.react.generator.templates@generator.mps

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,19 @@
3232
<import index="1ppg" ref="208eaf68-fd3a-497a-a4b6-4923ff457c3b/java:org.modelix.kotlin.utils(org.modelix.mps.editor.common.stubs/)" implicit="true" />
3333
</imports>
3434
<registry>
35+
<language id="67accce2-9676-4728-9e9c-8b15ea30d924" name="org.modelix.mps.react">
36+
<concept id="8876946878573903439" name="org.modelix.mps.react.structure.GenericReactComponent" flags="ng" index="gmrTC">
37+
<property id="8876946878573977569" name="componentType" index="gmPZ6" />
38+
</concept>
39+
<concept id="2833354970324652966" name="org.modelix.mps.react.structure.When" flags="ng" index="1nAWFN">
40+
<child id="2833354970324652969" name="else" index="1nAWFW" />
41+
<child id="2833354970324652971" name="cases" index="1nAWFY" />
42+
</concept>
43+
<concept id="2833354970324652974" name="org.modelix.mps.react.structure.WhenCase" flags="ng" index="1nAWFV">
44+
<child id="2833354970324652977" name="compnent" index="1nAWF$" />
45+
<child id="2833354970324652975" name="condition" index="1nAWFU" />
46+
</concept>
47+
</language>
3548
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
3649
<concept id="1082485599095" name="jetbrains.mps.baseLanguage.structure.BlockStatement" flags="nn" index="9aQIb">
3750
<child id="1082485599096" name="statements" index="9aQI4" />
@@ -2684,6 +2697,52 @@
26842697
</node>
26852698
</node>
26862699
</node>
2700+
<node concept="3aamgX" id="cqTc8IVEp0" role="3acgRq">
2701+
<ref role="30HIoZ" to="8xo1:7gSxYrNaHs4" resolve="IfComp" />
2702+
<node concept="gft3U" id="cqTc8IVTG4" role="1lVwrX">
2703+
<node concept="1nAWFN" id="cqTc8IVTG8" role="gfFT$">
2704+
<node concept="1nAWFV" id="cqTc8IVTG9" role="1nAWFY">
2705+
<node concept="3clFbT" id="cqTc8IVTGc" role="1nAWFU">
2706+
<property role="3clFbU" value="true" />
2707+
<node concept="29HgVG" id="cqTc8IVTGh" role="lGtFl">
2708+
<node concept="3NFfHV" id="cqTc8IVTGi" role="3NFExx">
2709+
<node concept="3clFbS" id="cqTc8IVTGj" role="2VODD2">
2710+
<node concept="3clFbF" id="cqTc8IVTGp" role="3cqZAp">
2711+
<node concept="2OqwBi" id="cqTc8IVTGk" role="3clFbG">
2712+
<node concept="3TrEf2" id="cqTc8IVTGn" role="2OqNvi">
2713+
<ref role="3Tt5mk" to="8xo1:7gSxYrNaHs6" resolve="condition" />
2714+
</node>
2715+
<node concept="30H73N" id="cqTc8IVTGo" role="2Oq$k0" />
2716+
</node>
2717+
</node>
2718+
</node>
2719+
</node>
2720+
</node>
2721+
</node>
2722+
<node concept="gmrTC" id="cqTc8IVTLQ" role="1nAWF$">
2723+
<property role="gmPZ6" value="html.div" />
2724+
<node concept="29HgVG" id="cqTc8IVTQx" role="lGtFl">
2725+
<node concept="3NFfHV" id="cqTc8IVTQy" role="3NFExx">
2726+
<node concept="3clFbS" id="cqTc8IVTQz" role="2VODD2">
2727+
<node concept="3clFbF" id="cqTc8IVTQD" role="3cqZAp">
2728+
<node concept="2OqwBi" id="cqTc8IVTQ$" role="3clFbG">
2729+
<node concept="3TrEf2" id="cqTc8IVTQB" role="2OqNvi">
2730+
<ref role="3Tt5mk" to="8xo1:7gSxYrNaHs7" resolve="child" />
2731+
</node>
2732+
<node concept="30H73N" id="cqTc8IVTQC" role="2Oq$k0" />
2733+
</node>
2734+
</node>
2735+
</node>
2736+
</node>
2737+
</node>
2738+
</node>
2739+
</node>
2740+
<node concept="gmrTC" id="cqTc8IVTLa" role="1nAWFW">
2741+
<property role="gmPZ6" value="html.div" />
2742+
</node>
2743+
</node>
2744+
</node>
2745+
</node>
26872746
<node concept="3aamgX" id="2ti6llKOngq" role="3acgRq">
26882747
<ref role="30HIoZ" to="8xo1:2ti6llKMteA" resolve="When" />
26892748
<node concept="1Koe21" id="2ti6llKOu5w" role="1lVwrX">

mps/modules/org.modelix.mps.react/models/org.modelix.mps.react.behavior.mps

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
<languages>
55
<use id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel" version="19" />
66
<use id="af65afd8-f0dd-4942-87d9-63a55f2a9db1" name="jetbrains.mps.lang.behavior" version="2" />
7+
<use id="d8f591ec-4d86-4af2-9f92-a9e93c803ffa" name="jetbrains.mps.lang.scopes" version="0" />
78
<devkit ref="fbc25dd2-5da4-483a-8b19-70928e1b62d7(jetbrains.mps.devkit.general-purpose)" />
89
</languages>
910
<imports>
1011
<import index="8xo1" ref="r:41b64586-29ed-47f5-b907-44be07261bbc(org.modelix.mps.react.structure)" />
12+
<import index="o8zo" ref="r:314576fc-3aee-4386-a0a5-a38348ac317d(jetbrains.mps.scope)" />
1113
<import index="tpee" ref="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" implicit="true" />
1214
<import index="tpek" ref="r:00000000-0000-4000-0000-011c895902c0(jetbrains.mps.baseLanguage.behavior)" implicit="true" />
15+
<import index="tpcu" ref="r:00000000-0000-4000-0000-011c89590282(jetbrains.mps.lang.core.behavior)" implicit="true" />
1316
</imports>
1417
<registry>
1518
<language id="af65afd8-f0dd-4942-87d9-63a55f2a9db1" name="jetbrains.mps.lang.behavior">
@@ -38,6 +41,9 @@
3841
<concept id="1137021947720" name="jetbrains.mps.baseLanguage.structure.ConceptFunction" flags="in" index="2VMwT0">
3942
<child id="1137022507850" name="body" index="2VODD2" />
4043
</concept>
44+
<concept id="1081236700937" name="jetbrains.mps.baseLanguage.structure.StaticMethodCall" flags="nn" index="2YIFZM">
45+
<reference id="1144433194310" name="classConcept" index="1Pybhc" />
46+
</concept>
4147
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
4248
<concept id="1070534644030" name="jetbrains.mps.baseLanguage.structure.BooleanType" flags="in" index="10P_77" />
4349
<concept id="1068431474542" name="jetbrains.mps.baseLanguage.structure.VariableDeclaration" flags="ng" index="33uBYm">
@@ -46,18 +52,21 @@
4652
<concept id="1068498886296" name="jetbrains.mps.baseLanguage.structure.VariableReference" flags="nn" index="37vLTw">
4753
<reference id="1068581517664" name="variableDeclaration" index="3cqZAo" />
4854
</concept>
55+
<concept id="1068498886292" name="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" flags="ir" index="37vLTG" />
4956
<concept id="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
5057
<child id="5680397130376446158" name="type" index="1tU5fm" />
5158
</concept>
5259
<concept id="1068580123132" name="jetbrains.mps.baseLanguage.structure.BaseMethodDeclaration" flags="ng" index="3clF44">
5360
<child id="1068580123133" name="returnType" index="3clF45" />
61+
<child id="1068580123134" name="parameter" index="3clF46" />
5462
<child id="1068580123135" name="body" index="3clF47" />
5563
</concept>
5664
<concept id="1068580123152" name="jetbrains.mps.baseLanguage.structure.EqualsExpression" flags="nn" index="3clFbC" />
5765
<concept id="1068580123155" name="jetbrains.mps.baseLanguage.structure.ExpressionStatement" flags="nn" index="3clFbF">
5866
<child id="1068580123156" name="expression" index="3clFbG" />
5967
</concept>
6068
<concept id="1068580123159" name="jetbrains.mps.baseLanguage.structure.IfStatement" flags="nn" index="3clFbJ">
69+
<property id="4467513934994662257" name="forceMultiLine" index="TyiWK" />
6170
<child id="1068580123160" name="condition" index="3clFbw" />
6271
<child id="1068580123161" name="ifTrue" index="3clFbx" />
6372
</concept>
@@ -74,6 +83,13 @@
7483
<child id="1068581242865" name="localVariableDeclaration" index="3cpWs9" />
7584
</concept>
7685
<concept id="1068581242863" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" flags="nr" index="3cpWsn" />
86+
<concept id="1204053956946" name="jetbrains.mps.baseLanguage.structure.IMethodCall" flags="ngI" index="1ndlxa">
87+
<reference id="1068499141037" name="baseMethodDeclaration" index="37wK5l" />
88+
<child id="1068499141038" name="actualArgument" index="37wK5m" />
89+
</concept>
90+
<concept id="1107535904670" name="jetbrains.mps.baseLanguage.structure.ClassifierType" flags="in" index="3uibUv">
91+
<reference id="1107535924139" name="classifier" index="3uigEE" />
92+
</concept>
7793
<concept id="1081773326031" name="jetbrains.mps.baseLanguage.structure.BinaryOperation" flags="nn" index="3uHJSO">
7894
<child id="1081773367579" name="rightExpression" index="3uHU7w" />
7995
<child id="1081773367580" name="leftExpression" index="3uHU7B" />
@@ -82,6 +98,7 @@
8298
<child id="1178549979242" name="visibility" index="1B3o_S" />
8399
</concept>
84100
<concept id="1146644602865" name="jetbrains.mps.baseLanguage.structure.PublicVisibility" flags="nn" index="3Tm1VV" />
101+
<concept id="1080120340718" name="jetbrains.mps.baseLanguage.structure.AndExpression" flags="nn" index="1Wc70l" />
85102
</language>
86103
<language id="fd392034-7849-419d-9071-12563d152375" name="jetbrains.mps.baseLanguage.closures">
87104
<concept id="2524418899405758586" name="jetbrains.mps.baseLanguage.closures.structure.InferredClosureParameterDeclaration" flags="ig" index="gl6BB" />
@@ -90,6 +107,15 @@
90107
<child id="1199569916463" name="body" index="1bW5cS" />
91108
</concept>
92109
</language>
110+
<language id="d8f591ec-4d86-4af2-9f92-a9e93c803ffa" name="jetbrains.mps.lang.scopes">
111+
<concept id="8077936094962944991" name="jetbrains.mps.lang.scopes.structure.ComeFromExpression" flags="nn" index="iy1fb">
112+
<reference id="8077936094962945822" name="link" index="iy1sa" />
113+
</concept>
114+
<concept id="8077936094962911282" name="jetbrains.mps.lang.scopes.structure.ParentScope" flags="nn" index="iy90A" />
115+
<concept id="8077936094962850237" name="jetbrains.mps.lang.scopes.structure.CompositeWithParentScopeExpression" flags="nn" index="iyS6D">
116+
<child id="8077936094962969171" name="expr" index="iy797" />
117+
</concept>
118+
</language>
93119
<language id="3a13115c-633c-4c5c-bbcc-75c4219e9555" name="jetbrains.mps.lang.quotation">
94120
<concept id="5455284157994012186" name="jetbrains.mps.lang.quotation.structure.NodeBuilderInitLink" flags="ng" index="2pIpSj">
95121
<reference id="5455284157994012188" name="link" index="2pIpSl" />
@@ -118,6 +144,14 @@
118144
<reference id="1145383142433" name="elementConcept" index="2I9WkF" />
119145
</concept>
120146
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
147+
<concept id="1180028149140" name="jetbrains.mps.lang.smodel.structure.Concept_IsSuperConceptOfOperation" flags="nn" index="2Za9M6">
148+
<child id="1180028346304" name="conceptArgument" index="2ZaTVi" />
149+
</concept>
150+
<concept id="2644386474301421077" name="jetbrains.mps.lang.smodel.structure.LinkIdRefExpression" flags="nn" index="359W_D">
151+
<reference id="2644386474301421078" name="conceptDeclaration" index="359W_E" />
152+
<reference id="2644386474301421079" name="linkDeclaration" index="359W_F" />
153+
</concept>
154+
<concept id="6677504323281689838" name="jetbrains.mps.lang.smodel.structure.SConceptType" flags="in" index="3bZ5Sz" />
121155
<concept id="1144101972840" name="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" flags="ng" index="1xMEDy">
122156
<child id="1207343664468" name="conceptArgument" index="ri$Ld" />
123157
</concept>
@@ -518,5 +552,71 @@
518552
<node concept="3clFbS" id="1hCkroLBYJT" role="2VODD2" />
519553
</node>
520554
</node>
555+
<node concept="13h7C7" id="2vPZMAnZU0y">
556+
<ref role="13h7C2" to="8xo1:7GLg2tFqfT1" resolve="IReactComponent" />
557+
<node concept="13hLZK" id="2vPZMAnZU0z" role="13h7CW">
558+
<node concept="3clFbS" id="2vPZMAnZU0$" role="2VODD2" />
559+
</node>
560+
</node>
561+
<node concept="13h7C7" id="2vPZMAnZU8L">
562+
<ref role="13h7C2" to="8xo1:7GLg2tFqfTf" resolve="GenericReactComponent" />
563+
<node concept="13hLZK" id="2vPZMAnZU8M" role="13h7CW">
564+
<node concept="3clFbS" id="2vPZMAnZU8N" role="2VODD2" />
565+
</node>
566+
<node concept="13i0hz" id="6Ddb4_fOXZV" role="13h7CS">
567+
<property role="TrG5h" value="getScope" />
568+
<ref role="13i0hy" to="tpcu:52_Geb4QDV$" resolve="getScope" />
569+
<node concept="3Tm1VV" id="6Ddb4_fOXZW" role="1B3o_S" />
570+
<node concept="3clFbS" id="6Ddb4_fOY05" role="3clF47">
571+
<node concept="3clFbJ" id="6Ddb4_fPdmn" role="3cqZAp">
572+
<property role="TyiWK" value="true" />
573+
<node concept="3clFbS" id="6Ddb4_fPdmp" role="3clFbx">
574+
<node concept="3cpWs6" id="6Ddb4_fPv7D" role="3cqZAp">
575+
<node concept="iyS6D" id="6Ddb4_fPv7F" role="3cqZAk">
576+
<node concept="2YIFZM" id="6Ddb4_fPv7G" role="iy797">
577+
<ref role="37wK5l" to="o8zo:6t3ylNOzI9Y" resolve="forNamedElements" />
578+
<ref role="1Pybhc" to="o8zo:7ipADkTevLm" resolve="SimpleRoleScope" />
579+
<node concept="13iPFW" id="6Ddb4_fPv7H" role="37wK5m" />
580+
<node concept="359W_D" id="6Ddb4_fPv7I" role="37wK5m">
581+
<ref role="359W_E" to="8xo1:7GLg2tFqfTf" resolve="GenericReactComponent" />
582+
<ref role="359W_F" to="8xo1:4Dhs5Nildlt" resolve="stateVariables" />
583+
</node>
584+
</node>
585+
</node>
586+
</node>
587+
</node>
588+
<node concept="1Wc70l" id="6Ddb4_fPg1W" role="3clFbw">
589+
<node concept="iy1fb" id="6Ddb4_fPnAL" role="3uHU7w">
590+
<ref role="iy1sa" to="8xo1:7GLg2tFrln8" resolve="children" />
591+
</node>
592+
<node concept="2OqwBi" id="6Ddb4_fPdY$" role="3uHU7B">
593+
<node concept="37vLTw" id="6Ddb4_fPdq4" role="2Oq$k0">
594+
<ref role="3cqZAo" node="6Ddb4_fOY06" resolve="kind" />
595+
</node>
596+
<node concept="2Za9M6" id="6Ddb4_fPeNp" role="2OqNvi">
597+
<node concept="chp4Y" id="6Ddb4_fPeXl" role="2ZaTVi">
598+
<ref role="cht4Q" to="8xo1:4Dhs5NildkH" resolve="StateVariable" />
599+
</node>
600+
</node>
601+
</node>
602+
</node>
603+
</node>
604+
<node concept="3cpWs6" id="6Ddb4_fP0kJ" role="3cqZAp">
605+
<node concept="iy90A" id="6Ddb4_fPvhZ" role="3cqZAk" />
606+
</node>
607+
</node>
608+
<node concept="37vLTG" id="6Ddb4_fOY06" role="3clF46">
609+
<property role="TrG5h" value="kind" />
610+
<node concept="3bZ5Sz" id="6Ddb4_fOY07" role="1tU5fm" />
611+
</node>
612+
<node concept="37vLTG" id="6Ddb4_fOY08" role="3clF46">
613+
<property role="TrG5h" value="child" />
614+
<node concept="3Tqbb2" id="6Ddb4_fOY09" role="1tU5fm" />
615+
</node>
616+
<node concept="3uibUv" id="6Ddb4_fOY0a" role="3clF45">
617+
<ref role="3uigEE" to="o8zo:3fifI_xCtN$" resolve="Scope" />
618+
</node>
619+
</node>
620+
</node>
521621
</model>
522622

mps/modules/org.modelix.mps.react/models/org.modelix.mps.react.constraints.mps

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@
7979
<concept id="1202989658459" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_parentNode" flags="nn" index="nLn13" />
8080
<concept id="8966504967485224688" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_contextNode" flags="nn" index="2rP1CM" />
8181
<concept id="5564765827938091039" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_ReferentSearchScope_Scope" flags="ig" index="3dgokm" />
82+
<concept id="8401916545537438642" name="jetbrains.mps.lang.constraints.structure.InheritedNodeScopeFactory" flags="ng" index="1dDu$B">
83+
<reference id="8401916545537438643" name="kind" index="1dDu$A" />
84+
</concept>
8285
<concept id="1163200368514" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_ReferentSetHandler" flags="in" index="3k9gUc" />
8386
<concept id="1163200647017" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_referenceNode" flags="nn" index="3kakTB" />
8487
<concept id="1163202640154" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_newReferentNode" flags="nn" index="3khVwk" />
@@ -134,9 +137,6 @@
134137
<child id="3906496115198199033" name="conceptArgument" index="3oSUPX" />
135138
</concept>
136139
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
137-
<concept id="3562215692195599741" name="jetbrains.mps.lang.smodel.structure.SLinkImplicitSelect" flags="nn" index="13MTOL">
138-
<reference id="3562215692195600259" name="link" index="13MTZf" />
139-
</concept>
140140
<concept id="1171999116870" name="jetbrains.mps.lang.smodel.structure.Node_IsNullOperation" flags="nn" index="3w_OXm" />
141141
<concept id="1172008320231" name="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" flags="nn" index="3x8VRR" />
142142
<concept id="1144100932627" name="jetbrains.mps.lang.smodel.structure.OperationParm_Inclusion" flags="ng" index="1xIGOp" />
@@ -470,31 +470,8 @@
470470
<ref role="1M2myG" to="8xo1:4Dhs5NilDPI" resolve="StateVariableReference" />
471471
<node concept="1N5Pfh" id="4Dhs5Nim6nd" role="1Mr941">
472472
<ref role="1N5Vy1" to="8xo1:4Dhs5NilDPP" resolve="decl" />
473-
<node concept="3dgokm" id="4Dhs5Nim6oT" role="1N6uqs">
474-
<node concept="3clFbS" id="4Dhs5Nim6oU" role="2VODD2">
475-
<node concept="3clFbF" id="4Dhs5Nim6sB" role="3cqZAp">
476-
<node concept="2YIFZM" id="4Dhs5Nim6wk" role="3clFbG">
477-
<ref role="37wK5l" to="o8zo:4IP40Bi3eAf" resolve="forNamedElements" />
478-
<ref role="1Pybhc" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
479-
<node concept="2OqwBi" id="4Dhs5Nimb3K" role="37wK5m">
480-
<node concept="2OqwBi" id="4Dhs5Nim6Ji" role="2Oq$k0">
481-
<node concept="2rP1CM" id="4Dhs5Nim6yG" role="2Oq$k0" />
482-
<node concept="z$bX8" id="4Dhs5Nim72Y" role="2OqNvi">
483-
<node concept="1xMEDy" id="4Dhs5Nim8UY" role="1xVPHs">
484-
<node concept="chp4Y" id="4Dhs5Nim8XZ" role="ri$Ld">
485-
<ref role="cht4Q" to="8xo1:7GLg2tFqfTf" resolve="GenericReactComponent" />
486-
</node>
487-
</node>
488-
<node concept="1xIGOp" id="4Dhs5Nim96j" role="1xVPHs" />
489-
</node>
490-
</node>
491-
<node concept="13MTOL" id="4Dhs5NimdjY" role="2OqNvi">
492-
<ref role="13MTZf" to="8xo1:4Dhs5Nildlt" resolve="stateVariables" />
493-
</node>
494-
</node>
495-
</node>
496-
</node>
497-
</node>
473+
<node concept="1dDu$B" id="6Ddb4_fPGnX" role="1N6uqs">
474+
<ref role="1dDu$A" to="8xo1:4Dhs5NildkH" resolve="StateVariable" />
498475
</node>
499476
</node>
500477
</node>

0 commit comments

Comments
 (0)