@@ -18,14 +18,31 @@ package org.modelix.model.api
18
18
19
19
import kotlin.reflect.KProperty
20
20
21
+ /* *
22
+ * TODO if you add a new Concept to a language, do not forget to add it to the language's included concepts field.
23
+ * Otherwise the concept will not be eagerly added to the Language, when registering the language in the ILanguageRegistry.
24
+ */
21
25
object BuiltinLanguages {
22
26
@Suppress(" ClassName" )
23
- object jetbrains_mps_lang_core : SimpleLanguage(name = " jetbrains.mps.lang.core" , uid = " mps:ceab5195-25ea-4f22-9b92-103b95ca8c0c" ) {
24
- object BaseConcept : SimpleConcept(conceptName = " BaseConcept" , is_abstract = true , uid = " mps:ceab5195-25ea-4f22-9b92-103b95ca8c0c/1133920641626" ) {
25
- init { addConcept(this ) }
27
+ object jetbrains_mps_lang_core :
28
+ SimpleLanguage (name = " jetbrains.mps.lang.core" , uid = " mps:ceab5195-25ea-4f22-9b92-103b95ca8c0c" ) {
29
+
30
+ override var includedConcepts = arrayOf(BaseConcept , Attribute , NodeAttribute , INamedConcept )
31
+
32
+ object BaseConcept : SimpleConcept(
33
+ conceptName = " BaseConcept" ,
34
+ is_abstract = true ,
35
+ uid = " mps:ceab5195-25ea-4f22-9b92-103b95ca8c0c/1133920641626" ,
36
+ ) {
37
+ init {
38
+ addConcept(this )
39
+ }
40
+
26
41
val virtualPackage by property(" ceab5195-25ea-4f22-9b92-103b95ca8c0c/1133920641626/1193676396447" )
27
- val smodelAttribute by childLink(" ceab5195-25ea-4f22-9b92-103b95ca8c0c/1133920641626/5169995583184591170" ).multiple().optional().type { Attribute }
42
+ val smodelAttribute by childLink(" ceab5195-25ea-4f22-9b92-103b95ca8c0c/1133920641626/5169995583184591170" ).multiple()
43
+ .optional().type { Attribute }
28
44
}
45
+
29
46
object Attribute : SimpleConcept(
30
47
conceptName = " Attribute" ,
31
48
is_abstract = true ,
@@ -34,6 +51,7 @@ object BuiltinLanguages {
34
51
) {
35
52
init { addConcept(this ) }
36
53
}
54
+
37
55
object NodeAttribute : SimpleConcept(
38
56
conceptName = " NodeAttribute" ,
39
57
is_abstract = true ,
@@ -42,6 +60,7 @@ object BuiltinLanguages {
42
60
) {
43
61
init { addConcept(this ) }
44
62
}
63
+
45
64
object INamedConcept : SimpleConcept(conceptName = " INamedConcept" ) {
46
65
init { addConcept(this ) }
47
66
val name by property(" ceab5195-25ea-4f22-9b92-103b95ca8c0c/1169194658468/1169194664001" )
@@ -53,7 +72,14 @@ object BuiltinLanguages {
53
72
* https://github.com/JetBrains/MPS-extensions/blob/5d96c3e69192f8902cf9aa7d846d05ccfb65253d/code/model-api/org.modelix.model.repositoryconcepts/models/org.modelix.model.repositoryconcepts.structure.mps ,
54
73
* but to get rid of that dependency, they are redefined here, with their original IDs to stay compatible.
55
74
*/
56
- object MPSRepositoryConcepts : SimpleLanguage(" org.modelix.model.repositoryconcepts" , uid = " mps:0a7577d1-d4e5-431d-98b1-fae38f9aee80" ) {
75
+ object MPSRepositoryConcepts :
76
+ SimpleLanguage (" org.modelix.model.repositoryconcepts" , uid = " mps:0a7577d1-d4e5-431d-98b1-fae38f9aee80" ) {
77
+
78
+ override var includedConcepts = arrayOf(
79
+ Model , Module , Solution , Language , DevKit , Repository , Project , ProjectModule , ModuleReference ,
80
+ ModelReference , LanguageDependency , SingleLanguageDependency , DevkitDependency , ModuleFacet ,
81
+ JavaModuleFacet , ModuleDependency ,
82
+ )
57
83
58
84
object Model : SimpleConcept(
59
85
conceptName = " Model" ,
@@ -314,7 +340,11 @@ object BuiltinLanguages {
314
340
}
315
341
}
316
342
317
- object ModelixRuntimelang : SimpleLanguage(" org.modelix.model.runtimelang" , uid = " mps:b6980ebd-f01d-459d-a952-38740f6313b4" ) {
343
+ object ModelixRuntimelang :
344
+ SimpleLanguage (" org.modelix.model.runtimelang" , uid = " mps:b6980ebd-f01d-459d-a952-38740f6313b4" ) {
345
+
346
+ override var includedConcepts = arrayOf(ModelServerInfo , RepositoryInfo , BranchInfo )
347
+
318
348
object ModelServerInfo : SimpleConcept(
319
349
conceptName = " ModelServerInfo" ,
320
350
uid = " mps:b6980ebd-f01d-459d-a952-38740f6313b4/7113393488488348863" ,
@@ -371,6 +401,7 @@ private fun SimpleConcept.property(uid: String) = object {
371
401
private val instance: IProperty by lazy {
372
402
SimpleProperty (name, uid = uid).also { owner.addProperty(it) }
373
403
}
404
+
374
405
operator fun getValue (ownerConcept : SimpleConcept , kotlinProperty : KProperty <* >): IProperty {
375
406
this .owner = ownerConcept
376
407
this .name = kotlinProperty.name
@@ -385,8 +416,15 @@ private fun SimpleConcept.childLink(uid: String) = object {
385
416
private var optional: Boolean = true
386
417
private lateinit var targetConcept: () -> IConcept
387
418
private val instance: IChildLink by lazy {
388
- SimpleChildLink (simpleName = name, uid = uid, isMultiple = multiple, isOptional = optional, targetConcept = targetConcept()).also { owner.addChildLink(it) }
419
+ SimpleChildLink (
420
+ simpleName = name,
421
+ uid = uid,
422
+ isMultiple = multiple,
423
+ isOptional = optional,
424
+ targetConcept = targetConcept(),
425
+ ).also { owner.addChildLink(it) }
389
426
}
427
+
390
428
operator fun getValue (ownerConcept : SimpleConcept , kotlinProperty : KProperty <* >): IChildLink {
391
429
this .owner = ownerConcept
392
430
this .name = kotlinProperty.name
0 commit comments