Skip to content

Commit 2480f04

Browse files
author
Oleksandr Dzhychko
authored
Merge pull request #984 from modelix/fix/model-adapters-resolve-language-dependencies
fix(mps-model-adapters): resolve language dependency correctly in `MPSModuleAsNode`
2 parents 30c486f + 72318fe commit 2480f04

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright (c) 2024.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.modelix.model.mpsadapters
18+
19+
import org.modelix.model.api.INode
20+
import org.modelix.model.api.NodeReference
21+
22+
class MPSModuleAsNodeTest : MpsAdaptersTestBase("SimpleProject") {
23+
24+
fun `test resolve language dependency from reference`() {
25+
val repositoryNode: INode = MPSRepositoryAsNode(mpsProject.repository)
26+
val languageDependencyNodeReference = NodeReference(
27+
"mps-lang:f3061a53-9226-4cc5-a443-f952ceaf5816#IN#mps-module:6517ba0d-f632-49c5-a166-401587c2c3ca(Solution1)",
28+
)
29+
30+
val resolvedLanguageDependency = readAction {
31+
repositoryNode.getArea().resolveNode(languageDependencyNodeReference)
32+
}
33+
34+
assertNotNull(resolvedLanguageDependency)
35+
assertEquals(languageDependencyNodeReference.serialize(), resolvedLanguageDependency!!.reference.serialize())
36+
}
37+
}

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,11 @@ data class MPSModuleAsNode(val module: SModule) : IDefaultNodeAdapter {
183183
if (module !is AbstractModule) {
184184
return null
185185
}
186-
module.moduleDescriptor?.dependencyVersions?.forEach { entry ->
187-
if (entry.key.moduleId == dependencyId) {
188-
return MPSSingleLanguageDependencyAsNode(entry.key, entry.value, moduleImporter = module)
186+
val languageDependencies = module.moduleDescriptor?.languageVersions
187+
languageDependencies?.forEach { entry ->
188+
val sourceModelReference = entry.key.sourceModuleReference
189+
if (sourceModelReference.moduleId == dependencyId) {
190+
return MPSSingleLanguageDependencyAsNode(sourceModelReference, entry.value, moduleImporter = module)
189191
}
190192
}
191193
return null

0 commit comments

Comments
 (0)