Dans MPS 2019.2, nous avons préparé pour vous de nombreuses nouvelles fonctionnalités dans divers sous-systèmes et
corrigé un certain nombre d'erreurs .
Télécharger MPS 2019.2Types de données énumérés
Une nouvelle façon de déclarer les types de données énumérés vous permet de définir une liste d'options sous forme compacte en spécifiant une valeur nommée pour chaque option. Si nécessaire, vous pouvez configurer la façon dont certaines valeurs sont affichées ou sélectionner la valeur par défaut qui sera utilisée si la propriété n'a pas été explicitement définie sur une valeur.

Nous avons également amélioré certains aspects du langage SModel concernant l'utilisation des propriétés des types énumérés. Désormais, lors de la lecture et de l'écriture de propriétés, des instances typées de membres énumérés sont utilisées à la place des valeurs élémentaires initiales, ce qui aide les développeurs à écrire du code avec moins d'erreurs.

De plus, nous avons repensé toutes les opérations effectuées avec des types énumérés.

Une instruction Enum Switch a été ajoutée au langage SModel pour la sélection multiple de membres d'énumération. Il peut également être utilisé comme expression pour calculer diverses valeurs selon le membre de l'énumération qui satisfait aux exigences.

Personnalisation des messages d'erreur
Depuis un certain temps maintenant, nous avons reçu des demandes pour implémenter la possibilité de configurer certains messages d'erreur dans MPS. Suite à une demande d'un de nos clients commerciaux, nous avons pu donner à cette fonctionnalité la plus haute priorité. Vous pouvez maintenant configurer tous les messages d'erreur liés à la vérification des contraintes. Dans les versions futures, nous allons rendre ces options de personnalisation disponibles pour d'autres types d'erreurs.
Dans cette version, nous avons ajouté un nouvel aspect du langage appelé feedback. Cet aspect peut être utilisé pour personnaliser le texte des messages d'erreur liés à la vérification de la structure, des restrictions de propriété et de la portée.

Par exemple, ShowMessage définit le texte qui apparaît dans l'info-bulle qui apparaît lorsque vous survolez un nœud problématique.

Remarque: vous pouvez définir vos commentaires en étendant l'ensemble de langues de commentaires fourni. Par exemple, vous pouvez décrire les commentaires qui mettront en surbrillance les bords ou les sommets dans l'éditeur de graphique.
Pour recevoir des messages d'erreur personnalisés pour les restrictions canBe *, utilisez le langage de restriction basé sur des règles.

Langage de contrainte basé sur des règles
Nous avons créé un langage de restriction basé sur des règles qui remplacera à l'avenir la restriction canBe * actuellement disponible à partir du langage de restriction MPS standard. Actuellement, le langage de contraintes basé sur des règles est une fonctionnalité expérimentale, il est donc susceptible de changer beaucoup dans les futures versions.

Pour le moment, la version précédente des restrictions reste une priorité. Par conséquent, pour introduire des restrictions basées sur des règles, les anciennes restrictions canBe * doivent être complètement supprimées. Le nouveau langage de définition des contraintes est plus déclaratif, il nécessite de spécifier un ensemble de contraintes isolées (règles) au lieu d'un seul bloc conditionnel.
Dans la version 2019.2, cela vous permet de recevoir un message d'erreur individuel pour chaque règle individuellement.

Histoire racine
Il y a maintenant une nouvelle action dans le menu Git qui vous permet d'afficher l'historique des changements dans VCS pour une racine spécifique. L'action est disponible dans le menu contextuel de l'éditeur:

Notez que la collecte des données d'historique racine, comme toute autre action VCS liée à l'historique, prend du temps. Il y a une barre de progression dans la barre d'état pour vous aider à évaluer le temps passé.
La boîte de dialogue est similaire à la boîte de dialogue Historique de sélection dans IntelliJ IDEA:

Une boîte de dialogue affiche une liste des révisions du fichier modèle dans lequel la racine correspondante a été modifiée.
Recherche de données
Une recherche en texte intégral par valeur de propriété est désormais disponible. L'action Édition–> Rechercher–> Rechercher le texte dans le projet (Ctrl + Alt + Maj + F) vous permet de rechercher des nœuds avec des propriétés dont les valeurs contiennent le texte spécifié.

