MPS 2019.2: tipos de datos enumerados, personalización de mensajes de error, transición a JDK 11 y mucho más

En MPS 2019.2, hemos preparado para usted muchas funciones nuevas en varios subsistemas y solucionado una serie de errores .

imagen

Descargar MPS 2019.2

Tipos de datos enumerados


Una nueva forma de declarar tipos de datos enumerados le permite definir una lista de opciones en una forma compacta especificando un valor con nombre para cada opción. Si es necesario, puede configurar la forma en que se muestran algunos valores o seleccionar el valor predeterminado que se utilizará si la propiedad no se ha establecido explícitamente en ningún valor.

imagen

También mejoramos aspectos del lenguaje SModel con respecto al trabajo con propiedades de tipos enumerados. Ahora, al leer y escribir propiedades, se utilizan instancias escritas de miembros enumerados en lugar de los valores elementales iniciales, lo que ayuda a los desarrolladores a escribir código con menos errores.

imagen

Además, hemos rediseñado todas las operaciones que se realizan con tipos enumerados.

imagen

Se ha agregado una instrucción Enum Switch al lenguaje SModel para la selección múltiple de miembros de enumeración. También se puede usar como una expresión para calcular varios valores dependiendo de qué miembro de la enumeración satisfaga los requisitos.

imagen

Personalizar mensajes de error


Desde hace bastante tiempo, hemos recibido solicitudes para implementar la capacidad de configurar algunos mensajes de error en MPS. Debido a una solicitud de uno de nuestros clientes comerciales, pudimos darle a esta funcionalidad la más alta prioridad. Ahora puede configurar todos los mensajes de error relacionados con la comprobación de restricciones. En futuras versiones, vamos a hacer que estas opciones de personalización estén disponibles para otros tipos de errores.

En esta versión, hemos agregado un nuevo aspecto del lenguaje llamado feedback. Este aspecto se puede usar para personalizar el texto de los mensajes de error relacionados con la verificación de la estructura, las restricciones de propiedad y el alcance.

imagen

Por ejemplo, ShowMessage define el texto que aparece en la información sobre herramientas que aparece cuando coloca el cursor sobre un nodo problemático.

imagen

Tenga en cuenta: puede configurar sus comentarios expandiendo el conjunto de idiomas de comentarios proporcionados. Por ejemplo, puede describir comentarios que resaltarán bordes o vértices en el editor de gráficos.

Para recibir mensajes de error personalizados para las restricciones canBe *, use el lenguaje de restricción basado en reglas.

imagen

Lenguaje de restricción basado en reglas


Hemos creado un lenguaje de restricción basado en reglas que en el futuro reemplazará la restricción canBe * actualmente disponible del lenguaje de restricción MPS estándar. Actualmente, el lenguaje de restricción basado en reglas es una funcionalidad experimental, por lo que es probable que cambie mucho en futuras versiones.

imagen

Por el momento, la versión anterior de las restricciones sigue siendo una prioridad, por lo tanto, para introducir restricciones basadas en reglas, las antiguas restricciones canBe * deben eliminarse por completo. El nuevo lenguaje para definir restricciones es más declarativo; requiere especificar un conjunto de restricciones aisladas (reglas) en lugar de un solo bloque condicional.

En la versión 2019.2, esto le permite recibir un mensaje de error individual para cada regla individualmente.

imagen

Historia de la raíz


Ahora hay una nueva acción en el menú Git que le permite mostrar el historial de cambios en VCS para una raíz específica. La acción está disponible en el menú contextual del editor:

imagen

Tenga en cuenta que recopilar datos del historial raíz, como cualquier otra acción VCS relacionada con el historial, lleva mucho tiempo. Hay una barra de progreso en la barra de estado para ayudarlo a evaluar el tiempo dedicado.

El cuadro de diálogo es similar al cuadro de diálogo Historial de selección en IntelliJ IDEA:

imagen

Un cuadro de diálogo muestra una lista de revisiones del archivo de modelo en el que se ha cambiado la raíz correspondiente.

Búsqueda de datos


Ahora está disponible una búsqueda de texto completo por valor de propiedad. La acción Editar–> Buscar–> Buscar texto en la acción Proyecto (Ctrl + Alt + Mayús + F) le permite buscar nodos con propiedades cuyos valores contienen el texto especificado.

imagen

Verificar errores específicos


