MPS 2019.2: tipos de dados enumerados, personalização de mensagens de erro, transição para o JDK 11 e muito mais

No MPS 2019.2, preparamos para você muitos novos recursos em vários subsistemas e corrigimos vários erros .

imagem

Baixar MPS 2019.2

Tipos de dados enumerados


Uma nova maneira de declarar tipos de dados enumerados permite definir uma lista de opções em um formato compacto, especificando um valor nomeado para cada opção. Se necessário, você pode configurar a maneira como alguns valores são exibidos ou selecionar o valor padrão que será usado se a propriedade não tiver sido explicitamente configurada para nenhum valor.

imagem

Também aprimoramos aspectos da linguagem SModel em relação ao trabalho com propriedades de tipos enumerados. Agora, ao ler e escrever propriedades, instâncias digitadas de membros enumerados são usadas em vez dos valores elementares iniciais, o que ajuda os desenvolvedores a escrever código com menos erros.

imagem

Além disso, redesenhamos todas as operações executadas com tipos enumerados.

imagem

Uma instrução Enum Switch foi adicionada ao idioma SModel para seleção múltipla de membros de enumeração. Também pode ser usado como uma expressão para calcular vários valores, dependendo de qual membro da enumeração satisfaz os requisitos.

imagem

Personalizando mensagens de erro


Já há algum tempo, recebemos solicitações para implementar a capacidade de configurar algumas mensagens de erro no MPS. Devido a uma solicitação de um de nossos clientes comerciais, conseguimos dar a essa funcionalidade a maior prioridade. Agora você pode configurar todas as mensagens de erro relacionadas à verificação de restrições. Nas versões futuras, disponibilizaremos essas opções de personalização para outros tipos de erros.

Nesta versão, adicionamos um novo aspecto do idioma chamado feedback. Esse aspecto pode ser usado para personalizar o texto das mensagens de erro relacionadas à verificação da estrutura, restrições de propriedade e escopo.

imagem

Por exemplo, ShowMessage define o texto que aparece na dica de ferramenta que aparece quando você passa o mouse sobre um nó com problema.

imagem

Observação: você pode definir seus comentários expandindo o conjunto de idiomas de comentários fornecidos. Por exemplo, você pode descrever o feedback que destacará arestas ou vértices no editor de gráficos.

Para receber mensagens de erro personalizadas para restrições canBe *, use o idioma de restrição baseado em regras.

imagem

Linguagem de restrição baseada em regras


Criamos uma linguagem de restrição baseada em regras que no futuro substituirá a restrição canBe * atualmente disponível da linguagem de restrição padrão do MPS. Atualmente, a linguagem de restrição baseada em regras é uma funcionalidade experimental, portanto é provável que mude muito em versões futuras.

imagem

No momento, a versão anterior das restrições continua sendo uma prioridade; portanto, para introduzir restrições com base em regras, as antigas restrições do canBe * devem ser completamente removidas. A nova linguagem para determinar restrições é mais declarativa; requer que um conjunto de restrições isoladas (regras) seja especificado em vez de um bloco condicional.

Na versão 2019.2, isso permite que você receba uma mensagem de erro individual para cada regra individualmente.

imagem

Histórico da raiz


Agora existe uma nova ação no menu Git que permite exibir o histórico de alterações no VCS para uma raiz específica. A ação está disponível no menu de contexto do editor:

imagem

Observe que a coleta de dados do histórico raiz, como qualquer outra ação VCS relacionada ao histórico, consome tempo. Há uma barra de progresso na barra de status para ajudá-lo a avaliar o tempo gasto.

A caixa de diálogo é semelhante à caixa de diálogo Histórico de seleção no IntelliJ IDEA:

imagem

Uma caixa de diálogo exibe uma lista de revisões do arquivo de modelo no qual a raiz correspondente foi alterada.

Pesquisa de dados


Uma pesquisa de texto completo por valor da propriedade já está disponível. A ação Editar -> Localizar -> Localizar texto na ação Projeto (Ctrl + Alt + Shift + F) permite encontrar nós com propriedades cujos valores contenham o texto especificado.

imagem

Verifique se há erros específicos


