diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/generateCode.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/generateCode.kt new file mode 100644 index 0000000000..179f58df99 --- /dev/null +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/generateCode.kt @@ -0,0 +1,82 @@ +package org.jetbrains.kotlinx.dataframe.api + +import org.jetbrains.dataframe.impl.codeGen.CodeGenerator +import org.jetbrains.kotlinx.dataframe.DataFrame +import org.jetbrains.kotlinx.dataframe.codeGen.MarkerVisibility +import org.jetbrains.kotlinx.dataframe.codeGen.NameNormalizer +import org.jetbrains.kotlinx.dataframe.impl.codeGen.from + +public inline fun DataFrame.generateCode( + fields: Boolean = true, + extensionProperties: Boolean = true, +): CodeString { + val name = markerName() + return generateCode(name, fields, extensionProperties) +} + +public fun DataFrame.generateCode( + markerName: String, + fields: Boolean = true, + extensionProperties: Boolean = true, + visibility: MarkerVisibility = MarkerVisibility.IMPLICIT_PUBLIC, +): CodeString { + val codeGen = CodeGenerator.create() + return codeGen.generate( + schema = schema(), + name = markerName, + fields = fields, + extensionProperties = extensionProperties, + isOpen = true, + visibility = visibility, + ).code.declarations.toCodeString() +} + +public inline fun DataFrame.generateInterfaces(): CodeString = generateCode( + fields = true, + extensionProperties = false +) + +public inline fun DataFrame.generateDataClasses( + markerName: String? = null, + extensionProperties: Boolean = false, + visibility: MarkerVisibility = MarkerVisibility.IMPLICIT_PUBLIC, + useFqNames: Boolean = false, + nameNormalizer: NameNormalizer = NameNormalizer.default, +): CodeString { + val name = markerName ?: markerName() + val codeGen = CodeGenerator.create(useFqNames) + return codeGen.generate( + schema = schema(), + name = name, + fields = true, + extensionProperties = extensionProperties, + isOpen = false, + visibility = visibility, + asDataClass = true, + fieldNameNormalizer = nameNormalizer + ).code.declarations.toCodeString() +} + +@PublishedApi +internal inline fun markerName(): String = if (T::class.isAbstract) { + T::class.simpleName!! +} else "DataEntry" + +public fun DataFrame.generateInterfaces(markerName: String): CodeString = generateCode( + markerName = markerName, + fields = true, + extensionProperties = false +) + +/** + * Converts delimited 'my_name', 'my name', etc., String to camelCase 'myName' + */ +public val NameNormalizer.Companion.default: NameNormalizer get() = NameNormalizer.from(setOf('\t', ' ', '_')) + +@JvmInline +public value class CodeString(public val value: String) { + override fun toString(): String = value +} + +@PublishedApi +internal fun String.toCodeString(): CodeString = CodeString(this) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/print.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/print.kt index 08350d7824..ee9bbe6e2e 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/print.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/print.kt @@ -42,3 +42,5 @@ public fun GroupBy.print(): Unit = println(this) public fun DataFrameSchema.print(): Unit = println(this) // endregion + +public fun CodeString.print(): Unit = println(this) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerator.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerator.kt index 4ec4202584..f1b01f9a61 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerator.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerator.kt @@ -36,6 +36,7 @@ public interface CodeGenerator : ExtensionsCodeGenerator { knownMarkers: Iterable = emptyList(), readDfMethod: DefaultReadDfMethod? = null, fieldNameNormalizer: NameNormalizer = NameNormalizer.id(), + asDataClass: Boolean = false ): CodeGenResult public fun generate( diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/GeneratedField.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/GeneratedField.kt index d82ca0d787..a97cb7ac54 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/GeneratedField.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/GeneratedField.kt @@ -5,9 +5,13 @@ import org.jetbrains.kotlinx.dataframe.impl.codeGen.needsQuoting import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema public sealed interface FieldType { - public class ValueFieldType(public val typeFqName: String) : FieldType - public class FrameFieldType(public val markerName: String, public val nullable: Boolean) : FieldType - public class GroupFieldType(public val markerName: String) : FieldType + public data class ValueFieldType(public val typeFqName: String) : FieldType + public data class FrameFieldType( + public val markerName: String, + public val nullable: Boolean, + public val renderAsList: Boolean + ) : FieldType + public data class GroupFieldType(public val markerName: String, public val renderAsObject: Boolean) : FieldType } /** @@ -36,8 +40,8 @@ private fun String.toNullable() = if (this.last() == '?' || this == "*") this el public fun FieldType.toNullable(): FieldType = if (isNotNullable()) { when (this) { - is FieldType.FrameFieldType -> FieldType.FrameFieldType(markerName.toNullable(), nullable) - is FieldType.GroupFieldType -> FieldType.GroupFieldType(markerName.toNullable()) + is FieldType.FrameFieldType -> FieldType.FrameFieldType(markerName.toNullable(), nullable, renderAsList) + is FieldType.GroupFieldType -> FieldType.GroupFieldType(markerName.toNullable(), renderAsObject) is FieldType.ValueFieldType -> FieldType.ValueFieldType(typeFqName.toNullable()) } } else this @@ -55,6 +59,7 @@ public fun FieldType.toNotNullable(): FieldType = else it.removeSuffix("?") }, nullable = nullable, + renderAsList ) is FieldType.GroupFieldType -> FieldType.GroupFieldType( @@ -62,6 +67,7 @@ public fun FieldType.toNotNullable(): FieldType = if (it == "*") "Any" else it.removeSuffix("?") }, + renderAsObject ) is FieldType.ValueFieldType -> FieldType.ValueFieldType( @@ -88,6 +94,10 @@ public class ValidFieldName private constructor(private val identifier: String, return ValidFieldName(identifier = identifier + other.identifier, needsQuote = needsQuote || other.needsQuote) } + override fun toString(): String { + return identifier + } + public companion object { public fun of(name: String): ValidFieldName { val needsQuote = name.needsQuoting() diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MarkersExtractor.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MarkersExtractor.kt index 49e2a77be8..dbd6646f67 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MarkersExtractor.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MarkersExtractor.kt @@ -17,14 +17,33 @@ import kotlin.reflect.full.withNullability import kotlin.reflect.jvm.jvmErasure import kotlin.reflect.typeOf -internal fun KType.shouldBeConvertedToFrameColumn(): Boolean = when (jvmErasure) { - DataFrame::class -> true - List::class -> arguments[0].type?.jvmErasure?.hasAnnotation() == true - else -> false +internal fun KType.getFieldKind(): FieldKind = when { + jvmErasure == DataFrame::class -> Frame + jvmErasure == List::class && (arguments[0].type?.jvmErasure?.hasAnnotation() == true) -> ListToFrame + jvmErasure == DataRow::class -> Group + jvmErasure.hasAnnotation() -> ObjectToGroup + else -> Default } -internal fun KType.shouldBeConvertedToColumnGroup(): Boolean = jvmErasure.let { - it == DataRow::class || it.hasAnnotation() +internal sealed interface FieldKind { + val shouldBeConvertedToColumnGroup: Boolean get() = false + val shouldBeConvertedToFrameColumn: Boolean get() = false +} +internal data object Frame : FieldKind { + override val shouldBeConvertedToFrameColumn: Boolean = true +} +internal data object ListToFrame : FieldKind { + override val shouldBeConvertedToFrameColumn: Boolean = true +} + +internal data object Default : FieldKind + +internal data object Group : FieldKind { + override val shouldBeConvertedToColumnGroup: Boolean = true +} + +internal data object ObjectToGroup : FieldKind { + override val shouldBeConvertedToColumnGroup: Boolean = true } private fun String.toNullable(): String = if (endsWith("?")) this else "$this?" @@ -62,18 +81,26 @@ internal object MarkersExtractor { val type = it.returnType val fieldType: FieldType val clazz = type.jvmErasure + val fieldKind = type.getFieldKind() val columnSchema = when { - type.shouldBeConvertedToColumnGroup() -> { + fieldKind.shouldBeConvertedToColumnGroup -> { val nestedType = if (clazz == DataRow::class) type.arguments[0].type ?: typeOf() else type val marker = get(nestedType.jvmErasure, nullableProperties || type.isMarkedNullable) - fieldType = FieldType.GroupFieldType(marker.name) + fieldType = FieldType.GroupFieldType( + marker.name, + renderAsObject = fieldKind is ObjectToGroup + ) ColumnSchema.Group(marker.schema, nestedType) } - type.shouldBeConvertedToFrameColumn() -> { + fieldKind.shouldBeConvertedToFrameColumn -> { val frameType = type.arguments[0].type ?: typeOf() val marker = get(frameType.jvmErasure, nullableProperties || type.isMarkedNullable) - fieldType = FieldType.FrameFieldType(marker.name, type.isMarkedNullable || nullableProperties) + fieldType = FieldType.FrameFieldType( + marker.name, + type.isMarkedNullable || nullableProperties, + renderAsList = fieldKind is ListToFrame + ) ColumnSchema.Frame(marker.schema, type.isMarkedNullable, frameType) } diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/generateCode.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/generateCode.kt deleted file mode 100644 index 578be837a4..0000000000 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/generateCode.kt +++ /dev/null @@ -1,43 +0,0 @@ -package org.jetbrains.kotlinx.dataframe.codeGen - -import org.jetbrains.dataframe.impl.codeGen.CodeGenerator -import org.jetbrains.kotlinx.dataframe.DataFrame -import org.jetbrains.kotlinx.dataframe.api.schema - -public inline fun DataFrame.generateCode( - fields: Boolean = true, - extensionProperties: Boolean = true, -): String { - val name = if (T::class.isAbstract) { - T::class.simpleName!! - } else "DataEntry" - return generateCode(name, fields, extensionProperties) -} - -public fun DataFrame.generateCode( - markerName: String, - fields: Boolean = true, - extensionProperties: Boolean = true, - visibility: MarkerVisibility = MarkerVisibility.IMPLICIT_PUBLIC, -): String { - val codeGen = CodeGenerator.create() - return codeGen.generate( - schema = schema(), - name = markerName, - fields = fields, - extensionProperties = extensionProperties, - isOpen = true, - visibility = visibility, - ).code.declarations -} - -public inline fun DataFrame.generateInterfaces(): String = generateCode( - fields = true, - extensionProperties = false -) - -public fun DataFrame.generateInterfaces(markerName: String): String = generateCode( - markerName = markerName, - fields = true, - extensionProperties = false -) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/toDataFrame.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/toDataFrame.kt index 9c9bc6da35..4eeef26b1d 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/toDataFrame.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/toDataFrame.kt @@ -11,8 +11,7 @@ import org.jetbrains.kotlinx.dataframe.api.TraversePropertiesDsl import org.jetbrains.kotlinx.dataframe.api.concat import org.jetbrains.kotlinx.dataframe.api.dataFrameOf import org.jetbrains.kotlinx.dataframe.api.toDataFrameFromPairs -import org.jetbrains.kotlinx.dataframe.codeGen.shouldBeConvertedToColumnGroup -import org.jetbrains.kotlinx.dataframe.codeGen.shouldBeConvertedToFrameColumn +import org.jetbrains.kotlinx.dataframe.codeGen.getFieldKind import org.jetbrains.kotlinx.dataframe.columns.ColumnPath import org.jetbrains.kotlinx.dataframe.impl.asList import org.jetbrains.kotlinx.dataframe.impl.columnName @@ -248,11 +247,12 @@ internal fun convertToDataFrame( } } val kClass = returnType.classifier as KClass<*> + val fieldKind = returnType.getFieldKind() val shouldCreateValueCol = ( maxDepth <= 0 && - !returnType.shouldBeConvertedToFrameColumn() && - !returnType.shouldBeConvertedToColumnGroup() + !fieldKind.shouldBeConvertedToFrameColumn && + !fieldKind.shouldBeConvertedToColumnGroup ) || kClass == Any::class || kClass in preserveClasses || diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/CodeGeneratorImpl.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/CodeGeneratorImpl.kt index d74f48cb6b..dc1d94f6aa 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/CodeGeneratorImpl.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/CodeGeneratorImpl.kt @@ -146,11 +146,17 @@ internal object FullyQualifiedNames : TypeRenderingStrategy { is FieldType.ValueFieldType -> fieldType.typeFqName - is FieldType.GroupFieldType -> + is FieldType.GroupFieldType -> if (fieldType.renderAsObject) { fieldType.markerName + } else { + renderAccessorFieldType() + } - is FieldType.FrameFieldType -> - "$dataFrame<${fieldType.markerName}>${renderNullability(fieldType.nullable)}" + is FieldType.FrameFieldType -> if (fieldType.renderAsList) { + "List<${fieldType.markerName}>${renderNullability(fieldType.nullable)}" + } else { + renderAccessorFieldType() + } } } @@ -196,11 +202,17 @@ internal object ShortNames : TypeRenderingStrategy { is FieldType.ValueFieldType -> fieldType.typeFqName.shorten() - is FieldType.GroupFieldType -> + is FieldType.GroupFieldType -> if (fieldType.renderAsObject) { fieldType.markerName + } else { + renderAccessorFieldType() + } - is FieldType.FrameFieldType -> - "$dataFrame<${fieldType.markerName}>${renderNullability(fieldType.nullable)}" + is FieldType.FrameFieldType -> if (fieldType.renderAsList) { + "List<${fieldType.markerName}>${renderNullability(fieldType.nullable)}" + } else { + renderAccessorFieldType() + } } private fun String.shorten() = removeRedundantQualifier(this) @@ -436,12 +448,18 @@ internal class CodeGeneratorImpl(typeRendering: TypeRenderingStrategy = FullyQua knownMarkers: Iterable, readDfMethod: DefaultReadDfMethod?, fieldNameNormalizer: NameNormalizer, + asDataClass: Boolean ): CodeGenResult { - val context = SchemaProcessor.create(name, knownMarkers, fieldNameNormalizer) + val context = SchemaProcessor.create(name, if (asDataClass) emptyList() else knownMarkers, fieldNameNormalizer) val marker = context.process(schema, isOpen, visibility) val declarations = mutableListOf() context.generatedMarkers.forEach { itMarker -> - declarations.add(generateInterface(itMarker, fields, readDfMethod.takeIf { marker == itMarker })) + val declaration = if (asDataClass) { + generateClasses(itMarker) + } else { + generateInterface(itMarker, fields, readDfMethod.takeIf { marker == itMarker }) + } + declarations.add(declaration) if (extensionProperties) { declarations.add(generateExtensionProperties(itMarker, withNullable = false)) } @@ -467,17 +485,7 @@ internal class CodeGeneratorImpl(typeRendering: TypeRenderingStrategy = FullyQua .joinToString() else "" val resultDeclarations = mutableListOf() - val fieldsDeclaration = if (fields) marker.fields.map { - val override = if (it.overrides) "override " else "" - val columnNameAnnotation = if (it.columnName != it.fieldName.quotedIfNeeded) { - " @ColumnName(\"${renderStringLiteral(it.columnName)}\")\n" - } else { - "" - } - - val fieldType = it.renderFieldType() - "$columnNameAnnotation ${propertyVisibility}${override}val ${it.fieldName.quotedIfNeeded}: $fieldType" - }.join() else "" + val fieldsDeclaration = if (fields) renderFields(marker, propertyVisibility).join() else "" val readDfMethodDeclaration = readDfMethod?.toDeclaration(marker, propertyVisibility) @@ -503,6 +511,36 @@ internal class CodeGeneratorImpl(typeRendering: TypeRenderingStrategy = FullyQua resultDeclarations.add(header + baseInterfacesDeclaration + body) return resultDeclarations.join() } + + private fun generateClasses(marker: Marker): Code { + val annotationName = DataSchema::class.simpleName + + val visibility = renderTopLevelDeclarationVisibility(marker) + val propertyVisibility = renderInternalDeclarationVisibility(marker) + val header = + "@$annotationName\n${visibility}data class ${marker.name}(" + + val fieldsDeclaration = renderFields(marker, propertyVisibility).joinToString(",\n") + return buildString { + appendLine(header) + appendLine(fieldsDeclaration) + append(")") + } + } + + private fun renderFields(marker: Marker, propertyVisibility: String): List { + return marker.fields.map { + val override = if (it.overrides) "override " else "" + val columnNameAnnotation = if (it.columnName != it.fieldName.quotedIfNeeded) { + " @ColumnName(\"${renderStringLiteral(it.columnName)}\")\n" + } else { + "" + } + + val fieldType = it.renderFieldType() + "$columnNameAnnotation ${propertyVisibility}${override}val ${it.fieldName.quotedIfNeeded}: $fieldType" + } + } } public fun CodeWithConverter.toStandaloneSnippet(packageName: String, additionalImports: List): String = diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/SchemaProcessorImpl.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/SchemaProcessorImpl.kt index 2d82865a8a..f2e4f5e395 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/SchemaProcessorImpl.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/SchemaProcessorImpl.kt @@ -61,10 +61,11 @@ internal class SchemaProcessorImpl( fun getFieldType(columnSchema: ColumnSchema): FieldType = when (columnSchema) { is ColumnSchema.Value -> FieldType.ValueFieldType(columnSchema.type.toString()) - is ColumnSchema.Group -> FieldType.GroupFieldType(process(columnSchema.schema, false, visibility).name) + is ColumnSchema.Group -> FieldType.GroupFieldType(process(columnSchema.schema, false, visibility).name, renderAsObject = true) is ColumnSchema.Frame -> FieldType.FrameFieldType( process(columnSchema.schema, false, visibility).name, - columnSchema.nullable + columnSchema.nullable, + renderAsList = true ) else -> throw NotImplementedError() diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/gather.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/gather.kt index e20d27944c..d45a77fdb3 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/gather.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/gather.kt @@ -6,7 +6,6 @@ import org.jetbrains.kotlinx.dataframe.AnyFrame import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.DataRow import org.jetbrains.kotlinx.dataframe.annotations.DataSchema -import org.jetbrains.kotlinx.dataframe.codeGen.generateCode import org.jetbrains.kotlinx.dataframe.columns.ColumnKind import org.jetbrains.kotlinx.dataframe.io.readJsonStr import org.jetbrains.kotlinx.dataframe.kind @@ -118,7 +117,7 @@ class GatherTests { @Test fun `generated code is fully typed`() { - generatedCode.contains("<*>") shouldBe false + generatedCode.value.contains("<*>") shouldBe false } @Test diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerationTests.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerationTests.kt index 8486cc1b49..bc6680f3ec 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerationTests.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeGenerationTests.kt @@ -11,8 +11,12 @@ import org.jetbrains.kotlinx.dataframe.DataColumn import org.jetbrains.kotlinx.dataframe.DataRow import org.jetbrains.kotlinx.dataframe.api.dataFrameOf import org.jetbrains.kotlinx.dataframe.api.dropNulls +import org.jetbrains.kotlinx.dataframe.api.generateDataClasses +import org.jetbrains.kotlinx.dataframe.api.groupBy import org.jetbrains.kotlinx.dataframe.api.move import org.jetbrains.kotlinx.dataframe.api.schema +import org.jetbrains.kotlinx.dataframe.api.toCodeString +import org.jetbrains.kotlinx.dataframe.api.toDataFrame import org.jetbrains.kotlinx.dataframe.api.under import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup import org.jetbrains.kotlinx.dataframe.impl.codeGen.ReplCodeGeneratorImpl @@ -305,6 +309,38 @@ class CodeGenerationTests : BaseTest() { } } + @Test + fun `check method generateDataClasses`() { + val code = typed.groupBy { name }.toDataFrame().generateDataClasses() + + code shouldBe """ + @DataSchema + data class Person1( + val age: Int, + val city: String?, + val name: String, + val weight: Int? + ) + + @DataSchema + data class Person( + val group: List, + val name: String + ) + """.trimIndent().toCodeString() + } + + @Test + fun `check name normalization for generated data classes`() { + dataFrameOf("my_name")(1).generateDataClasses() shouldBe """ + @DataSchema + data class DataEntry( + @ColumnName("my_name") + val myName: Int + ) + """.trimIndent().toCodeString() + } + @Test fun patterns() { """^[\d]""".toRegex().matches("3fds") diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MatchSchemeTests.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MatchSchemeTests.kt index 8a4bdd7df2..286460d62a 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MatchSchemeTests.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/MatchSchemeTests.kt @@ -7,6 +7,7 @@ import org.jetbrains.kotlinx.dataframe.DataRow import org.jetbrains.kotlinx.dataframe.annotations.DataSchema import org.jetbrains.kotlinx.dataframe.api.add import org.jetbrains.kotlinx.dataframe.api.cast +import org.jetbrains.kotlinx.dataframe.api.generateCode import org.jetbrains.kotlinx.dataframe.io.readJsonStr import org.junit.Test diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/ShortNamesRenderingTest.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/ShortNamesRenderingTest.kt index 07e6837998..efe4db2837 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/ShortNamesRenderingTest.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/ShortNamesRenderingTest.kt @@ -50,7 +50,7 @@ internal class ShortNamesRenderingTest : TypeRenderingStrategy by ShortNames { fun `list parametrized by data schema type`() { fields.keys.asClue { fields["c"]!!.renderAccessorFieldType() shouldBe "DataFrame" - fields["c"]!!.renderFieldType() shouldBe "DataFrame" + fields["c"]!!.renderFieldType() shouldBe "List" } } @@ -66,7 +66,7 @@ internal class ShortNamesRenderingTest : TypeRenderingStrategy by ShortNames { fun `data row`() { fields.keys.asClue { fields["e"]!!.renderAccessorFieldType() shouldBe "DataRow" - fields["e"]!!.renderFieldType() shouldBe "org.jetbrains.kotlinx.dataframe.internal.codeGen.ShortNamesRenderingTest.Marker" + fields["e"]!!.renderFieldType() shouldBe "DataRow" } } diff --git a/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiMarker.kt b/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiMarker.kt index 8bf9bc0941..b4138172d1 100644 --- a/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiMarker.kt +++ b/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiMarker.kt @@ -40,7 +40,7 @@ internal sealed class OpenApiMarker private constructor( abstract fun toFieldType(): FieldType override fun toString(): String = - "MyMarker(markerType = ${this::class}, name = $name, isOpen = $isOpen, fields = $fields, superMarkers = $superMarkers, visibility = $visibility, typeParameters = $typeParameters, typeArguments = $typeArguments)" + "MyMarker(name = $name, isOpen = $isOpen, markerType = ${this::class}, fields = $fields, superMarkers = $superMarkers, visibility = $visibility, typeParameters = $typeParameters, typeArguments = $typeArguments)" /** * A [Marker] that will be used to generate an enum. @@ -133,6 +133,7 @@ internal sealed class OpenApiMarker private constructor( override fun toFieldType(): FieldType = FieldType.GroupFieldType( markerName = name + if (nullable) "?" else "", + renderAsObject = true ) override fun withName(name: String, prependTopInterfaceName: Boolean): Interface = @@ -207,6 +208,7 @@ internal sealed class OpenApiMarker private constructor( FieldType.FrameFieldType( markerName = name + if (nullable) "?" else "", nullable = false, + renderAsList = false ) override fun withName(name: String, prependTopInterfaceName: Boolean): AdditionalPropertyInterface = @@ -331,6 +333,7 @@ internal sealed class OpenApiMarker private constructor( override fun toFieldType(): FieldType = FieldType.GroupFieldType( markerName = name + if (nullable) "?" else "", + renderAsObject = true ) override fun withName(name: String, prependTopInterfaceName: Boolean): MarkerAlias = diff --git a/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiType.kt b/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiType.kt index 27e36080fa..01ff27bcb3 100644 --- a/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiType.kt +++ b/dataframe-openapi/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/OpenApiType.kt @@ -68,6 +68,7 @@ internal sealed class OpenApiType(val name: kotlin.String?) : IsObject { markerName = marker.name.let { if (nullable) it.toNullable() else it }, + renderAsObject = true ) } @@ -77,6 +78,7 @@ internal sealed class OpenApiType(val name: kotlin.String?) : IsObject { fun getType(nullable: kotlin.Boolean): FieldType = FieldType.GroupFieldType( markerName = (if (nullable) typeOf>() else typeOf>()).toString(), + renderAsObject = true ) } @@ -93,6 +95,7 @@ internal sealed class OpenApiType(val name: kotlin.String?) : IsObject { FieldType.FrameFieldType( markerName = markerName.let { if (nullable) it.toNullable() else it }, nullable = false, // preferring DataFrame over DataFrame? + renderAsList = false ) /** used for list of AdditionalProperty objects (read as List>) */ diff --git a/dataframe-openapi/src/test/kotlin/OpenApiTests.kt b/dataframe-openapi/src/test/kotlin/OpenApiTests.kt index cb6a05ff19..051170c699 100644 --- a/dataframe-openapi/src/test/kotlin/OpenApiTests.kt +++ b/dataframe-openapi/src/test/kotlin/OpenApiTests.kt @@ -1,6 +1,7 @@ import io.kotest.assertions.throwables.shouldThrowAny import io.kotest.matchers.booleans.shouldBeTrue import io.kotest.matchers.should +import io.kotest.matchers.shouldBe import io.kotest.matchers.string.haveSubstring import org.intellij.lang.annotations.Language import org.jetbrains.kotlinx.dataframe.AnyFrame @@ -478,507 +479,609 @@ class OpenApiTests : JupyterReplTestCase() { } @Test - fun `Other advanced test`() { + fun `Check advances code generated`() { val fullFunctionName = ValidFieldName.of(::`Other advanced test`.name) - val functionName = fullFunctionName.quotedIfNeeded - val code = execGeneratedCode(advancedExample, fullFunctionName.unquoted) + val code = openApi.readCodeForGeneration( + file = advancedExample, + name = fullFunctionName.unquoted, + extensionProperties = true, + generateHelperCompanionObject = false, + ) .trimLines() - @Language("kt") val breedEnum = """ - enum class Breed(override val value: kotlin.String) : org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum { - DINGO("Dingo"), - HUSKY("Husky"), - RETRIEVER("Retriever"), - SHEPHERD("Shepherd"); - } - """.trimLines() - - code should haveSubstring(breedEnum) - - @Language("kt") val dogInterface = """ - @DataSchema(isOpen = false) - interface Dog : $functionName.Pet { - override val tag: kotlin.String - val bark: kotlin.Boolean? - val breed: $functionName.Breed - public companion object { - public val keyValuePaths: kotlin.collections.List + @Language("kt") val s = """ + interface `Other advanced test` { + + enum class EyeColor(override val value: kotlin.String) : org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum { + BLUE("Blue"), + YELLOW("Yellow"), + BROWN("Brown"), + GREEN("Green"); + } + @DataSchema(isOpen = false) + interface Pet { + @ColumnName("pet_type") + val petType: kotlin.String + @ColumnName("value") + val `value`: kotlin.Any? + val name: kotlin.String + val tag: kotlin.String? + val other: kotlin.Any? + @ColumnName("eye_color") + val eyeColor: `Other advanced test`.EyeColor? + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf() - - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToDog(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToPet(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToPet() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToPet() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToPet() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToPet() } - """.trimLines() // tag is nullable in Pet but required in Dog - - code should haveSubstring(dogInterface) - - @Language("kt") val dogExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Dog>.bark: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Dog_bark") get() = this["bark"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Dog>.bark: kotlin.Boolean? @JvmName("Dog_bark") get() = this["bark"] as kotlin.Boolean? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Dog?>.bark: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableDog_bark") get() = this["bark"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Dog?>.bark: kotlin.Boolean? @JvmName("NullableDog_bark") get() = this["bark"] as kotlin.Boolean? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Dog>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed> @JvmName("Dog_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Dog>.breed: $functionName.Breed @JvmName("Dog_breed") get() = this["breed"] as $functionName.Breed - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Dog?>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed?> @JvmName("NullableDog_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Dog?>.breed: $functionName.Breed? @JvmName("NullableDog_breed") get() = this["breed"] as $functionName.Breed? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Dog>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Dog_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Dog>.tag: kotlin.String @JvmName("Dog_tag") get() = this["tag"] as kotlin.String - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Dog?>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableDog_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Dog?>.tag: kotlin.String? @JvmName("NullableDog_tag") get() = this["tag"] as kotlin.String? - """.trimLines() - - code should haveSubstring(dogExtensions) - - @Language("kt") val breed1Enum = """ - enum class Breed1(override val value: kotlin.String) : org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum { - RAGDOLL("Ragdoll"), - SHORTHAIR("Shorthair"), - PERSIAN("Persian"), - MAINE_COON("Maine Coon"), - MAINE_COON_1("maine_coon"), - EMPTY_STRING(""), - `1`("1"); - } - """.trimLines() // nullable enum, but taken care of in properties that use this enum - - code should haveSubstring(breed1Enum) - - @Language("kt") val catInterface = """ - @DataSchema(isOpen = false) - interface Cat : $functionName.Pet { - val hunts: kotlin.Boolean? - val age: kotlin.Float? - val breed: $functionName.Breed1? - public companion object { - public val keyValuePaths: kotlin.collections.List + + } + @DataSchema(isOpen = false) + interface Dog : `Other advanced test`.Pet { + override val tag: kotlin.String + val bark: kotlin.Boolean? + val breed: `Other advanced test`.Breed + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf() - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToCat(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToDog(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { convertDataRowsWithOpenApi() convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToDog() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToDog() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToDog() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToDog() } - """.trimLines() // hunts is required but marked nullable, age is either integer or number, breed is nullable enum - - code should haveSubstring(catInterface) - - @Language("kt") val catExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Cat>.age: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Cat_age") get() = this["age"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Cat>.age: kotlin.Float? @JvmName("Cat_age") get() = this["age"] as kotlin.Float? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Cat?>.age: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableCat_age") get() = this["age"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Cat?>.age: kotlin.Float? @JvmName("NullableCat_age") get() = this["age"] as kotlin.Float? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Cat>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed1?> @JvmName("Cat_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed1?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Cat>.breed: $functionName.Breed1? @JvmName("Cat_breed") get() = this["breed"] as $functionName.Breed1? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Cat?>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed1?> @JvmName("NullableCat_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Breed1?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Cat?>.breed: $functionName.Breed1? @JvmName("NullableCat_breed") get() = this["breed"] as $functionName.Breed1? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Cat>.hunts: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Cat_hunts") get() = this["hunts"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Cat>.hunts: kotlin.Boolean? @JvmName("Cat_hunts") get() = this["hunts"] as kotlin.Boolean? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Cat?>.hunts: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableCat_hunts") get() = this["hunts"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Cat?>.hunts: kotlin.Boolean? @JvmName("NullableCat_hunts") get() = this["hunts"] as kotlin.Boolean? - """.trimLines() - - code should haveSubstring(catExtensions) - - @Language("kt") val eyeColorEnum = """ - enum class EyeColor(override val value: kotlin.String) : org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum { - BLUE("Blue"), - YELLOW("Yellow"), - BROWN("Brown"), - GREEN("Green"); - } - """.trimLines() // nullable enum, but taken care of in properties that use this enum - - code should haveSubstring(eyeColorEnum) - - @Language("kt") val petInterface = """ - @DataSchema(isOpen = false) - interface Pet { - @ColumnName("pet_type") - val petType: kotlin.String - @ColumnName("value") - val `value`: kotlin.Any? - val name: kotlin.String - val tag: kotlin.String? - val other: kotlin.Any? - @ColumnName("eye_color") - val eyeColor: $functionName.EyeColor? - public companion object { - public val keyValuePaths: kotlin.collections.List + + } + enum class Breed(override val value: kotlin.String) : org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum { + DINGO("Dingo"), + HUSKY("Husky"), + RETRIEVER("Retriever"), + SHEPHERD("Shepherd"); + } + @DataSchema(isOpen = false) + interface Cat : `Other advanced test`.Pet { + val hunts: kotlin.Boolean? + val age: kotlin.Float? + val breed: `Other advanced test`.Breed1? + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf() - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToPet(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToCat(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { convertDataRowsWithOpenApi() convertTo() } - """.trimLines() // petType was named pet_type, id is either Long or String, other is not integer, eyeColor is a required but nullable enum - - code should haveSubstring(petInterface) - - @Language("kt") val petExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet>.`value`: kotlin.Any? @JvmName("Pet_value") get() = this["value"] as kotlin.Any? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet?>.`value`: kotlin.Any? @JvmName("NullablePet_value") get() = this["value"] as kotlin.Any? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet>.eyeColor: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.EyeColor?> @JvmName("Pet_eyeColor") get() = this["eye_color"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.EyeColor?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet>.eyeColor: $functionName.EyeColor? @JvmName("Pet_eyeColor") get() = this["eye_color"] as $functionName.EyeColor? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet?>.eyeColor: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.EyeColor?> @JvmName("NullablePet_eyeColor") get() = this["eye_color"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.EyeColor?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet?>.eyeColor: $functionName.EyeColor? @JvmName("NullablePet_eyeColor") get() = this["eye_color"] as $functionName.EyeColor? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet>.name: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_name") get() = this["name"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet>.name: kotlin.String @JvmName("Pet_name") get() = this["name"] as kotlin.String - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet?>.name: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_name") get() = this["name"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet?>.name: kotlin.String? @JvmName("NullablePet_name") get() = this["name"] as kotlin.String? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet>.other: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_other") get() = this["other"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet>.other: kotlin.Any? @JvmName("Pet_other") get() = this["other"] as kotlin.Any? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet?>.other: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_other") get() = this["other"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet?>.other: kotlin.Any? @JvmName("NullablePet_other") get() = this["other"] as kotlin.Any? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet>.petType: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_petType") get() = this["pet_type"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet>.petType: kotlin.String @JvmName("Pet_petType") get() = this["pet_type"] as kotlin.String - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet?>.petType: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_petType") get() = this["pet_type"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet?>.petType: kotlin.String? @JvmName("NullablePet_petType") get() = this["pet_type"] as kotlin.String? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet>.tag: kotlin.String? @JvmName("Pet_tag") get() = this["tag"] as kotlin.String? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Pet?>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Pet?>.tag: kotlin.String? @JvmName("NullablePet_tag") get() = this["tag"] as kotlin.String? - """.trimLines() - - code should haveSubstring(petExtensions) - - @Language("kt") val petRefTypeAlias = """ - typealias PetRef = $functionName.Pet - """.trimLines() // is either Cat or Dog, we cannot merge objects, but they have the same ancestor, so Pet - - code should haveSubstring(petRefTypeAlias) - - @Language("kt") val alsoCatTypeAlias = """ - typealias AlsoCat = $functionName.Cat - """.trimLines() - - code should haveSubstring(alsoCatTypeAlias) - - @Language("kt") val integerTypeAlias = """ - typealias Integer = kotlin.Int - """.trimLines() - - code should haveSubstring(integerTypeAlias) - - @Language("kt") val intListInterface = """ - @DataSchema(isOpen = false) - interface IntList { - val list: kotlin.collections.List - public companion object { - public val keyValuePaths: kotlin.collections.List + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToCat() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToCat() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToCat() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToCat() + } + + } + enum class Breed1(override val value: kotlin.String) : org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum { + RAGDOLL("Ragdoll"), + SHORTHAIR("Shorthair"), + PERSIAN("Persian"), + MAINE_COON("Maine Coon"), + MAINE_COON_1("maine_coon"), + EMPTY_STRING(""), + `1`("1"); + } + @DataSchema(isOpen = false) + interface IntList { + val list: kotlin.collections.List + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf() - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToIntList(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToIntList(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToIntList() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToIntList() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToIntList() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToIntList() } - """.trimLines() // array of primitives, so list int - - code should haveSubstring(intListInterface) - - @Language("kt") val intListExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.IntList>.list: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("IntList_list") get() = this["list"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.IntList>.list: kotlin.collections.List @JvmName("IntList_list") get() = this["list"] as kotlin.collections.List - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.IntList?>.list: org.jetbrains.kotlinx.dataframe.DataColumn?> @JvmName("NullableIntList_list") get() = this["list"] as org.jetbrains.kotlinx.dataframe.DataColumn?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.IntList?>.list: kotlin.collections.List? @JvmName("NullableIntList_list") get() = this["list"] as kotlin.collections.List? - """.trimLines() - - code should haveSubstring(intListExtensions) - - @Language("kt") - val objectWithAdditionalPropertiesInterface = """ - @DataSchema(isOpen = false) - interface ObjectWithAdditionalProperties : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { - @ColumnName("value") - override val `value`: kotlin.String - override val key: kotlin.String - public companion object { - public val keyValuePaths: kotlin.collections.List + + } + @DataSchema(isOpen = false) + interface ObjectWithAdditionalProperties : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { + @ColumnName("value") + override val `value`: kotlin.String + override val key: kotlin.String + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf(JsonPath(""${'"'}${'$'}""${'"'})) - - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditionalProperties(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditionalProperties(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditionalProperties() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditionalProperties() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditionalProperties() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditionalProperties() } - - public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame - .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } - .convertToObjectWithAdditionalProperties() - """.trimLines() - - code should haveSubstring(objectWithAdditionalPropertiesInterface) - - @Language("kt") - val objectWithAdditionalPropertiesExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditionalProperties>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditionalProperties_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditionalProperties>.`value`: kotlin.String @JvmName("ObjectWithAdditionalProperties_value") get() = this["value"] as kotlin.String - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditionalProperties?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditionalProperties_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditionalProperties?>.`value`: kotlin.String? @JvmName("NullableObjectWithAdditionalProperties_value") get() = this["value"] as kotlin.String? - """.trimLines() - - code should haveSubstring(objectWithAdditionalPropertiesExtensions) - - @Language("kt") - val objectWithAdditional2Interface = """ - @DataSchema(isOpen = false) - interface ObjectWithAdditional2 : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { - @ColumnName("value") - override val `value`: kotlin.Any - override val key: kotlin.String - public companion object { - public val keyValuePaths: kotlin.collections.List - get() = listOf(JsonPath(""${'"'}${'$'}""${'"'})) - - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditional2(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + + } + enum class Op(override val value: kotlin.String) : org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum { + ADD("add"), + REMOVE("remove"), + REPLACE("replace"); + } + @DataSchema(isOpen = false) + interface Value { + + public companion object { + public val keyValuePaths: kotlin.collections.List + get() = listOf() + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToValue(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToValue() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToValue() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToValue() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToValue() } - - public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame - .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } - .convertToObjectWithAdditional2() - """.trimLines() - - code should haveSubstring(objectWithAdditional2Interface) - - @Language("kt") - val objectWithAdditional2Extensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditional2>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional2_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditional2>.`value`: kotlin.Any @JvmName("ObjectWithAdditional2_value") get() = this["value"] as kotlin.Any - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditional2?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional2_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditional2?>.`value`: kotlin.Any? @JvmName("NullableObjectWithAdditional2_value") get() = this["value"] as kotlin.Any? - """.trimLines() - - code should haveSubstring(objectWithAdditional2Extensions) - - @Language("kt") - val objectWithAdditional3Interface = """ - @DataSchema(isOpen = false) - interface ObjectWithAdditional3 : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { - @ColumnName("value") - override val `value`: kotlin.Any? - override val key: kotlin.String - public companion object { - public val keyValuePaths: kotlin.collections.List + + } + @DataSchema(isOpen = false) + interface ObjectWithAdditional : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { + @ColumnName("value") + override val `value`: kotlin.Int + override val key: kotlin.String + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf(JsonPath(""${'"'}${'$'}""${'"'})) - - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditional3(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditional(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional() } - - public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame - .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } - .convertToObjectWithAdditional3() - """.trimLines() - - code should haveSubstring(objectWithAdditional3Interface) - - @Language("kt") - val objectWithAdditional3Extensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditional3>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional3_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditional3>.`value`: kotlin.Any? @JvmName("ObjectWithAdditional3_value") get() = this["value"] as kotlin.Any? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditional3?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional3_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditional3?>.`value`: kotlin.Any? @JvmName("NullableObjectWithAdditional3_value") get() = this["value"] as kotlin.Any? - """.trimLines() - - code should haveSubstring(objectWithAdditional3Extensions) - - // TODO broke PetRef? - @Language("kt") - val errorInterface = """ - @DataSchema(isOpen = false) - interface Error { - val ints: $functionName.IntList? - val petRef: PetRef - val pets: org.jetbrains.kotlinx.dataframe.DataFrame - val code: kotlin.Int - val message: kotlin.String - val objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditionalProperties> - val objectWithAdditionalList: kotlin.collections.List>? - val objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional2?> - val objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional3> - val array: kotlin.collections.List? - public companion object { - public val keyValuePaths: kotlin.collections.List + + } + @DataSchema(isOpen = false) + interface SomeArrayContent { + val op: `Other advanced test`.Op + val path: kotlin.String + @ColumnName("value") + val `value`: `Other advanced test`.Value? + val objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional?> + public companion object { + public val keyValuePaths: kotlin.collections.List + get() = listOf(JsonPath(""${'"'}${'$'}["objectWithAdditional"]""${'"'})) + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToSomeArrayContent(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToSomeArrayContent() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToSomeArrayContent() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToSomeArrayContent() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToSomeArrayContent() + } + + } + @DataSchema(isOpen = false) + interface Error { + val ints: `Other advanced test`.IntList? + val petRef: PetRef + val pets: org.jetbrains.kotlinx.dataframe.DataFrame + val code: kotlin.Int + val message: kotlin.String + val objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditionalProperties> + val objectWithAdditionalList: kotlin.collections.List>? + val objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional2?> + val objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional3> + val array: kotlin.collections.List? + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf(JsonPath(""${'"'}${'$'}["objectWithAdditional"]""${'"'}), JsonPath(""${'"'}${'$'}["objectWithAdditionalList"][*]""${'"'}), JsonPath(""${'"'}${'$'}["objectWithAdditional2"]""${'"'}), JsonPath(""${'"'}${'$'}["objectWithAdditional3"]""${'"'}), JsonPath(""${'"'}${'$'}["array"][*][*][*]["objectWithAdditional"]""${'"'})) - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToError(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToError(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToError() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToError() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToError() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToError() } - """.trimLines() - - code should haveSubstring(errorInterface) - - @Language("kt") - val errorExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.array: org.jetbrains.kotlinx.dataframe.DataColumn?> @JvmName("Error_array") get() = this["array"] as org.jetbrains.kotlinx.dataframe.DataColumn?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.array: kotlin.collections.List? @JvmName("Error_array") get() = this["array"] as kotlin.collections.List? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.array: org.jetbrains.kotlinx.dataframe.DataColumn?> @JvmName("NullableError_array") get() = this["array"] as org.jetbrains.kotlinx.dataframe.DataColumn?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.array: kotlin.collections.List? @JvmName("NullableError_array") get() = this["array"] as kotlin.collections.List? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.code: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Error_code") get() = this["code"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.code: kotlin.Int @JvmName("Error_code") get() = this["code"] as kotlin.Int - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.code: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableError_code") get() = this["code"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.code: kotlin.Int? @JvmName("NullableError_code") get() = this["code"] as kotlin.Int? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.ints: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.IntList?> @JvmName("Error_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.IntList?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.ints: org.jetbrains.kotlinx.dataframe.DataRow<$functionName.IntList?> @JvmName("Error_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.DataRow<$functionName.IntList?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.ints: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.IntList?> @JvmName("NullableError_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.IntList?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.ints: org.jetbrains.kotlinx.dataframe.DataRow<$functionName.IntList?> @JvmName("NullableError_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.DataRow<$functionName.IntList?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.message: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Error_message") get() = this["message"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.message: kotlin.String @JvmName("Error_message") get() = this["message"] as kotlin.String - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.message: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableError_message") get() = this["message"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.message: kotlin.String? @JvmName("NullableError_message") get() = this["message"] as kotlin.String? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditionalProperties> @JvmName("Error_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditionalProperties> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditionalProperties?> @JvmName("NullableError_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditionalProperties?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional2?> @JvmName("Error_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional2?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional2?> @JvmName("NullableError_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional2?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional3> @JvmName("Error_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional3> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional3?> @JvmName("NullableError_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional3?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.objectWithAdditionalList: org.jetbrains.kotlinx.dataframe.DataColumn>?> @JvmName("Error_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as org.jetbrains.kotlinx.dataframe.DataColumn>?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.objectWithAdditionalList: kotlin.collections.List>? @JvmName("Error_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as kotlin.collections.List>? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.objectWithAdditionalList: org.jetbrains.kotlinx.dataframe.DataColumn>?> @JvmName("NullableError_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as org.jetbrains.kotlinx.dataframe.DataColumn>?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.objectWithAdditionalList: kotlin.collections.List>? @JvmName("NullableError_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as kotlin.collections.List>? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.petRef: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup @JvmName("Error_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.petRef: org.jetbrains.kotlinx.dataframe.DataRow @JvmName("Error_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.DataRow - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.petRef: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup @JvmName("NullableError_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.petRef: org.jetbrains.kotlinx.dataframe.DataRow @JvmName("NullableError_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.DataRow - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error>.pets: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error>.pets: org.jetbrains.kotlinx.dataframe.DataFrame @JvmName("Error_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataFrame - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.Error?>.pets: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Error?>.pets: org.jetbrains.kotlinx.dataframe.DataFrame @JvmName("NullableError_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataFrame - """.trimLines() - - code should haveSubstring(errorExtensions) - - @Language("kt") val valueInterface = """ - @DataSchema(isOpen = false) - interface Value - """.trimLines() - - code should haveSubstring(valueInterface) - - @Language("kt") - val objectWithAdditionalInterface = """ - @DataSchema(isOpen = false) - interface ObjectWithAdditional : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { - @ColumnName("value") - override val `value`: kotlin.Int - override val key: kotlin.String - public companion object { - public val keyValuePaths: kotlin.collections.List + + } + @DataSchema(isOpen = false) + interface ObjectWithAdditional2 : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { + @ColumnName("value") + override val `value`: kotlin.Any + override val key: kotlin.String + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf(JsonPath(""${'"'}${'$'}""${'"'})) - - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditional(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditional2(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional2() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional2() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional2() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional2() } - - public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame - .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } - .convertToObjectWithAdditional() - """.trimLines() - - code should haveSubstring(objectWithAdditionalInterface) - - @Language("kt") - val objectWithAdditionalExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditional>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditional>.`value`: kotlin.Int @JvmName("ObjectWithAdditional_value") get() = this["value"] as kotlin.Int - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ObjectWithAdditional?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ObjectWithAdditional?>.`value`: kotlin.Int? @JvmName("NullableObjectWithAdditional_value") get() = this["value"] as kotlin.Int? - """.trimLines() - - code should haveSubstring(objectWithAdditionalExtensions) - - @Language("kt") val someArrayContentInterface = """ - @DataSchema(isOpen = false) - interface SomeArrayContent { - val op: $functionName.Op - val path: kotlin.String - @ColumnName("value") - val `value`: $functionName.Value? - val objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional?> - public companion object { - public val keyValuePaths: kotlin.collections.List - get() = listOf(JsonPath(""${'"'}${'$'}["objectWithAdditional"]""${'"'})) - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToSomeArrayContent(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + } + @DataSchema(isOpen = false) + interface ObjectWithAdditional3 : org.jetbrains.kotlinx.dataframe.io.AdditionalProperty { + @ColumnName("value") + override val `value`: kotlin.Any? + override val key: kotlin.String + public companion object { + public val keyValuePaths: kotlin.collections.List + get() = listOf(JsonPath(""${'"'}${'$'}""${'"'})) + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToObjectWithAdditional3(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional3() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional3() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional3() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths)["value"].first().let { it as DataFrame<*> } + .convertToObjectWithAdditional3() } - - public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame - .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) - .convertToSomeArrayContent() - """.trimLines() - - code should haveSubstring(someArrayContentInterface) - - @Language("kt") val someArrayContentExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent>.`value`: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.Value?> @JvmName("SomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.Value?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent>.`value`: org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Value?> @JvmName("SomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Value?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent?>.`value`: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.Value?> @JvmName("NullableSomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<$functionName.Value?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent?>.`value`: org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Value?> @JvmName("NullableSomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataRow<$functionName.Value?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("SomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional?> @JvmName("SomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableSomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional?> @JvmName("NullableSomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.ObjectWithAdditional?> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent>.op: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Op> @JvmName("SomeArrayContent_op") get() = this["op"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Op> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent>.op: $functionName.Op @JvmName("SomeArrayContent_op") get() = this["op"] as $functionName.Op - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent?>.op: org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Op?> @JvmName("NullableSomeArrayContent_op") get() = this["op"] as org.jetbrains.kotlinx.dataframe.DataColumn<$functionName.Op?> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent?>.op: $functionName.Op? @JvmName("NullableSomeArrayContent_op") get() = this["op"] as $functionName.Op? - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent>.path: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("SomeArrayContent_path") get() = this["path"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent>.path: kotlin.String @JvmName("SomeArrayContent_path") get() = this["path"] as kotlin.String - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.SomeArrayContent?>.path: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableSomeArrayContent_path") get() = this["path"] as org.jetbrains.kotlinx.dataframe.DataColumn - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.SomeArrayContent?>.path: kotlin.String? @JvmName("NullableSomeArrayContent_path") get() = this["path"] as kotlin.String? - """.trimLines() - - code should haveSubstring(someArrayContentExtensions) - - @Language("kt") val someArrayTypeAlias = """ - typealias SomeArray = org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.SomeArrayContent> - """.trimLines() - - code should haveSubstring(someArrayTypeAlias) - - @Language("kt") - val errorHolderInterface = """ - @DataSchema(isOpen = false) - interface ErrorHolder { - val errors: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.Error> - public companion object { - public val keyValuePaths: kotlin.collections.List + + } + @DataSchema(isOpen = false) + interface ErrorHolder { + val errors: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.Error> + public companion object { + public val keyValuePaths: kotlin.collections.List get() = listOf(JsonPath(""${'"'}${'$'}["errors"][*]["objectWithAdditional"]""${'"'}), JsonPath(""${'"'}${'$'}["errors"][*]["objectWithAdditionalList"][*]""${'"'}), JsonPath(""${'"'}${'$'}["errors"][*]["objectWithAdditional2"]""${'"'}), JsonPath(""${'"'}${'$'}["errors"][*]["objectWithAdditional3"]""${'"'}), JsonPath(""${'"'}${'$'}["errors"][*]["array"][*][*][*]["objectWithAdditional"]""${'"'})) - - public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToErrorHolder(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { - convertDataRowsWithOpenApi() - convertTo() + + public fun org.jetbrains.kotlinx.dataframe.DataFrame<*>.convertToErrorHolder(convertTo: org.jetbrains.kotlinx.dataframe.api.ConvertSchemaDsl.() -> kotlin.Unit = {}): org.jetbrains.kotlinx.dataframe.DataFrame = convertTo { + convertDataRowsWithOpenApi() + convertTo() + } + + public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToErrorHolder() + + public fun readJson(path: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(path, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToErrorHolder() + + public fun readJson(stream: java.io.InputStream): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJson(stream, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToErrorHolder() + + public fun readJsonStr(text: kotlin.String): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame + .readJsonStr(text, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) + .convertToErrorHolder() } - - public fun readJson(url: java.net.URL): org.jetbrains.kotlinx.dataframe.DataFrame = org.jetbrains.kotlinx.dataframe.DataFrame - .readJson(url, typeClashTactic = ANY_COLUMNS, keyValuePaths = keyValuePaths) - .convertToErrorHolder() + + } + } + typealias PetRef = `Other advanced test`.Pet + typealias AlsoCat = `Other advanced test`.Cat + typealias Integer = kotlin.Int + typealias SomeArray = org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.SomeArrayContent> + typealias SomeArrayArray = kotlin.collections.List + + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet>.`value`: kotlin.Any? @JvmName("Pet_value") get() = this["value"] as kotlin.Any? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet?>.`value`: kotlin.Any? @JvmName("NullablePet_value") get() = this["value"] as kotlin.Any? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet>.eyeColor: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.EyeColor?> @JvmName("Pet_eyeColor") get() = this["eye_color"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.EyeColor?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet>.eyeColor: `Other advanced test`.EyeColor? @JvmName("Pet_eyeColor") get() = this["eye_color"] as `Other advanced test`.EyeColor? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet?>.eyeColor: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.EyeColor?> @JvmName("NullablePet_eyeColor") get() = this["eye_color"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.EyeColor?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet?>.eyeColor: `Other advanced test`.EyeColor? @JvmName("NullablePet_eyeColor") get() = this["eye_color"] as `Other advanced test`.EyeColor? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet>.name: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_name") get() = this["name"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet>.name: kotlin.String @JvmName("Pet_name") get() = this["name"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet?>.name: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_name") get() = this["name"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet?>.name: kotlin.String? @JvmName("NullablePet_name") get() = this["name"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet>.other: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_other") get() = this["other"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet>.other: kotlin.Any? @JvmName("Pet_other") get() = this["other"] as kotlin.Any? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet?>.other: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_other") get() = this["other"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet?>.other: kotlin.Any? @JvmName("NullablePet_other") get() = this["other"] as kotlin.Any? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet>.petType: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_petType") get() = this["pet_type"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet>.petType: kotlin.String @JvmName("Pet_petType") get() = this["pet_type"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet?>.petType: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_petType") get() = this["pet_type"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet?>.petType: kotlin.String? @JvmName("NullablePet_petType") get() = this["pet_type"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Pet_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet>.tag: kotlin.String? @JvmName("Pet_tag") get() = this["tag"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Pet?>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullablePet_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Pet?>.tag: kotlin.String? @JvmName("NullablePet_tag") get() = this["tag"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Dog>.bark: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Dog_bark") get() = this["bark"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Dog>.bark: kotlin.Boolean? @JvmName("Dog_bark") get() = this["bark"] as kotlin.Boolean? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Dog?>.bark: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableDog_bark") get() = this["bark"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Dog?>.bark: kotlin.Boolean? @JvmName("NullableDog_bark") get() = this["bark"] as kotlin.Boolean? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Dog>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed> @JvmName("Dog_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Dog>.breed: `Other advanced test`.Breed @JvmName("Dog_breed") get() = this["breed"] as `Other advanced test`.Breed + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Dog?>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed?> @JvmName("NullableDog_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Dog?>.breed: `Other advanced test`.Breed? @JvmName("NullableDog_breed") get() = this["breed"] as `Other advanced test`.Breed? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Dog>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Dog_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Dog>.tag: kotlin.String @JvmName("Dog_tag") get() = this["tag"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Dog?>.tag: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableDog_tag") get() = this["tag"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Dog?>.tag: kotlin.String? @JvmName("NullableDog_tag") get() = this["tag"] as kotlin.String? + + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Cat>.age: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Cat_age") get() = this["age"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Cat>.age: kotlin.Float? @JvmName("Cat_age") get() = this["age"] as kotlin.Float? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Cat?>.age: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableCat_age") get() = this["age"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Cat?>.age: kotlin.Float? @JvmName("NullableCat_age") get() = this["age"] as kotlin.Float? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Cat>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed1?> @JvmName("Cat_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed1?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Cat>.breed: `Other advanced test`.Breed1? @JvmName("Cat_breed") get() = this["breed"] as `Other advanced test`.Breed1? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Cat?>.breed: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed1?> @JvmName("NullableCat_breed") get() = this["breed"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Breed1?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Cat?>.breed: `Other advanced test`.Breed1? @JvmName("NullableCat_breed") get() = this["breed"] as `Other advanced test`.Breed1? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Cat>.hunts: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Cat_hunts") get() = this["hunts"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Cat>.hunts: kotlin.Boolean? @JvmName("Cat_hunts") get() = this["hunts"] as kotlin.Boolean? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Cat?>.hunts: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableCat_hunts") get() = this["hunts"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Cat?>.hunts: kotlin.Boolean? @JvmName("NullableCat_hunts") get() = this["hunts"] as kotlin.Boolean? + + + + + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.IntList>.list: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("IntList_list") get() = this["list"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.IntList>.list: kotlin.collections.List @JvmName("IntList_list") get() = this["list"] as kotlin.collections.List + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.IntList?>.list: org.jetbrains.kotlinx.dataframe.DataColumn?> @JvmName("NullableIntList_list") get() = this["list"] as org.jetbrains.kotlinx.dataframe.DataColumn?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.IntList?>.list: kotlin.collections.List? @JvmName("NullableIntList_list") get() = this["list"] as kotlin.collections.List? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditionalProperties>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditionalProperties_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditionalProperties>.`value`: kotlin.String @JvmName("ObjectWithAdditionalProperties_value") get() = this["value"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditionalProperties?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditionalProperties_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditionalProperties?>.`value`: kotlin.String? @JvmName("NullableObjectWithAdditionalProperties_value") get() = this["value"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditionalProperties>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditionalProperties_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditionalProperties>.key: kotlin.String @JvmName("ObjectWithAdditionalProperties_key") get() = this["key"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditionalProperties?>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditionalProperties_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditionalProperties?>.key: kotlin.String? @JvmName("NullableObjectWithAdditionalProperties_key") get() = this["key"] as kotlin.String? + + + + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional>.`value`: kotlin.Int @JvmName("ObjectWithAdditional_value") get() = this["value"] as kotlin.Int + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional?>.`value`: kotlin.Int? @JvmName("NullableObjectWithAdditional_value") get() = this["value"] as kotlin.Int? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional>.key: kotlin.String @JvmName("ObjectWithAdditional_key") get() = this["key"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional?>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional?>.key: kotlin.String? @JvmName("NullableObjectWithAdditional_key") get() = this["key"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent>.`value`: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.Value?> @JvmName("SomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.Value?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent>.`value`: org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Value?> @JvmName("SomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Value?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent?>.`value`: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.Value?> @JvmName("NullableSomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.Value?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent?>.`value`: org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Value?> @JvmName("NullableSomeArrayContent_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Value?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("SomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional?> @JvmName("SomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableSomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional?> @JvmName("NullableSomeArrayContent_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent>.op: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Op> @JvmName("SomeArrayContent_op") get() = this["op"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Op> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent>.op: `Other advanced test`.Op @JvmName("SomeArrayContent_op") get() = this["op"] as `Other advanced test`.Op + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent?>.op: org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Op?> @JvmName("NullableSomeArrayContent_op") get() = this["op"] as org.jetbrains.kotlinx.dataframe.DataColumn<`Other advanced test`.Op?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent?>.op: `Other advanced test`.Op? @JvmName("NullableSomeArrayContent_op") get() = this["op"] as `Other advanced test`.Op? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent>.path: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("SomeArrayContent_path") get() = this["path"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent>.path: kotlin.String @JvmName("SomeArrayContent_path") get() = this["path"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.SomeArrayContent?>.path: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableSomeArrayContent_path") get() = this["path"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.SomeArrayContent?>.path: kotlin.String? @JvmName("NullableSomeArrayContent_path") get() = this["path"] as kotlin.String? + + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.array: org.jetbrains.kotlinx.dataframe.DataColumn?> @JvmName("Error_array") get() = this["array"] as org.jetbrains.kotlinx.dataframe.DataColumn?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.array: kotlin.collections.List? @JvmName("Error_array") get() = this["array"] as kotlin.collections.List? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.array: org.jetbrains.kotlinx.dataframe.DataColumn?> @JvmName("NullableError_array") get() = this["array"] as org.jetbrains.kotlinx.dataframe.DataColumn?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.array: kotlin.collections.List? @JvmName("NullableError_array") get() = this["array"] as kotlin.collections.List? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.code: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Error_code") get() = this["code"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.code: kotlin.Int @JvmName("Error_code") get() = this["code"] as kotlin.Int + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.code: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableError_code") get() = this["code"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.code: kotlin.Int? @JvmName("NullableError_code") get() = this["code"] as kotlin.Int? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.ints: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.IntList?> @JvmName("Error_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.IntList?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.ints: org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.IntList?> @JvmName("Error_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.IntList?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.ints: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.IntList?> @JvmName("NullableError_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup<`Other advanced test`.IntList?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.ints: org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.IntList?> @JvmName("NullableError_ints") get() = this["ints"] as org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.IntList?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.message: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("Error_message") get() = this["message"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.message: kotlin.String @JvmName("Error_message") get() = this["message"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.message: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableError_message") get() = this["message"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.message: kotlin.String? @JvmName("NullableError_message") get() = this["message"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditionalProperties> @JvmName("Error_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditionalProperties> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.objectWithAdditional: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditionalProperties?> @JvmName("NullableError_objectWithAdditional") get() = this["objectWithAdditional"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditionalProperties?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional2?> @JvmName("Error_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional2?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.objectWithAdditional2: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional2?> @JvmName("NullableError_objectWithAdditional2") get() = this["objectWithAdditional2"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional2?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional3> @JvmName("Error_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional3> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.objectWithAdditional3: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional3?> @JvmName("NullableError_objectWithAdditional3") get() = this["objectWithAdditional3"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.ObjectWithAdditional3?> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.objectWithAdditionalList: org.jetbrains.kotlinx.dataframe.DataColumn>?> @JvmName("Error_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as org.jetbrains.kotlinx.dataframe.DataColumn>?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.objectWithAdditionalList: kotlin.collections.List>? @JvmName("Error_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as kotlin.collections.List>? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.objectWithAdditionalList: org.jetbrains.kotlinx.dataframe.DataColumn>?> @JvmName("NullableError_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as org.jetbrains.kotlinx.dataframe.DataColumn>?> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.objectWithAdditionalList: kotlin.collections.List>? @JvmName("NullableError_objectWithAdditionalList") get() = this["objectWithAdditionalList"] as kotlin.collections.List>? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.petRef: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup @JvmName("Error_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.petRef: org.jetbrains.kotlinx.dataframe.DataRow @JvmName("Error_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.DataRow + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.petRef: org.jetbrains.kotlinx.dataframe.columns.ColumnGroup @JvmName("NullableError_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.columns.ColumnGroup + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.petRef: org.jetbrains.kotlinx.dataframe.DataRow @JvmName("NullableError_petRef") get() = this["petRef"] as org.jetbrains.kotlinx.dataframe.DataRow + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error>.pets: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("Error_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error>.pets: org.jetbrains.kotlinx.dataframe.DataFrame @JvmName("Error_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataFrame + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.Error?>.pets: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableError_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.Error?>.pets: org.jetbrains.kotlinx.dataframe.DataFrame @JvmName("NullableError_pets") get() = this["pets"] as org.jetbrains.kotlinx.dataframe.DataFrame + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional2>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional2_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional2>.`value`: kotlin.Any @JvmName("ObjectWithAdditional2_value") get() = this["value"] as kotlin.Any + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional2?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional2_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional2?>.`value`: kotlin.Any? @JvmName("NullableObjectWithAdditional2_value") get() = this["value"] as kotlin.Any? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional2>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional2_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional2>.key: kotlin.String @JvmName("ObjectWithAdditional2_key") get() = this["key"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional2?>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional2_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional2?>.key: kotlin.String? @JvmName("NullableObjectWithAdditional2_key") get() = this["key"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional3>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional3_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional3>.`value`: kotlin.Any? @JvmName("ObjectWithAdditional3_value") get() = this["value"] as kotlin.Any? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional3?>.`value`: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional3_value") get() = this["value"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional3?>.`value`: kotlin.Any? @JvmName("NullableObjectWithAdditional3_value") get() = this["value"] as kotlin.Any? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional3>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("ObjectWithAdditional3_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional3>.key: kotlin.String @JvmName("ObjectWithAdditional3_key") get() = this["key"] as kotlin.String + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ObjectWithAdditional3?>.key: org.jetbrains.kotlinx.dataframe.DataColumn @JvmName("NullableObjectWithAdditional3_key") get() = this["key"] as org.jetbrains.kotlinx.dataframe.DataColumn + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ObjectWithAdditional3?>.key: kotlin.String? @JvmName("NullableObjectWithAdditional3_key") get() = this["key"] as kotlin.String? + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ErrorHolder>.errors: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("ErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ErrorHolder>.errors: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.Error> @JvmName("ErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.Error> + val org.jetbrains.kotlinx.dataframe.ColumnsContainer<`Other advanced test`.ErrorHolder?>.errors: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataColumn> + val org.jetbrains.kotlinx.dataframe.DataRow<`Other advanced test`.ErrorHolder?>.errors: org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.Error?> @JvmName("NullableErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataFrame<`Other advanced test`.Error?> """.trimLines() - code should haveSubstring(errorHolderInterface) - - @Language("kt") - val errorHolderExtensions = """ - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ErrorHolder>.errors: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("ErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ErrorHolder>.errors: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.Error> @JvmName("ErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.Error> - val org.jetbrains.kotlinx.dataframe.ColumnsContainer<$functionName.ErrorHolder?>.errors: org.jetbrains.kotlinx.dataframe.DataColumn> @JvmName("NullableErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataColumn> - val org.jetbrains.kotlinx.dataframe.DataRow<$functionName.ErrorHolder?>.errors: org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.Error?> @JvmName("NullableErrorHolder_errors") get() = this["errors"] as org.jetbrains.kotlinx.dataframe.DataFrame<$functionName.Error?> - """.trimLines() + code shouldBe s + } - code should haveSubstring(errorHolderExtensions) + @Test + fun `Other advanced test`() { + val fullFunctionName = ValidFieldName.of(::`Other advanced test`.name) + val functionName = fullFunctionName.quotedIfNeeded + val code = execGeneratedCode(advancedExample, fullFunctionName.unquoted) + .trimLines() @Language("kt") val res1 = execRaw( diff --git a/plugins/symbol-processor/src/main/kotlin/org/jetbrains/dataframe/ksp/PropertyRenderer.kt b/plugins/symbol-processor/src/main/kotlin/org/jetbrains/dataframe/ksp/PropertyRenderer.kt index db4cdc8ae7..79b13f4159 100644 --- a/plugins/symbol-processor/src/main/kotlin/org/jetbrains/dataframe/ksp/PropertyRenderer.kt +++ b/plugins/symbol-processor/src/main/kotlin/org/jetbrains/dataframe/ksp/PropertyRenderer.kt @@ -50,10 +50,11 @@ internal fun renderExtensions( FieldType.FrameFieldType( markerName = type.renderTypeArguments(), nullable = type.isMarkedNullable, + renderAsList = true ) - type.declaration.isAnnotationPresent(DataSchema::class) -> FieldType.GroupFieldType(type.render()) - qualifiedTypeReference == DataFrameNames.DATA_ROW -> FieldType.GroupFieldType(type.renderTypeArguments()) + type.declaration.isAnnotationPresent(DataSchema::class) -> FieldType.GroupFieldType(type.render(), renderAsObject = true) + qualifiedTypeReference == DataFrameNames.DATA_ROW -> FieldType.GroupFieldType(type.renderTypeArguments(), renderAsObject = false) else -> FieldType.ValueFieldType(type.render()) }