Skip to content

Commit

Permalink
fix(mps-model-adapters): fix reference links not being found
Browse files Browse the repository at this point in the history
  • Loading branch information
mhuster23 committed Feb 21, 2024
1 parent 409e976 commit 1126052
Showing 1 changed file with 10 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ package org.modelix.model.mpsadapters
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations
import jetbrains.mps.smodel.MPSModuleRepository
import jetbrains.mps.smodel.adapter.MetaAdapterByDeclaration
import jetbrains.mps.smodel.adapter.ids.SReferenceLinkId
import jetbrains.mps.smodel.adapter.structure.ref.SReferenceLinkAdapterById
import org.jetbrains.mps.openapi.model.SNode
import org.modelix.model.api.BuiltinLanguages
import org.modelix.model.api.ConceptReference
Expand Down Expand Up @@ -129,9 +131,15 @@ data class MPSNode(val node: SNode) : IDeprecatedNodeDefaults {
}

override fun setReferenceTarget(link: IReferenceLink, target: INode?) {
val ref = node.references.first { MPSReferenceLink(it.link).getUID() == link.getUID() }
val refLink = when (link) {
is MPSReferenceLink -> link.link
else -> node.references.find { MPSReferenceLink(it.link).getUID() == link.getUID() }?.link
?: node.concept.referenceLinks.find { MPSReferenceLink(it).getUID() == link.getUID() }
?: SReferenceLinkAdapterById(SReferenceLinkId.deserialize(link.getUID()), "")
}

val targetNode = target?.let { getArea().resolveNode(it.reference) } as MPSNode
node.setReferenceTarget(ref.link, targetNode.node)
node.setReferenceTarget(refLink, targetNode.node)
}

override fun setReferenceTarget(role: IReferenceLink, target: INodeReference?) {
Expand Down

0 comments on commit 1126052

Please sign in to comment.