Skip to content

Commit bf65fde

Browse files
committed
use getters for members of a typed concept
This avoids issues with cyclic dependencies.
1 parent 894f5bc commit bf65fde

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,19 +270,19 @@ class MetaModelGenerator(val outputDir: Path) {
270270
is PropertyData -> {
271271
addProperty(PropertySpec.builder(feature.validName, GeneratedProperty::class.asClassName().parameterizedBy(data.asKotlinType()))
272272
.addModifiers(KModifier.OVERRIDE)
273-
.initializer(feature.kotlinRef())
273+
.getter(FunSpec.getterBuilder().addCode(feature.returnKotlinRef()).build())
274274
.build())
275275
}
276276
is ChildLinkData -> {
277277
addProperty(PropertySpec.builder(feature.validName, feature.generatedChildLinkType())
278278
.addModifiers(KModifier.OVERRIDE)
279-
.initializer(feature.kotlinRef())
279+
.getter(FunSpec.getterBuilder().addCode(feature.returnKotlinRef()).build())
280280
.build())
281281
}
282282
is ReferenceLinkData -> {
283283
addProperty(PropertySpec.builder(feature.validName, feature.generatedReferenceLinkType())
284284
.addModifiers(KModifier.OVERRIDE)
285-
.initializer(feature.kotlinRef())
285+
.getter(FunSpec.getterBuilder().addCode(feature.returnKotlinRef()).build())
286286
.build())
287287
}
288288
}
@@ -473,6 +473,7 @@ fun LanguageSet.ConceptInLanguage.conceptWrapperImplType() = ClassName(language.
473473
fun LanguageSet.ConceptInLanguage.conceptWrapperInterfaceType() = ClassName(language.name, concept.conceptWrapperInterfaceName())
474474

475475
fun FeatureInConcept.kotlinRef() = CodeBlock.of("%T.%N", concept.conceptObjectType(), validName)
476+
fun FeatureInConcept.returnKotlinRef() = CodeBlock.of("return %T.%N", concept.conceptObjectType(), validName)
476477
fun FeatureInConcept.generatedChildLinkType(): TypeName {
477478
val childConcept = (data as ChildLinkData).type.parseConceptRef(concept.language)
478479
val linkClass = if (data.multiple) GeneratedChildListLink::class else GeneratedSingleChildLink::class

0 commit comments

Comments
 (0)