The SModel interface (org.jetbrains.mps.openapi.model.SModel
) contains methods for querying and modifying nodes
contained in a model but methods to modify the dependencies of a model (model imports or used languages) are absent.
There’s another interface called jetbrains.mps.smodel.SModelInternal
that has these methods but is there any way to
modify the dependency information without resorting to internal APIs?
It turns out there is an undocumented but public class named ModelImports (jetbrains.mps.smodel.ModelImports
, MPS
link)
which is intended as a public facade to the dependency information. To use it, wrap the model in an instance of
ModelImports
:
model myModel = ...;
new ModelImports(myModel).addModelImport(model-ptr/my.imported.model/);
The class can be used to query, add, or remove model imports, used languages and devkits.