MPS 2019.2:枚举数据类型,错误消息的自定义,过渡到JDK 11等

在MPS 2019.2中,我们为您准备了各个子系统中的许多新功能,并修复了许多错误

图片

下载MPS 2019.2

枚举数据类型


一种声明枚举数据类型的新方法允许您通过为每个选项指定命名值来以紧凑形式定义选项列表。 如有必要,您可以配置显示某些值的方式,或者选择在属性未显式设置为任何值的情况下将使用的默认值。

图片

我们还改进了SModel语言有关使用枚举类型的属性的方面。 现在,在读写属性时,将使用枚举成员的类型化实例代替初始基本值,这有助于开发人员编写错误更少的代码。

图片

此外,我们还重新设计了使用枚举类型执行的所有操作。

图片

Enum Switch语句已添加到SModel语言中,用于选择多个枚举成员。 它也可以用作表达式,根据枚举的哪个成员满足要求来计算各种值。

图片

自定义错误消息


现在已经有一段时间了,我们已经收到要求实现在MPS中配置一些错误消息的功能的请求。 由于我们的一位商业客户的要求,我们能够给予此功能最高的优先级。 现在,您可以配置与检查约束有关的所有错误消息。 在将来的版本中,我们将使这些自定义选项可用于其他类型的错误。

在此版本中,我们添加了该语言的一个新方面,称为反馈。 此方面可用于自定义与检查结构,属性限制和范围有关的错误消息的文本。

图片

例如,ShowMessage定义了当您将鼠标悬停在问题节点上时出现在工具提示中的文本。

图片

请注意:您可以通过扩展提供的一组反馈语言来设置反馈。 例如,您可以描述将突出显示统计图编辑器中的边或顶点的反馈。

要接收有关canBe *限制的自定义错误消息,请使用基于规则的限制语言。

图片

基于规则的约束语言


我们创建了一种基于规则的限制语言,该语言将来会从标准MPS限制语言中替换当前可用的canBe *限制。 当前,基于规则的约束语言是实验性功能,因此在将来的版本中它可能会发生很大变化。

图片

目前,以前版本的限制仍然是优先事项,因此,为了引入基于规则的限制,必须完全删除旧的canBe *限制。 用于确定约束的新语言更具声明性;它需要指定一组隔离的约束(规则),而不是一个条件块。

在版本2019.2中,这使您可以分别为每个规则接收单独的错误消息。

图片

根历史


现在,Git菜单中有一个新操作,可让您显示特定根目录下VCS的更改历史记录。 该操作可从编辑器的上下文菜单中获得:

图片

请注意,与其他任何历史记录相关的VCS操作一样,收集根历史记录数据非常耗时。 状态栏中有一个进度条,可帮助您评估花费的时间。

该对话框类似于IntelliJ IDEA中的“选择历史记录”对话框:

图片

对话框显示模型文件的修订列表,其中相应的根目录已更改。

资料搜寻


现在可以按属性值进行全文搜索。 通过操作“编辑”->“查找”->“在项目中查找文本”操作(Ctrl + Alt + Shift + F),可以查找属性值包含指定文本的节点。

图片

检查特定错误


编写测试语言的一种常见用例是检查节点是否有错误消息和警告。 在某些情况下,MPS测试子系统无法区分影响同一节点的不同类型的错误。 这可能导致混乱:即使用户在测试注释中明确指出了错误的预期类型,影响相应节点的其他错误和警告也不会生成测试错误。

请记住,升级到新版本时,某些测试可能会失败,因为现在它们只会抑制用户在扫描批注中指示的警告和错误。

图片

验证规则定义中的模板


如果为概念定义验证规则,则将为作为该概念实例的每个节点调用该规则。

现在,您可以显式地指定需要重新定义的规则列表,而不是覆盖从父级概念继承的每个规则。 强烈建议您查看所有使用替代功能的验证规则,并指出应重新定义哪些规则。

以前,您可以使用模板语言为概念定义验证规则。 此功能用于限制规则的适用条件(与专门为该概念定义的规则相比),以及方便命名属性,子孙代等。 出于这两个目的,在规则主体内部使用模板语言是合适的,尤其是在do块顶部使用match运算符:

图片

将来,我们不打算在标头中使用模板来支持验证规则,因此我们建议您查找此类情况,并使用特殊操作将模板移至规则主体。

Java 11作为运行时


MPS现在将在JDK 11中运行。这将影响存根模型的加载机制。 除了少数情况下,某些类和字段已在JDK 11中重新打包之外,大多数项目都不需要迁移。

将插件用于IntelliJ IDEA时,具有MPS Facet的模块现在应与JDK版本11相关联。否则,代码生成将失败。

类型外观API外观


现在,只能使用新的Facade API进行类型检查。

新的API:请参阅jetbrains.mps.typechecking.TypecheckingFacade和相关类。

不推荐使用的API: jetbrains.mps.typesystem。*现在不推荐使用软件包层次结构。 除了从类型系统方面的内容自动生成的代码外,不建议使用此层次结构中的类。

未来版本中的计划变更


这是影响类型系统支持的更改的初步概述:

  • 负责实现类型系统的方面及其中使用的语言将被弃用。 随着时间的流逝,该语言及其在运行时中的支持将移至单独的插件。
  • 将添加一个新方面,该方面将有效替换类型系统方面的非类型系统部分。 将提供迁移以从旧的类型系统方面提取验证规则。
  • 在运行时的支持下,将实现一个新的类型检查框架,其结果是,过时的机制将被重新编写。

后台组装


我们在后台构建过程中提高了界面的响应速度。 如果将构建过程发送到后台一次,它将始终在后续执行期间在后台执行。 该动作保存在菜单首选项->项目设置->后台执行中。

基本语言


此版本的主要目标之一是改善BaseLanguage。 我们修复了许多影响BaseLanguage语言的问题,从错误到影响可用性的问题。

BL注释中的拼写检查


拼写检查现在可用于单行注释,Javadoc文本和字符串文字。

新样本项目


我们考虑了社区的意愿,并添加了一个带有XML生成的新示例项目。

本地Git配置


现在,合并驱动程序的设置不是全局的,而是本地的(对于每个Git存储库都是单独的),因此每个已安装的MPS副本可以具有自己的合并驱动程序。

您可以在此处下载此版本,希望您喜欢。 请在我们的跟踪器中向我们报告任何问题。

您的JetBrains MPS团队
发展动力

Source: https://habr.com/ru/post/zh-CN476806/


All Articles