Behavior methods have been equipped with the icons similar to the BaseLanguage java methods.
Accordingly one can click on the icon and navigate to one of the overridden/implemented methods if needed.
The test modules run configuration construction in the build language has been extended with a possibility to specify additional idea plugins which ought to be loaded on the MPS ant test execution.
The plugins required for the MPS ant test execution used to be calculated automatically, although it appeared that there are scenarios when the test needs a particular plugin in its environment, which could not be deduced from the modules containing the tests by the MPS build language engine.
Now one is able to ensure that the plugin he needs is present during the MPS ant test execution.
$INCLUDE$ macro has been deprecated and there's a migration to replace its instances with $CALL$. Former didn't support templates with arguments and there's no reason to keep two mechanism to invoke a template.
$WEAVE$ macro and weaving rules can invoke templates with arguments now
When interpreted template weaves an external template from 'compiled' generator, it is no longer interpreted but compiled template code is executed.
'Compiled' templates may weave interpreted templates now
QueriesGenerated, collection of queries from a template model, no longer uses Java reflection (in fact, this is the change I forgot to mention in 2018.2. Though this one is not high importance to end-user unless he looks into source code or digs through exception stacktraces, it's a notable change in the way generator had worked for years)
Cell action map items from an existing action map can be reused in a new action map via imports.
Idea announce can be used as template: https://blog.jetbrains.com/idea/2018/05/intellij-idea-2018-2-early-access-program-is-open/
Can be added to help: https://www.jetbrains.com/help/idea/touch-bar-support.html
MPS-28772 Enable High Contrast theme in MPS
Support new feature from Idea in MPS https://blog.jetbrains.com/idea/2018/10/intellij-idea-2018-3-eap-high-contrast-theme-and-more-accessibility-improvements/
Before it was not possible to apply changes from both sides (local and remote): applying from one side just rejects change from the other side. For children in multiple role it is not convenient if both changes are applicable.
Now after applying changes from one side of the conflict the other conflicting changes are converted to the addition into the end of the changed group and it is possible to apply or ignore them separately.
Find Usages of Deprecated can find all usages of deprecated elements. Now, the report of the found usages groups the entries by the expected version of code removal, so it's easier to recognise their severity and prioritise their elimination. In addition, we've reviewed our own deprecations in MPS code and added some additional migrations to help you minimise the amount of deprecated code in projects using MPS.
For a long time, the only way to control Java packages of generated classes was name of a containing model:
Here, we've got 3 BaseLanguage roots in a
jetbrains.mps.samples.files.blpack model. Generated code used to end up in a package with the same name.
However, with a new
Classifier property '
packageName', it's possible to control Java package of a generated class. The property is available for root classifiers:
Generated code for the model now uses the property:
with files arranged properly:
Now default Tips & Tricks for MPS can be customized.
This can be done with build script new tips & tricks concept:
Tips can be reused from MPS general distribution, imported from directory or from solution:
Finaly tips must be packaged into build script layout to the lib folder. In build script generated with wizard MPS tips & tricks are packaged to lib folder by default:
To import tips & tricks from solution, create solution with model and add languages jetbrains.mps.build.tips and jetbrains.mps.core.xml to model used languages.
Then you can create instance of MPSTipsAndTricks concept, where multiple tips can be created.
Each tip is HTML formated text. One image can be added to each tip:
Importing from solution to build script tips & tricks by pointing to solution and generated xml from MPSTipsAndTricks concept:
Moving forward to fully compiled languages we've made datatypes to be completely generated. All generated information regarding datatypes is now available from SModel API.
BaseLanguage is intended to be customized with lots of extensions. However, for some extensions, it is tricky to implement proper generator especially when you have to consider that there are some other independent extensions can be instantiated in a model. Now BaseLanguage provides new several generation-time concepts to make writing extensions' generators easier for some cases.
Generating of lvalue-expressions. Lvalue expressions are such expressions that are evaluated to variables which can be read or written with some value. For some cases generation of lvalue-expression become hard since it might depend on in what context the expression is used. Now new `generic lvalue-expression` generation-time concept can be utilized to make a generator simpler and context-unaware.
Transform lvalues to references. Some expressions aggregate other lvalue-expressions to make compound operations with a variable that is produced from aggregated expression (e.g. plus assignment or increment and get expressions). Introducing new expressions with such semantics had been unfeasible since it is hard to write a proper generator for such constructions. Fortunately, in new release you can wrap arbitrary lvalue-expression with `@byRef` expression so then baseLanguage generator will transform wrapped expression into expression of type `Reference<T>` that provides get and set operations over a wrapped variable.
Both introduced generation-time concepts have described in this article.