@@ -16,6 +16,8 @@ package org.modelix.model.mpsadapters
1616import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations
1717import jetbrains.mps.smodel.MPSModuleRepository
1818import jetbrains.mps.smodel.adapter.MetaAdapterByDeclaration
19+ import jetbrains.mps.smodel.adapter.ids.SReferenceLinkId
20+ import jetbrains.mps.smodel.adapter.structure.ref.SReferenceLinkAdapterById
1921import org.jetbrains.mps.openapi.model.SNode
2022import org.modelix.model.api.BuiltinLanguages
2123import org.modelix.model.api.ConceptReference
@@ -129,9 +131,15 @@ data class MPSNode(val node: SNode) : IDeprecatedNodeDefaults {
129131 }
130132
131133 override fun setReferenceTarget (link : IReferenceLink , target : INode ? ) {
132- val ref = node.references.first { MPSReferenceLink (it.link).getUID() == link.getUID() }
134+ val refLink = when (link) {
135+ is MPSReferenceLink -> link.link
136+ else -> node.references.find { MPSReferenceLink (it.link).getUID() == link.getUID() }?.link
137+ ? : node.concept.referenceLinks.find { MPSReferenceLink (it).getUID() == link.getUID() }
138+ ? : SReferenceLinkAdapterById (SReferenceLinkId .deserialize(link.getUID()), " " )
139+ }
140+
133141 val targetNode = target?.let { getArea().resolveNode(it.reference) } as MPSNode
134- node.setReferenceTarget(ref.link , targetNode.node)
142+ node.setReferenceTarget(refLink , targetNode.node)
135143 }
136144
137145 override fun setReferenceTarget (role : IReferenceLink , target : INodeReference ? ) {
0 commit comments