Un caso de uso común para escribir un lenguaje de prueba es verificar los nodos en busca de mensajes de error y advertencias. En algunos casos, el subsistema de prueba MPS no distinguió entre diferentes tipos de errores que afectan al mismo nodo. Esto podría generar confusión: incluso si el usuario indicó explícitamente el tipo de error esperado en la anotación de prueba, otros errores y advertencias que afectan al nodo correspondiente no generaron errores de prueba.

Tenga en cuenta que al actualizar a una nueva versión, algunas pruebas pueden fallar, porque ahora solo suprimirán las advertencias y los errores que el usuario indique en la anotación de escaneo.

imagen

Plantillas en definiciones de reglas de validación


Si define una regla de validación para un concepto, se invocará para cada nodo que sea una instancia de ese concepto.

Ahora, en lugar de anular cada regla heredada del concepto principal, puede especificar explícitamente una lista de reglas que deben redefinirse. Recomendamos encarecidamente que revise todas sus reglas de validación que utilizan la función de anulación e indique qué reglas deben redefinirse.

Anteriormente, podía definir una regla de validación para un concepto utilizando un lenguaje de plantilla. Esta característica sirvió para limitar las condiciones de aplicabilidad de la regla (en comparación con las reglas definidas exclusivamente para el concepto), así como para nombrar convenientemente propiedades, hijos y nietos, etc. Para ambos propósitos, el uso del lenguaje de plantilla dentro del cuerpo de la regla es adecuado, en particular, el uso del operador de coincidencia en la parte superior del bloque do:

imagen

En el futuro, no planeamos admitir reglas de validación con plantillas en los encabezados, por lo que recomendamos que encuentre estos casos y mueva las plantillas al cuerpo de la regla mediante una acción especial.

Java 11 como tiempo de ejecución


MPS ahora se ejecutará en JDK 11. Esto afectará el mecanismo de carga de los modelos de código auxiliar. No será necesario migrar la mayor parte de su proyecto, excepto en los casos excepcionales en que algunas clases y campos se han reempaquetado en JDK 11.

Al usar el complemento para IntelliJ IDEA, los módulos con MPS Facet ahora deberían estar asociados con JDK versión 11. De lo contrario, la generación de código fallará.

Tipo Fachada API Fachada


Ahora la verificación de tipos solo se puede hacer con la nueva API de fachada.

Nueva API: vea jetbrains.mps.typechecking.TypecheckingFacade y clases relacionadas.

API en desuso : jetbrains.mps.typesystem. * La jerarquía de paquetes ahora está en desuso. No se recomienda usar clases de esta jerarquía, con la excepción del código que se genera automáticamente a partir del contenido del aspecto del sistema de tipos.

Cambios planeados en futuras versiones


Aquí hay un resumen preliminar de los cambios que afectan el soporte del sistema de tipos:

  • El aspecto responsable de implementar el sistema de tipos y el lenguaje utilizado en él serán obsoletos. Con el tiempo, el idioma y su soporte en el tiempo de ejecución se moverán a un complemento separado.
  • Se agregará un nuevo aspecto que reemplazará efectivamente la parte del sistema no tipo del aspecto del sistema de tipos. Se proporcionará migración para extraer las reglas de validación del aspecto antiguo del sistema de tipos.
  • Se implementará un nuevo marco de verificación de tipos con soporte del tiempo de ejecución, como resultado de lo cual los mecanismos obsoletos se reescribirán desde cero.

Asamblea en el fondo


Aumentamos la capacidad de respuesta de la interfaz durante la compilación en segundo plano. Si el proceso de compilación se envió al fondo una vez, siempre se realizará en segundo plano durante las ejecuciones posteriores. La acción se guarda en el menú Preferencias-> Configuración del proyecto-> Realizar en segundo plano.

Idioma base


Uno de los objetivos principales de esta versión era mejorar BaseLanguage. Solucionamos una serie de problemas que afectan los idiomas de BaseLanguage, desde errores hasta problemas que afectan la usabilidad.

Corrector ortográfico en comentarios BL


La corrección ortográfica ahora está disponible para comentarios de una sola línea, texto Javadoc y literales de cadena.

Nuevo proyecto de muestra


Tomamos en cuenta los deseos de la comunidad y agregamos un nuevo proyecto de muestra con generación de XML.

Configuración local de Git


Ahora la configuración del controlador de fusión no es global, sino local (separada para cada repositorio Git), por lo que cada copia instalada de MPS puede tener su propio controlador de fusión.

Puede descargar esta versión aquí , esperamos que la disfrute. Por favor, infórmenos cualquier problema en nuestro rastreador .

Su equipo JetBrains MPS
El impulso para desarrollar

Source: https://habr.com/ru/post/476806/


All Articles