From a74f00f688ec0d18aad75a456ce899bb35ff76fb Mon Sep 17 00:00:00 2001 From: Fedor Isakov Date: Thu, 14 Jun 2018 16:19:06 +0200 Subject: [PATCH] Introduce controlflow language and corresponding solutions as another example of applying code rules in practice. --- .mps/modules.xml | 4 + build.xml | 758 ++++++++++++++++-- .../generator/template/main@generator.mps | 27 + .../jetbrains.mps.lang.coderules.eval.mps | 8 +- .../jetbrains.mps.lang.coderules.aspect.mps | 176 ++++ .../generator/template/main@generator.mps | 207 +++++ .../jetbrains.mps.lang.controlflow.mpl | 138 ++++ .../models/behavior.mps | 11 + .../models/constraints.mps | 11 + .../models/editor.mps | 11 + .../models/plugin.mps | 38 + .../models/structure.mps | 11 + .../models/typesystem.mps | 11 + .../jetbrains.mps.controlflow.ui.msd | 23 + .../models/plugin.mps | 15 + .../jetbrains.mps.controlflow.msd | 14 + .../models/service.mps | 8 + ...jetbrains.mps.lang.controlflow.runtime.msd | 36 + .../jetbrains.mps.lang.controlflow.aspect.mps | 327 ++++++++ .../generator/template/main@generator.mps | 38 +- ...jetbrains.mps.lang.typechecking.aspect.mps | 265 ++---- .../jetbrains.mps.typechecking.build.mps | 183 ++++- .../models/ui.plugin.mps | 4 +- 23 files changed, 2023 insertions(+), 301 deletions(-) create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/generator/template/main@generator.mps create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/jetbrains.mps.lang.controlflow.mpl create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/models/behavior.mps create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/models/constraints.mps create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/models/editor.mps create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/models/plugin.mps create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/models/structure.mps create mode 100644 controlflow/languages/jetbrains.mps.lang.controlflow/models/typesystem.mps create mode 100644 controlflow/solutions/jetbrains.mps.controlflow.ui/jetbrains.mps.controlflow.ui.msd create mode 100644 controlflow/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps create mode 100644 controlflow/solutions/jetbrains.mps.controlflow/jetbrains.mps.controlflow.msd create mode 100644 controlflow/solutions/jetbrains.mps.controlflow/models/service.mps create mode 100644 controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/jetbrains.mps.lang.controlflow.runtime.msd create mode 100644 controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/models/jetbrains.mps.lang.controlflow.aspect.mps diff --git a/.mps/modules.xml b/.mps/modules.xml index 9f174f32..72580987 100644 --- a/.mps/modules.xml +++ b/.mps/modules.xml @@ -6,6 +6,10 @@ + + + + diff --git a/build.xml b/build.xml index cb5d47ac..cd8e6599 100644 --- a/build.xml +++ b/build.xml @@ -810,6 +810,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1020,87 +1284,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2020,6 +2203,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2039,7 +2405,7 @@ - + @@ -2142,6 +2508,8 @@ + + @@ -2155,6 +2523,8 @@ + + @@ -3258,6 +3628,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3608,6 +4197,8 @@ + + @@ -3621,6 +4212,9 @@ + + + diff --git a/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps b/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps index e9144a45..67c91bbe 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps @@ -465,6 +465,7 @@ + @@ -558,6 +559,9 @@ + + + @@ -15628,6 +15632,29 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps index 8d618df3..16e16cbc 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps @@ -4810,8 +4810,8 @@ - - + + @@ -4824,8 +4824,8 @@ - - + + diff --git a/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.aspect.mps b/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.aspect.mps index 7838c340..cf3f02b3 100644 --- a/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.aspect.mps +++ b/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.aspect.mps @@ -17,6 +17,7 @@ + @@ -50,6 +51,10 @@ + + + + @@ -60,6 +65,7 @@ + @@ -158,6 +164,10 @@ + + + + @@ -272,6 +282,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1511,6 +1562,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/generator/template/main@generator.mps b/controlflow/languages/jetbrains.mps.lang.controlflow/generator/template/main@generator.mps new file mode 100644 index 00000000..6673f9e8 --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/generator/template/main@generator.mps @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/jetbrains.mps.lang.controlflow.mpl b/controlflow/languages/jetbrains.mps.lang.controlflow/jetbrains.mps.lang.controlflow.mpl new file mode 100644 index 00000000..81d9ff44 --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/jetbrains.mps.lang.controlflow.mpl @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + 21d5540d-cd6b-44dd-b6ab-6835bf032803(jetbrains.mps.lang.coderules#4578927328670739933) + e45a8b22-94f2-427f-b849-77f254c4eef5(jetbrains.mps.lang.aspect#3274906159125927726) + 86ef8290-12bb-4ca7-947f-093788f263a9(jetbrains.mps.lang.project) + 3ac18869-0828-4401-abad-822a47bf83f1(jetbrains.mps.lang.descriptor#9020561928507175817) + ffcd9ef5-e931-4da9-a8d1-eb9bf80d19b4(jetbrains.mps.lang.controlflow.runtime) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + f97d84b2-8bad-4fdd-8ede-da17b3eacf4c(jetbrains.mps.coderules) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + c4803b19-6d89-4a3b-bf82-390769514add(jetbrains.mps.lang.coderules) + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/models/behavior.mps b/controlflow/languages/jetbrains.mps.lang.controlflow/models/behavior.mps new file mode 100644 index 00000000..446246f7 --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/models/behavior.mps @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/models/constraints.mps b/controlflow/languages/jetbrains.mps.lang.controlflow/models/constraints.mps new file mode 100644 index 00000000..4116ee75 --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/models/constraints.mps @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/models/editor.mps b/controlflow/languages/jetbrains.mps.lang.controlflow/models/editor.mps new file mode 100644 index 00000000..edf52817 --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/models/editor.mps @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/models/plugin.mps b/controlflow/languages/jetbrains.mps.lang.controlflow/models/plugin.mps new file mode 100644 index 00000000..9858d053 --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/models/plugin.mps @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/models/structure.mps b/controlflow/languages/jetbrains.mps.lang.controlflow/models/structure.mps new file mode 100644 index 00000000..5225f7bd --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/models/structure.mps @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/controlflow/languages/jetbrains.mps.lang.controlflow/models/typesystem.mps b/controlflow/languages/jetbrains.mps.lang.controlflow/models/typesystem.mps new file mode 100644 index 00000000..610ddb49 --- /dev/null +++ b/controlflow/languages/jetbrains.mps.lang.controlflow/models/typesystem.mps @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/controlflow/solutions/jetbrains.mps.controlflow.ui/jetbrains.mps.controlflow.ui.msd b/controlflow/solutions/jetbrains.mps.controlflow.ui/jetbrains.mps.controlflow.ui.msd new file mode 100644 index 00000000..2b7a91fd --- /dev/null +++ b/controlflow/solutions/jetbrains.mps.controlflow.ui/jetbrains.mps.controlflow.ui.msd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controlflow/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps b/controlflow/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps new file mode 100644 index 00000000..1c1496cc --- /dev/null +++ b/controlflow/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/controlflow/solutions/jetbrains.mps.controlflow/jetbrains.mps.controlflow.msd b/controlflow/solutions/jetbrains.mps.controlflow/jetbrains.mps.controlflow.msd new file mode 100644 index 00000000..c9a13c3f --- /dev/null +++ b/controlflow/solutions/jetbrains.mps.controlflow/jetbrains.mps.controlflow.msd @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/controlflow/solutions/jetbrains.mps.controlflow/models/service.mps b/controlflow/solutions/jetbrains.mps.controlflow/models/service.mps new file mode 100644 index 00000000..97f46324 --- /dev/null +++ b/controlflow/solutions/jetbrains.mps.controlflow/models/service.mps @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/jetbrains.mps.lang.controlflow.runtime.msd b/controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/jetbrains.mps.lang.controlflow.runtime.msd new file mode 100644 index 00000000..fc2a1863 --- /dev/null +++ b/controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/jetbrains.mps.lang.controlflow.runtime.msd @@ -0,0 +1,36 @@ + + + + + + + + + + ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.coderules.template) + 8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI) + 6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core) + 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK) + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/models/jetbrains.mps.lang.controlflow.aspect.mps b/controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/models/jetbrains.mps.lang.controlflow.aspect.mps new file mode 100644 index 00000000..d94dff39 --- /dev/null +++ b/controlflow/solutions/jetbrains.mps.lang.controlflow.runtime/models/jetbrains.mps.lang.controlflow.aspect.mps @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/typechecking/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps b/typechecking/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps index cb5067b4..31a922b2 100644 --- a/typechecking/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps +++ b/typechecking/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps @@ -27,6 +27,10 @@ + + + + @@ -37,6 +41,7 @@ + @@ -92,10 +97,22 @@ + + + + + + + + + + + + @@ -115,7 +132,7 @@ - + @@ -135,7 +152,7 @@ - + @@ -165,6 +182,23 @@ + + + + + + + + + + + + + + + + + diff --git a/typechecking/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.typechecking.aspect.mps b/typechecking/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.typechecking.aspect.mps index 5d8ad1fc..eb43b39b 100644 --- a/typechecking/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.typechecking.aspect.mps +++ b/typechecking/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.typechecking.aspect.mps @@ -22,32 +22,19 @@ - - - - - - - - - - - - - + + + - - - @@ -62,48 +49,32 @@ - - - - - - - - - - + + - - - - - + - - - - - + @@ -156,24 +127,18 @@ - - + + - - - - - - - - - - - + + + + + @@ -203,27 +168,14 @@ - - + + - - - - - - - - - - - - - @@ -233,6 +185,13 @@ + + + + + + + @@ -253,27 +212,14 @@ - - + + - - - - - - - - - - - - - @@ -283,6 +229,13 @@ + + + + + + + @@ -301,153 +254,49 @@ - - - - - - - - - - - - - + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + diff --git a/typechecking/solutions/jetbrains.mps.typechecking.build/models/jetbrains.mps.typechecking.build.mps b/typechecking/solutions/jetbrains.mps.typechecking.build/models/jetbrains.mps.typechecking.build.mps index bbbb3878..7ae609a4 100644 --- a/typechecking/solutions/jetbrains.mps.typechecking.build/models/jetbrains.mps.typechecking.build.mps +++ b/typechecking/solutions/jetbrains.mps.typechecking.build/models/jetbrains.mps.typechecking.build.mps @@ -1896,6 +1896,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2206,6 +2359,21 @@ + + + + + + + + + + + + + + + @@ -2226,9 +2394,6 @@ - - - @@ -2519,6 +2684,18 @@ + + + + + + + + + + + + diff --git a/typechecking/solutions/jetbrains.mps.typechecking.ui/models/ui.plugin.mps b/typechecking/solutions/jetbrains.mps.typechecking.ui/models/ui.plugin.mps index 00e4a59b..5afc0619 100644 --- a/typechecking/solutions/jetbrains.mps.typechecking.ui/models/ui.plugin.mps +++ b/typechecking/solutions/jetbrains.mps.typechecking.ui/models/ui.plugin.mps @@ -30229,8 +30229,8 @@ - - + +