diff --git a/platform/workspace/codegen-impl/gradle.properties b/platform/workspace/codegen-impl/gradle.properties index c7de907c7fb4..f638deb73aca 100644 --- a/platform/workspace/codegen-impl/gradle.properties +++ b/platform/workspace/codegen-impl/gradle.properties @@ -1,3 +1,3 @@ -codegenImplMinorVersion = 6 +codegenImplMinorVersion = 7 codegenImplMajorVersion = 3 codegenApiVersion = 2 \ No newline at end of file diff --git a/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/classes/implWsEntityClassCode.kt b/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/classes/implWsEntityClassCode.kt index 4f23a38f53a0..0e11e4d93f53 100644 --- a/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/classes/implWsEntityClassCode.kt +++ b/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/classes/implWsEntityClassCode.kt @@ -27,7 +27,10 @@ ${getLinksOfConnectionIds(this)} ${allFields.filter { it.name !in listOf("entitySource", "symbolicId") }.lines(" ") { implWsEntityFieldCode }.trimEnd()} override val entitySource: EntitySource - get() = dataSource.entitySource + get() { + readField("entitySource") + return dataSource.entitySource + } override fun connectionIdList(): List<${ConnectionId}> { return connections diff --git a/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/fields/implWsEntityFiledCode.kt b/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/fields/implWsEntityFiledCode.kt index 07ea09dfbb88..d3eeec16bf7e 100644 --- a/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/fields/implWsEntityFiledCode.kt +++ b/platform/workspace/codegen-impl/src/main/kotlin/com/intellij/workspaceModel/codegen/impl/writer/fields/implWsEntityFiledCode.kt @@ -24,11 +24,26 @@ private val ObjProperty<*, *>.implWsBlockingCode: String internal fun ObjProperty<*, *>.implWsBlockCode(fieldType: ValueType<*>, name: String, optionalSuffix: String = ""): String { return when (fieldType) { - ValueType.Int -> "override val $name: ${fieldType.javaType} get() = dataSource.$name" - ValueType.Boolean -> "override val $name: ${fieldType.javaType} get() = dataSource.$name" + ValueType.Int -> """ + override val $name: ${fieldType.javaType} + get() { + readField("$name") + return dataSource.$name + } + """.trimIndent() + ValueType.Boolean -> """ + override val $name: ${fieldType.javaType} + get() { + readField("$name") + return dataSource.$name + } + """.trimIndent() ValueType.String -> """ override val $name: ${fieldType.javaType}${optionalSuffix} - get() = dataSource.$name + get() { + readField("$name") + return dataSource.$name + } """.trimIndent() is ValueType.ObjRef -> { @@ -61,7 +76,10 @@ internal fun ObjProperty<*, *>.implWsBlockCode(fieldType: ValueType<*>, name: St else { """ override val $name: ${fieldType.javaType}$optionalSuffix - get() = dataSource.$name + get() { + readField("$name") + return dataSource.$name + } """.trimIndent() } @@ -73,22 +91,37 @@ internal fun ObjProperty<*, *>.implWsBlockCode(fieldType: ValueType<*>, name: St else { """ override val $javaName: ${fieldType.javaType}$optionalSuffix - get() = dataSource.$name + get() { + readField("$name") + return dataSource.$name + } """.trimIndent() } } is ValueType.Map<*, *> -> """ override val $name: ${fieldType.javaType}$optionalSuffix - get() = dataSource.$name + get() { + readField("$name") + return dataSource.$name + } """.trimIndent() is ValueType.Optional<*> -> when (fieldType.type) { - ValueType.Int, ValueType.Boolean -> "override val $name: ${fieldType.javaType} get() = dataSource.$name" + ValueType.Int, ValueType.Boolean -> """ + override val $name: ${fieldType.javaType} + get() { + readField("$name") + return dataSource.$name + } + """.trimIndent() else -> implWsBlockCode(fieldType.type, name, "?") } is ValueType.JvmClass -> """ override val $name: ${fieldType.kotlinClassName.toQualifiedName()}$optionalSuffix - get() = dataSource.$name + get() { + readField("$name") + return dataSource.$name + } """.trimIndent() else -> error("Unsupported field type: $this")