Skip to content

Commit 1126052

Browse files
committed
fix(mps-model-adapters): fix reference links not being found
1 parent 409e976 commit 1126052

File tree

1 file changed

+10
-2
lines changed
  • mps-model-adapters/src/main/kotlin/org/modelix/model/mpsadapters

1 file changed

+10
-2
lines changed

mps-model-adapters/src/main/kotlin/org/modelix/model/mpsadapters/MPSNode.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ package org.modelix.model.mpsadapters
1616
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations
1717
import jetbrains.mps.smodel.MPSModuleRepository
1818
import jetbrains.mps.smodel.adapter.MetaAdapterByDeclaration
19+
import jetbrains.mps.smodel.adapter.ids.SReferenceLinkId
20+
import jetbrains.mps.smodel.adapter.structure.ref.SReferenceLinkAdapterById
1921
import org.jetbrains.mps.openapi.model.SNode
2022
import org.modelix.model.api.BuiltinLanguages
2123
import 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

Comments
 (0)