Test model fails to compile when ":ne:" operator is used


I have the following situation:

  • I have a (very big) test model with hundreds of tests
  • in one NodeTestCase, I added a utility function
  • as soon as I add a comparison to this function using the :ne: operator, building (make or rebuild) the model fails with hundreds of error messages saying that references used in special Editor Test Case-models are supposedly broken 
  • these "special" Editor Test Cases are of a custom concept called "InconclusiveEditorTestCase" that extends the "normal" EditorTestCase  and that we use to mark tests that currently fail due to bugs in MPS so that they are not executed

Notice that I fail to understand how the usage of the :ne: operator results in a failed build where completely unrelated references suddenly are broken.

When I replace the :ne: operator with, lets say  "!=" operator, everything compiles just fine.

The error message I get for all references inside these "InconclusiveEditorTestCase" nodes looks like this:

broken reference 'myRef' in [collectionRole] SmartRefType <no name>[1234567889...] in test.my.namespace.ts.smoke@0 (target model is null)

Can somebody make sense out of this?


This one is puzzling. Is it possible to get a stripped-down, minimalistic test model to reproduce the issue? I don't think it's related to EditorTestCase subclass, I'd try to reproduce with a regular NodeTestCase/EditorTestCase. BTW, does 'check model' prior to generator report anything?


I gave it a try to create an SSCCE, but I wasn't successful.

Inside our language eco-system, I was able to reproduce the isse with a minimal test-model, and was able to identify that this problem occurs for a SmartReference of ours that itself is rather complex and suffers the weight of a bunch of legacy interfaces so that "extracting" it into a dummy language just isn't too simple.

As the issue itself is not blocking us in any way, I cannot put the time into building a SSCCE, but I will try to refactor this legacy interface overload we have going on and see if this helps me identify the issue.




Oh, "check model" does not report anything, no.


You can try to generate the model with MPS 2018.1 to see if it makes a difference. In 2018.1, template for :ne: has been simplified a bit (no more extracted method), perhaps, that would help your references to stay 'targeted'.


Please sign in to leave a comment.