Vérifier les erreurs spécifiques
Un cas d'utilisation courant pour l'écriture d'une langue de test est la vérification des nœuds pour les messages d'erreur et les avertissements. Dans certains cas, le sous-système de test MPS n'a pas fait de distinction entre différents types d'erreurs affectant le même nœud. Cela peut prêter à confusion: même si l'utilisateur a explicitement indiqué le type d'erreur attendu dans l'annotation de test, d'autres erreurs et avertissements affectant le nœud correspondant n'ont pas généré d'erreurs de test.
Gardez à l'esprit que lors de la mise à niveau vers une nouvelle version, certains tests peuvent échouer, car ils ne suppriment désormais que les avertissements et les erreurs que l'utilisateur indique dans l'annotation de l'analyse.

Modèles dans les définitions des règles de validation
Si vous définissez une règle de validation pour un concept, elle sera appelée pour chaque nœud qui est une instance de ce concept.
Maintenant, au lieu de remplacer chaque règle héritée du concept parent, vous pouvez spécifier explicitement une liste de règles qui doivent être redéfinies. Nous vous recommandons fortement de revoir toutes vos règles de validation qui utilisent la fonction de remplacement et d'indiquer quelles règles doivent être redéfinies.
Auparavant, vous pouviez définir une règle de validation pour un concept à l'aide d'un langage de modèle. Cette fonctionnalité a permis de limiter les conditions d'applicabilité de la règle (par rapport aux règles définies exclusivement pour le concept), ainsi que de nommer facilement les propriétés, les enfants et les petits-enfants, etc. Dans les deux cas, l'utilisation du langage de modèle à l'intérieur du corps de la règle convient, en particulier, l'utilisation de l'opérateur de correspondance en haut du bloc do:

À l'avenir, nous ne prévoyons pas de prendre en charge les règles de validation avec des modèles dans les en-têtes, nous vous recommandons donc de rechercher ces cas et de déplacer les modèles vers le corps de la règle à l'aide d'une action spéciale.
Java 11 comme runtime
MPS s'exécutera désormais dans JDK 11. Cela affectera le mécanisme de chargement des modèles de stub. La plupart de votre projet n'aura pas besoin d'être migré, sauf dans les rares cas où certaines classes et certains champs ont été reconditionnés dans JDK 11.
Lorsque vous utilisez le plug-in pour IntelliJ IDEA, les modules avec MPS Facet doivent maintenant être associés à JDK version 11. Sinon, la génération de code échouera.
Type Facade API Facade
Désormais, la vérification de type ne peut être effectuée qu'avec la nouvelle API de façade.
Nouvelle API: voir jetbrains.mps.typechecking.TypecheckingFacade et classes connexes.
API obsolète
: jetbrains.mps.typesystem. * La hiérarchie des packages est désormais obsolète. L'utilisation de classes de cette hiérarchie n'est pas recommandée, à l'exception du code généré automatiquement à partir du contenu de l'aspect du système de types.
Modifications prévues dans les versions futures
Voici un aperçu préliminaire des modifications affectant la prise en charge du système de type:
- L'aspect responsable de la mise en œuvre du système de types et du langage utilisé dans celui-ci sera déprécié. Au fil du temps, la langue et son support dans le runtime seront déplacés vers un plugin séparé.
- Un nouvel aspect sera ajouté qui remplacera efficacement la partie système non type de l'aspect système système. La migration sera fournie pour extraire les règles de validation de l'ancien aspect du système de types.
- Un nouveau cadre de vérification de type sera mis en œuvre avec le support du runtime, à la suite de quoi les mécanismes obsolètes seront réécrits à partir de zéro.
Assemblage en arrière-plan
Nous avons augmenté la réactivité de l'interface lors de la génération en arrière-plan. Si le processus de génération a été envoyé en arrière-plan une fois, il sera toujours exécuté en arrière-plan lors des exécutions suivantes. L'action est enregistrée dans le menu Préférences-> Paramètres du projet-> Effectuer en arrière-plan.
Langue de base
L'un des principaux objectifs de cette version était d'améliorer BaseLanguage. Nous avons corrigé un certain nombre de problèmes affectant les langues BaseLanguage, des bogues aux problèmes affectant la convivialité.
Vérification orthographique dans les commentaires BL
La vérification orthographique est désormais disponible pour les commentaires sur une seule ligne, le texte Javadoc et les littéraux de chaîne.
Nouvel exemple de projet
Nous avons pris en compte les souhaits de la communauté et ajouté un nouvel exemple de projet avec génération XML.
Configuration locale de Git
Maintenant, les paramètres du pilote de fusion ne sont pas globaux, mais locaux (séparés pour chaque référentiel Git), de sorte que chaque copie installée de MPS peut avoir son propre pilote de fusion.
Vous pouvez télécharger cette version
ici , nous espérons qu'elle vous plaira. Veuillez nous signaler tout problème dans
notre tracker .
Votre équipe JetBrains MPS
La volonté de se développer