Skip to content

Commit 37555c0

Browse files
mhuster23benedekh
andcommitted
feat(mps-model-adapters): migrate dependency search functions
Co-authored-by: Benedek Horváth <[email protected]>
1 parent 24b1e39 commit 37555c0

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import jetbrains.mps.extapi.model.SModelDescriptorStub
1717
import jetbrains.mps.smodel.ModelImports
1818
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory
1919
import org.jetbrains.mps.openapi.model.SModel
20+
import org.jetbrains.mps.openapi.module.SModuleId
2021
import org.modelix.model.api.BuiltinLanguages
2122
import org.modelix.model.api.IChildLink
2223
import org.modelix.model.api.IConcept
@@ -117,4 +118,30 @@ data class MPSModelAsNode(val model: SModel) : IDefaultNodeAdapter {
117118
null
118119
}
119120
}
121+
122+
internal fun findSingleLanguageDependency(dependencyId: SModuleId): MPSSingleLanguageDependencyAsNode? {
123+
if (model is SModelDescriptorStub) {
124+
model.importedLanguageIds().forEach { entry ->
125+
if (entry.sourceModule?.moduleId == dependencyId) {
126+
return MPSSingleLanguageDependencyAsNode(
127+
entry.sourceModuleReference,
128+
model.getLanguageImportVersion(entry),
129+
modelImporter = model,
130+
)
131+
}
132+
}
133+
}
134+
return null
135+
}
136+
137+
internal fun findDevKitDependency(dependencyId: SModuleId): MPSDevKitDependencyAsNode? {
138+
if (model is SModelDescriptorStub) {
139+
model.importedDevkits().forEach { devKit ->
140+
if (devKit.moduleId == dependencyId) {
141+
return MPSDevKitDependencyAsNode(devKit, modelImporter = model)
142+
}
143+
}
144+
}
145+
return null
146+
}
120147
}

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,48 @@ data class MPSModuleAsNode(val module: SModule) : IDefaultNodeAdapter {
154154
false
155155
}
156156
}
157+
158+
internal fun findModuleDependency(dependencyId: SModuleId): MPSModuleDependencyAsNode? {
159+
if (module !is AbstractModule) {
160+
return null
161+
}
162+
163+
module.moduleDescriptor?.dependencyVersions?.forEach { entry ->
164+
if (entry.key.moduleId == dependencyId) {
165+
return MPSModuleDependencyAsNode(
166+
moduleReference = entry.key,
167+
moduleVersion = entry.value,
168+
explicit = isDirectDependency(module, entry.key.moduleId),
169+
reexport = isReexport(module, entry.key.moduleId),
170+
importer = module,
171+
dependencyScope = getDependencyScope(module, entry.key.moduleId),
172+
)
173+
}
174+
}
175+
return null
176+
}
177+
178+
internal fun findSingleLanguageDependency(dependencyId: SModuleId): MPSSingleLanguageDependencyAsNode? {
179+
if (module !is AbstractModule) {
180+
return null
181+
}
182+
module.moduleDescriptor?.dependencyVersions?.forEach { entry ->
183+
if (entry.key.moduleId == dependencyId) {
184+
return MPSSingleLanguageDependencyAsNode(entry.key, entry.value, moduleImporter = module)
185+
}
186+
}
187+
return null
188+
}
189+
190+
internal fun findDevKitDependency(dependencyId: SModuleId): MPSDevKitDependencyAsNode? {
191+
if (module !is AbstractModule) {
192+
return null
193+
}
194+
module.moduleDescriptor?.usedDevkits?.forEach { devKit ->
195+
if (devKit.moduleId == dependencyId) {
196+
return MPSDevKitDependencyAsNode(devKit, module)
197+
}
198+
}
199+
return null
200+
}
157201
}

0 commit comments

Comments
 (0)