Novidades no MPS 2018.1

Aprimoramentos da linguagem SModel

Em alguns casos, você precisa lidar com ponteiros brutos (como SNodeReference ou SModelReference). Trabalhar com eles pode trazer dor de cabeça, pois é difícil criá-los e operá-los. Para facilitar o trabalho com ponteiros, trazemos novos tipos e operações na linguagem SModel.

Ponteiro de nós

Facilitamos o trabalho com ponteiros de nós, introduzindo um novo tipo "node-ptr<>". Esses ponteiros podem ser resolvidos para nós reais por meio da operação "resolve". A expressão "node-ptr/ ... /" é uma substituição para a antiga construção "nodePointer/ ... /", que já foi deprecada. Scripts de migração são criados para cuidar da conversão das expressões.

Definindo referências com ponteiros

Ao definir um destino para um link de referência, não há necessidade de acessar o nó de destino. Um ponteiro para o destino é suficiente. A operação "set ptr", aplicável a expressões de acesso a links de referência, define o destino de referência para os ponteiros especificados. Para verificar se um nó é o especificado por um ponteiro de nó, a nova operação "is" deve ser usada.

Regras de tipagem estritas para tipos smodel

As regras de tipagem para tipos SModel foram aprimoradas. Os métodos da interface SNodeReference não estão mais disponíveis em valores "node-ptr". O operador downcast deve ser usado para obter SNodeReference explicitamente. Além disso, a operação "pointer" em instâncias de nó agora retorna "node-ptr" em vez do SNodeReference regular.

Expressões node-ptr na macro de referência

A macro de referência foi modificada para aceitar expressões node-ptr. Verificamos o tipo de ponteiro retornado da macro de referência de acordo com o tipo da referência.

ID do nó para especificar o ponteiro

Agora você pode usar o nome do modelo e o ID do nó para especificar um ponteiro para uma instância de conceito não nomeada ou para codificar uma referência como uma string.

Ponteiros de modelo

O tipo "model-reference" foi refatorado para "model-ptr<>". Esse ponteiro pode ser resolvido para o modelo real por meio da operação "resolve".

Novos scripts de migração

Introduzimos alguns scripts de migração que podem ajudá-lo a migrar construções antigas da linguagem SModel, como expressões node/.../, aspas indesejadas ou downcasts. Para executá-las, vá para Tools -> Scripts -> Enhancements... e selecione "SModel Language Enhancements (node-ptr<> and model-ptr)". Além disso, na mesma janela, existe a opção "Use node pointers in reference macro queries", que lida com construções antigas nas macros do gerador.

Escopo aprimorado para consultas SModel

As consultas Smodel agora se comportam de maneira mais intuitiva em relação ao escopo em que operam. Se um escopo for declarado como parâmetro para uma consulta específica, essa consulta será executada em todo o escopo, incluindo quaisquer modelos somente leitura, não apenas a partir de modelos editáveis, como antigamente.

Editor

Mostre o editor reflexivo para a subárvore

Agora, você pode mostrar o editor reflexivo para uma subárvore inteira. Para fazer isso, selecione o nó e pressione Cmd/Ctrl+Shift+[ ou escolha “Show reflective editor for subtree” no menu de contexto. Para retornar ao editor regular, pressione Cmd/Ctrl+], Cmd/Ctrl+Shift+] ou clique com o botão direito do mouse na opção “Show regular editor for the Subtree”. A exibição do editor reflexivo apenas para o nó atual ainda está disponível pressionando Cmd/Ctrl+[ ou no menu de contexto.

Menu de transformação para células de propriedade e referência

A linguagem do menu de transformação foi aprimorada de maneira consistente para oferecer suporte a células de propriedade e referência. As partes do menu de transformação de propriedades e referências permitem personalizar os menus para células de propriedades e de referência melhor do que os "menus inline" usados anteriormente.

As duas principais vantagens são:

  • Eles podem ser conectados a qualquer célula; e não apenas a células de propriedade e referência.
  • Eles podem ser aplicados ao preenchimento e a outros locais - assistente de contexto, menu de contexto e transformações laterais.