Skip to content

Commit 1684b99

Browse files
committed
concept interfaces now have a companion object with the implementation
This allows to write something like C_Component.inPort instead of L_my_language.Component...
1 parent be13326 commit 1684b99

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

metamodel-generator/src/main/kotlin/org/modelix/metamodel/generator/MetaModelGenerator.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class MetaModelGenerator(val outputDir: Path) {
9898
.initializer(concept.nodeWrapperImplName() + "::class")
9999
.build())
100100
addProperty(PropertySpec.builder(GeneratedConcept<*, *>::_typed.name, concept.conceptWrapperImplType(), KModifier.OVERRIDE)
101-
.getter(FunSpec.getterBuilder().addStatement("""return ${concept.conceptWrapperImplType().simpleName}.INSTANCE""").build())
101+
.getter(FunSpec.getterBuilder().addStatement("""return ${concept.conceptWrapperInterfaceType().simpleName}""").build())
102102
.build())
103103
addProperty(PropertySpec.builder(IConcept::language.name, ILanguage::class, KModifier.OVERRIDE)
104104
.initializer(concept.language.generatedClassName().simpleName)
@@ -155,6 +155,10 @@ class MetaModelGenerator(val outputDir: Path) {
155155
is ReferenceLinkData -> addProperty(PropertySpec.builder(feature.validName, feature.generatedReferenceLinkType()).build())
156156
}
157157
}
158+
159+
addType(TypeSpec.companionObjectBuilder()
160+
.superclass(concept.conceptWrapperImplType())
161+
.build())
158162
}.build()
159163
}
160164

@@ -165,7 +169,7 @@ class MetaModelGenerator(val outputDir: Path) {
165169
} else {
166170
superclass(concept.extends().first().conceptWrapperImplType())
167171
for (extended in concept.extends().drop(1)) {
168-
addSuperinterface(extended.conceptWrapperInterfaceType(), CodeBlock.of(extended.conceptWrapperImplType().canonicalName + ".INSTANCE"))
172+
addSuperinterface(extended.conceptWrapperInterfaceType(), CodeBlock.of(extended.conceptWrapperInterfaceType().canonicalName))
169173
}
170174
}
171175
addSuperinterface(concept.conceptWrapperInterfaceType())
@@ -199,19 +203,14 @@ class MetaModelGenerator(val outputDir: Path) {
199203
}
200204
}
201205
}
202-
203-
addType(TypeSpec.companionObjectBuilder()
204-
.addProperty(PropertySpec.builder("INSTANCE", concept.conceptWrapperImplType())
205-
.initializer(concept.conceptWrapperImplType().simpleName + "()").build())
206-
.build())
207206
}.build()
208207
}
209208

210209
private fun generateNodeWrapperImpl(concept: LanguageSet.ConceptInLanguage): TypeSpec {
211210
return TypeSpec.classBuilder(concept.nodeWrapperImplType()).apply {
212211
addModifiers(KModifier.OPEN)
213212
addProperty(PropertySpec.builder(TypedNodeImpl::_concept.name, concept.conceptWrapperImplType(), KModifier.OVERRIDE)
214-
.getter(FunSpec.getterBuilder().addStatement("""return ${concept.conceptWrapperImplType().simpleName}.INSTANCE""").build())
213+
.getter(FunSpec.getterBuilder().addStatement("""return ${concept.conceptWrapperInterfaceType().simpleName}""").build())
215214
.build())
216215

217216
if (concept.extends().size > 1) {

0 commit comments

Comments
 (0)