Can't figure out MPS error: "Child in the role X.Y does not belong to the concept X"

Can't figure out MPS error: "Child in the role X.Y does not belong to the concept X"

我是 MPS 的新手,所以这可能是一个愚蠢的问题,但我无法在任何地方找到解决方案。

我正在定义两个 DSL,其中第一个将依赖于第二个。
我已经定义了第一语言的一部分,到目前为止还不错。
我有一堆概念,一些编辑器,约束等

我创建了一个带有示例节点的模型,我可以在其中查看我所做的内容。

现在我正在研究第二种语言,我的学习方式与第一种语言完全相同。
我创建了一个可以是 root 的概念。它被称为 'Module'。
然后我定义了一个接口概念,称为 'IModuleContent' 并将其作为 child 交给 'Module',调用它 'content' 并将基数设置为 [0..n]。
然后我定义了另一个继承自 'IModuleContent' 的概念,称为 'Interface'。 我给了两个Concepts Editors,现在基本就是大括号了
在我的示例模型中,我使用我的新语言创建了一个新节点。它给了我根,一个 'Module'。因为它是一个命名概念,所以我给它起了一个名字。然后,在模块的大括号内我声明了一个新的 'Interface'.
加在一起,它看起来像这样:

Module printeri {
  Interface printer {
  }
}

这一切都非常有效,除了在给 'Module' 一个 'Interface' 的实例(所以 'printer')作为变量之后,它会带有红色下划线并且错误如下:

"Child in the role Module.content does not belong to the concept Module"

不过,我很确定它确实如此。所有的概念都在新语言的结构中,我相信一切都是以正确的方式继承的。我用我的第一语言做了几乎相同的事情,而且效果很好。
这是怎么回事?

编辑:应该指定我使用的是 2020.3 版

好的,看来错误一夜之间就神奇地消失了。

昨天关闭了当天的 MPS,今天早上又打开了。
代码完成不起作用。很烦人。所以我重新启动了 MPS。

第二次尝试时,代码完成工作正常,之前的错误消失了。
MPS好像有点不稳定

所以是的,对于 运行 遇到同样问题的任何人:
试试旧的 'turn it off and on again' 方法。

如果您认为 MPS 行为异常,可以转到“文件 -> 使缓存无效并重新启动”。 对我来说,您似乎做了一些更改,例如在您的示例中创建“模块”节点,然后更改结构,例如删除“内容”-child 并重新添加它。这里的问题是 MPS 不解析基于 id 而不是基于名称。通过删除并重新添加成员定义,您可以更改 ID。 MPS 能够在一定程度上处理此类变化,例如只需按“F5”刷新编辑器。您还可以单击节点并通过“ALT+ENTER”打开意向菜单,调查那里建议的选项。

希望这些背景知识对您以后遇到的问题有所帮助:)

此致 黑子

这里的评论功能似乎有一个错误,hi 删除了“Hi Noah”