Um caso de uso comum para escrever uma linguagem de teste é verificar os nós em busca de mensagens de erro e avisos. Em alguns casos, o subsistema de teste do MPS não distinguiu entre diferentes tipos de erros que afetam o mesmo nó. Isso pode causar confusão: mesmo se o usuário indicou explicitamente o tipo de erro esperado na anotação de teste, outros erros e avisos que afetam o nó correspondente não geraram erros de teste.

Lembre-se de que, ao atualizar para uma nova versão, alguns testes podem falhar, porque agora eles suprimirão apenas avisos e erros que o usuário indicar na anotação de varredura.

imagem

Modelos nas definições de regras de validação


Se você definir uma regra de validação para um conceito, ela será chamada para cada nó que é uma instância desse conceito.

Agora, em vez de substituir cada regra herdada do conceito pai, você pode especificar explicitamente uma lista de regras que precisam ser redefinidas. É altamente recomendável que você revise todas as suas regras de validação que usam a função de substituição e indique quais regras devem ser redefinidas.

Anteriormente, era possível definir uma regra de validação para um conceito usando uma linguagem de modelo. Esse recurso serviu para limitar as condições de aplicabilidade da regra (em comparação com as regras definidas exclusivamente para o conceito), bem como para nomeação conveniente de propriedades, filhos e netos, etc. Para os dois propósitos, o uso da linguagem de gabarito dentro do corpo da regra é adequado, em particular, o uso do operador match na parte superior do bloco do:

imagem

No futuro, não planejamos oferecer suporte a regras de validação com modelos nos cabeçalhos; portanto, recomendamos que você encontre esses casos e mova os modelos para o corpo da regra usando uma ação especial.

Java 11 como tempo de execução


O MPS agora será executado no JDK 11. Isso afetará o mecanismo de carregamento dos modelos de stub. A maior parte do seu projeto não precisará ser migrada, exceto nos raros casos em que algumas classes e campos foram reembalados no JDK 11.

Ao usar o plug-in para o IntelliJ IDEA, os módulos com o MPS Facet agora devem ser associados ao JDK versão 11. Caso contrário, a geração do código falhará.

Tipo Fachada API Fachada


Agora, a verificação de tipo só pode ser feita com a nova API de fachada.

Nova API: consulte jetbrains.mps.typechecking.TypecheckingFacade e classes relacionadas.

API descontinuada: jetbrains.mps.typesystem. * A hierarquia de pacotes agora está descontinuada. O uso de classes dessa hierarquia não é recomendado, com exceção do código gerado automaticamente a partir do conteúdo do aspecto do sistema de tipos.

Alterações planejadas em versões futuras


Aqui está um esboço preliminar das mudanças que afetam o suporte ao sistema de tipos:

  • O aspecto responsável pela implementação do sistema de tipos e o idioma usado nele serão preteridos. Com o tempo, o idioma e seu suporte no tempo de execução serão movidos para um plug-in separado.
  • Será adicionado um novo aspecto que substituirá efetivamente a parte do sistema não-tipo do aspecto do sistema de tipos. A migração será fornecida para extrair regras de validação do aspecto antigo do sistema de tipos.
  • Uma nova estrutura de verificação de tipo será implementada com suporte do tempo de execução, como resultado dos quais mecanismos obsoletos serão reescritos do zero.

Montagem em segundo plano


Aumentamos a capacidade de resposta da interface durante a construção do plano de fundo. Se o processo de compilação foi enviado para o segundo plano uma vez, ele sempre será executado em segundo plano durante as execuções subseqüentes. A ação é salva no menu Preferências-> Configurações do projeto-> Executar em segundo plano.

Idioma base


Um dos principais objetivos desta versão era melhorar o BaseLanguage. Corrigimos vários problemas que afetavam os idiomas do BaseLanguage, de bugs a problemas que afetavam a usabilidade.

Verificação ortográfica nos comentários do BL


A verificação ortográfica está agora disponível para comentários de linha única, texto Javadoc e literais de cadeias.

Novo projeto de amostra


Levamos em conta os desejos da comunidade e adicionamos um novo projeto de amostra com geração de XML.

Configuração local do Git


Agora, as configurações do driver de mesclagem não são globais, mas locais (separadas para cada repositório Git), portanto, cada cópia instalada do MPS pode ter seu próprio driver de mesclagem.

Você pode baixar esta versão aqui , esperamos que você goste. Por favor, relate quaisquer problemas para nós em nosso rastreador .

Sua equipe JetBrains MPS
O impulso para desenvolver

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


All Articles