@@ -16,6 +16,8 @@ package org.modelix.model.mpsadapters
16
16
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations
17
17
import jetbrains.mps.smodel.MPSModuleRepository
18
18
import jetbrains.mps.smodel.adapter.MetaAdapterByDeclaration
19
+ import jetbrains.mps.smodel.adapter.ids.SReferenceLinkId
20
+ import jetbrains.mps.smodel.adapter.structure.ref.SReferenceLinkAdapterById
19
21
import org.jetbrains.mps.openapi.model.SNode
20
22
import org.modelix.model.api.BuiltinLanguages
21
23
import org.modelix.model.api.ConceptReference
@@ -129,9 +131,15 @@ data class MPSNode(val node: SNode) : IDeprecatedNodeDefaults {
129
131
}
130
132
131
133
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
+
133
141
val targetNode = target?.let { getArea().resolveNode(it.reference) } as MPSNode
134
- node.setReferenceTarget(ref.link , targetNode.node)
142
+ node.setReferenceTarget(refLink , targetNode.node)
135
143
}
136
144
137
145
override fun setReferenceTarget (role : IReferenceLink , target : INodeReference ? ) {
0 commit comments