diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/add.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/add.kt index 16033ee92a..050d8a7499 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/add.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/add.kt @@ -225,6 +225,7 @@ public class AddDsl( @AccessApiOverload public fun group(column: AnyColumnGroupAccessor, body: AddDsl.() -> Unit): Unit = group(column.name(), body) + @Interpretable("AddDslNamedGroup") public fun group(name: String, body: AddDsl.() -> Unit) { val dsl = AddDsl(df) body(dsl) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/insert.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/insert.kt index 61f3b59e68..03efde6593 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/insert.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/insert.kt @@ -83,6 +83,7 @@ public fun InsertClause.after(column: ColumnSelector): DataFrame public fun InsertClause.after(column: String): DataFrame = df.add(this.column).move(this.column).after(column) +@AccessApiOverload public fun InsertClause.after(column: ColumnAccessor<*>): DataFrame = after(column.path()) @AccessApiOverload diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/move.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/move.kt index 8e549c6ba7..5095e1c579 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/move.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/move.kt @@ -53,10 +53,13 @@ public fun DataFrame.moveTo(newColumnIndex: Int, vararg columns: KPropert // region moveToLeft +@Refine +@Interpretable("MoveToLeft1") public fun DataFrame.moveToLeft(columns: ColumnsSelector): DataFrame = move(columns).toLeft() public fun DataFrame.moveToLeft(vararg columns: String): DataFrame = moveToLeft { columns.toColumnSet() } +@AccessApiOverload public fun DataFrame.moveToLeft(vararg columns: AnyColumnReference): DataFrame = moveToLeft { columns.toColumnSet() } @@ -68,13 +71,17 @@ public fun DataFrame.moveToLeft(vararg columns: KProperty<*>): DataFrame< // region moveToRight +@Refine +@Interpretable("MoveToRight1") public fun DataFrame.moveToRight(columns: ColumnsSelector): DataFrame = move(columns).toRight() public fun DataFrame.moveToRight(vararg columns: String): DataFrame = moveToRight { columns.toColumnSet() } +@AccessApiOverload public fun DataFrame.moveToRight(vararg columns: AnyColumnReference): DataFrame = moveToRight { columns.toColumnSet() } +@AccessApiOverload public fun DataFrame.moveToRight(vararg columns: KProperty<*>): DataFrame = moveToRight { columns.toColumnSet() } @@ -94,6 +101,11 @@ public fun MoveClause.into( newPathExpression = column, ) +/** + * Move a single selected column to top level with a new name + */ +@Refine +@Interpretable("MoveInto0") public fun MoveClause.into(column: String): DataFrame = pathOf(column).let { path -> into { path } } public fun MoveClause.intoIndexed( @@ -109,11 +121,19 @@ public fun MoveClause.intoIndexed( // region under +@Refine +@Interpretable("MoveUnder0") public fun MoveClause.under(column: String): DataFrame = pathOf(column).let { path -> under { path } } +@AccessApiOverload public fun MoveClause.under(column: AnyColumnGroupAccessor): DataFrame = column.path().let { path -> under { path } } +/** + * Move selected columns under existing column group + */ +@Refine +@Interpretable("MoveUnder1") public fun MoveClause.under( column: ColumnsSelectionDsl.(ColumnWithPath) -> AnyColumnReference, ): DataFrame = @@ -138,10 +158,13 @@ public fun MoveClause.toTop( // region after +@Refine +@Interpretable("MoveAfter0") public fun MoveClause.after(column: ColumnSelector): DataFrame = afterOrBefore(column, true) public fun MoveClause.after(column: String): DataFrame = after { column.toColumnAccessor() } +@AccessApiOverload public fun MoveClause.after(column: AnyColumnReference): DataFrame = after { column } @AccessApiOverload @@ -157,8 +180,12 @@ fun MoveColsClause.before(column: String) = before { column.toColum fun MoveColsClause.before(column: ColumnSelector) = afterOrBefore(column, false) */ +@Refine +@Interpretable("MoveToLeft0") public fun MoveClause.toLeft(): DataFrame = to(0) +@Refine +@Interpretable("MoveToRight0") public fun MoveClause.toRight(): DataFrame = to(df.ncol) public class MoveClause(internal val df: DataFrame, internal val columns: ColumnsSelector) { diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt index b26eaf36a9..6c81fc73fc 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/toDataFrame.kt @@ -202,6 +202,7 @@ public abstract class CreateDataFrameDsl : TraversePropertiesDsl { public inline fun inferType(noinline expression: (T) -> R): InferType = InferType(expression) + @Interpretable("ToDataFrameDslStringInvoke") public abstract operator fun String.invoke(builder: CreateDataFrameDsl.() -> Unit) } diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataFrameTreeTests.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataFrameTreeTests.kt index adbae4bcc4..f84bdea9f9 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataFrameTreeTests.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataFrameTreeTests.kt @@ -795,4 +795,10 @@ class DataFrameTreeTests : BaseTest() { val df = typed2.convert { nameAndCity }.asFrame { it.remove { city } } df.nameAndCity.columns() shouldBe typed2.nameAndCity.remove { city }.columns() } + + @Test + fun `move under existing group`() { + val df = typed2.move { age }.under { nameAndCity } + df.nameAndCity.columnNames() shouldBe listOf("name", "city", "age") + } } diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/add.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/add.kt index 9b908edc59..19a66ee8a0 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/add.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/add.kt @@ -68,3 +68,15 @@ class AddDslStringInvoke : AbstractInterpreter() { dsl.columns.add(SimpleColumnGroup(receiver, addDsl.columns)) } } + +class AddDslNamedGroup : AbstractInterpreter() { + val Arguments.dsl: AddDslApproximation by arg() + val Arguments.name: String by arg() + val Arguments.body by dsl() + + override fun Arguments.interpret() { + val addDsl = AddDslApproximation(mutableListOf()) + body(addDsl, emptyMap()) + dsl.columns.add(SimpleColumnGroup(name, addDsl.columns)) + } +} diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/move.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/move.kt index d9c9b824e1..90c7db09dd 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/move.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/move.kt @@ -1,8 +1,13 @@ package org.jetbrains.kotlinx.dataframe.plugin.impl.api +import org.jetbrains.kotlinx.dataframe.api.after +import org.jetbrains.kotlinx.dataframe.api.into import org.jetbrains.kotlinx.dataframe.api.move -import org.jetbrains.kotlinx.dataframe.api.pathOf +import org.jetbrains.kotlinx.dataframe.api.moveToLeft +import org.jetbrains.kotlinx.dataframe.api.toLeft +import org.jetbrains.kotlinx.dataframe.api.toRight import org.jetbrains.kotlinx.dataframe.api.toTop +import org.jetbrains.kotlinx.dataframe.api.under import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractInterpreter import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractSchemaModificationInterpreter @@ -30,4 +35,74 @@ class ToTop : AbstractSchemaModificationInterpreter() { } } +class MoveUnder0 : AbstractSchemaModificationInterpreter() { + val Arguments.receiver: MoveClauseApproximation by arg() + val Arguments.column: String by arg() + + override fun Arguments.interpret(): PluginDataFrameSchema { + val columns = receiver.columns.resolve(receiver.df).map { it.path } + return receiver.df.asDataFrame().move { columns.toColumnSet() }.under(column).toPluginDataFrameSchema() + } +} + +class MoveUnder1 : AbstractSchemaModificationInterpreter() { + val Arguments.receiver: MoveClauseApproximation by arg() + val Arguments.column: SingleColumnApproximation by arg() + + override fun Arguments.interpret(): PluginDataFrameSchema { + val columns = receiver.columns.resolve(receiver.df).map { it.path } + return receiver.df.asDataFrame().move { columns.toColumnSet() }.under { column.col.path }.toPluginDataFrameSchema() + } +} + +class MoveInto0 : AbstractSchemaModificationInterpreter() { + val Arguments.receiver: MoveClauseApproximation by arg() + val Arguments.column: String by arg() + + override fun Arguments.interpret(): PluginDataFrameSchema { + val columns = receiver.columns.resolve(receiver.df).map { it.path } + return receiver.df.asDataFrame().move { columns.toColumnSet() }.into(column).toPluginDataFrameSchema() + } +} + +class MoveToLeft0 : AbstractSchemaModificationInterpreter() { + val Arguments.receiver: MoveClauseApproximation by arg() + + override fun Arguments.interpret(): PluginDataFrameSchema { + val columns = receiver.columns.resolve(receiver.df).map { it.path } + return receiver.df.asDataFrame().move { columns.toColumnSet() }.toLeft().toPluginDataFrameSchema() + } +} + +class MoveToLeft1 : AbstractSchemaModificationInterpreter() { + val Arguments.receiver: PluginDataFrameSchema by dataFrame() + val Arguments.columns: ColumnsResolver by arg() + + override fun Arguments.interpret(): PluginDataFrameSchema { + val columns = columns.resolve(receiver).map { it.path } + return receiver.asDataFrame().moveToLeft { columns.toColumnSet() }.toPluginDataFrameSchema() + } +} + + +class MoveToRight0 : AbstractSchemaModificationInterpreter() { + val Arguments.receiver: MoveClauseApproximation by arg() + + override fun Arguments.interpret(): PluginDataFrameSchema { + val columns = receiver.columns.resolve(receiver.df).map { it.path } + return receiver.df.asDataFrame().move { columns.toColumnSet() }.toRight().toPluginDataFrameSchema() + } +} + +class MoveAfter0 : AbstractSchemaModificationInterpreter() { + val Arguments.receiver: MoveClauseApproximation by arg() + val Arguments.column: SingleColumnApproximation by arg() + + override fun Arguments.interpret(): PluginDataFrameSchema { + val columns = receiver.columns.resolve(receiver.df).map { it.path } + return receiver.df.asDataFrame().move { columns.toColumnSet() }.after { column.col.path }.toPluginDataFrameSchema() + } +} + + class MoveClauseApproximation(val df: PluginDataFrameSchema, val columns: ColumnsResolver) diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/toDataFrame.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/toDataFrame.kt index 60fb38b76a..4b632b80f0 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/toDataFrame.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/toDataFrame.kt @@ -131,6 +131,18 @@ class Properties0 : AbstractInterpreter() { } } +class ToDataFrameDslStringInvoke : AbstractInterpreter() { + val Arguments.dsl: CreateDataFrameDslImplApproximation by arg() + val Arguments.receiver: String by arg() + val Arguments.builder by dsl() + + override fun Arguments.interpret() { + val addDsl = CreateDataFrameDslImplApproximation() + builder(addDsl, emptyMap()) + dsl.columns.add(SimpleColumnGroup(receiver, addDsl.columns)) + } +} + class CreateDataFrameConfiguration { var maxDepth = DEFAULT_MAX_DEPTH var traverseConfiguration: TraverseConfiguration = TraverseConfiguration() diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/loadInterpreter.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/loadInterpreter.kt index 7e583707f0..33f642992d 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/loadInterpreter.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/loadInterpreter.kt @@ -71,6 +71,7 @@ import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.StandardClassIds +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.AddDslNamedGroup import org.jetbrains.kotlinx.dataframe.plugin.impl.api.AddDslStringInvoke import org.jetbrains.kotlinx.dataframe.plugin.impl.api.AddId import org.jetbrains.kotlinx.dataframe.plugin.impl.api.Aggregate @@ -88,6 +89,13 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.api.FlattenDefault import org.jetbrains.kotlinx.dataframe.plugin.impl.api.FrameCols0 import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MapToFrame import org.jetbrains.kotlinx.dataframe.plugin.impl.api.Move0 +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MoveAfter0 +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MoveInto0 +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MoveToLeft0 +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MoveToLeft1 +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MoveToRight0 +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MoveUnder0 +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.MoveUnder1 import org.jetbrains.kotlinx.dataframe.plugin.impl.api.PairConstructor import org.jetbrains.kotlinx.dataframe.plugin.impl.api.PairToConstructor import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ReadExcel @@ -96,6 +104,7 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ToDataFrame import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ToDataFrameColumn import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ToDataFrameDefault import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ToDataFrameDsl +import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ToDataFrameDslStringInvoke import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ToDataFrameFrom import org.jetbrains.kotlinx.dataframe.plugin.impl.api.ToTop import org.jetbrains.kotlinx.dataframe.plugin.impl.api.TrimMargin @@ -235,6 +244,7 @@ internal inline fun String.load(): T { "toDataFrameDsl" -> ToDataFrameDsl() "toDataFrame" -> ToDataFrame() "toDataFrameDefault" -> ToDataFrameDefault() + "ToDataFrameDslStringInvoke" -> ToDataFrameDslStringInvoke() "DataFrameOf0" -> DataFrameOf0() "DataFrameBuilderInvoke0" -> DataFrameBuilderInvoke0() "ToDataFrameColumn" -> ToDataFrameColumn() @@ -246,6 +256,7 @@ internal inline fun String.load(): T { "FlattenDefault" -> FlattenDefault() "AddId" -> AddId() "AddDslStringInvoke" -> AddDslStringInvoke() + "AddDslNamedGroup" -> AddDslNamedGroup() "MapToFrame" -> MapToFrame() "Move0" -> Move0() "ToTop" -> ToTop() @@ -255,6 +266,13 @@ internal inline fun String.load(): T { "ValueCounts" -> ValueCounts() "RenameToCamelCase" -> RenameToCamelCase() "RenameToCamelCaseClause" -> RenameToCamelCaseClause() + "MoveUnder0" -> MoveUnder0() + "MoveUnder1" -> MoveUnder1() + "MoveInto0" -> MoveInto0() + "MoveToLeft0" -> MoveToLeft0() + "MoveToLeft1" -> MoveToLeft1() + "MoveToRight0" -> MoveToRight0() + "MoveAfter0" -> MoveAfter0() else -> error("$this") } as T } diff --git a/plugins/kotlin-dataframe/testData/box/addDsl.kt b/plugins/kotlin-dataframe/testData/box/addDsl.kt index 2cc4cb84f8..0b91151b53 100644 --- a/plugins/kotlin-dataframe/testData/box/addDsl.kt +++ b/plugins/kotlin-dataframe/testData/box/addDsl.kt @@ -9,8 +9,12 @@ fun box(): String { "group" { "a" from { it } } + group("group1") { + "b" from { it } + } } df.group.a + df.group1.b return "OK" } diff --git a/plugins/kotlin-dataframe/testData/box/moveAfter.fir.txt b/plugins/kotlin-dataframe/testData/box/moveAfter.fir.txt new file mode 100644 index 0000000000..55361cd60d --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveAfter.fir.txt @@ -0,0 +1,107 @@ +FILE: moveAfter.kt + public final fun box(): R|kotlin/String| { + lval df: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_66>| = R|org/jetbrains/kotlinx/dataframe/api/dataFrameOf|(vararg(String(a), String(b), String(c))).R|kotlin/let|/Invoke_64>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_64>| { + local abstract class Invoke_64I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(2)) public abstract val c: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val b: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val a: R|kotlin/Int| + public get(): R|kotlin/Int| + + public constructor(): R|/Invoke_64I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_64I>|.c: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_64I>|.c: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_64I>|.b: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_64I>|.b: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_64I>|.a: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_64I>|.a: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_64 : R|/Invoke_64I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_64| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder.invoke|(vararg(Int(1), Int(2), Int(3))) + } + ).R|org/jetbrains/kotlinx/dataframe/api/move|/Invoke_64|, R|kotlin/Int|>( = move@fun R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_64>|.(it: R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_64>|): R|org/jetbrains/kotlinx/dataframe/columns/ColumnsResolver| { + ^ (this@R|/box|, this@R|special/anonymous|).R|/Scope0.a| + } + ).R|kotlin/let|/Invoke_64, kotlin/Int>|, R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_66>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/api/MoveClause</Invoke_64, kotlin/Int>|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_66>| { + local abstract class Invoke_66I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(2)) public abstract val c: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val b: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val a: R|kotlin/Int| + public get(): R|kotlin/Int| + + public constructor(): R|/Invoke_66I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_66I>|.c: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_66I>|.c: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_66I>|.b: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_66I>|.b: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_66I>|.a: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_66I>|.a: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_66 : R|/Invoke_66I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_66| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/after|/Invoke_64|, R|kotlin/Int|>( = after@fun R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_64>|.(it: R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_64>|): R|org/jetbrains/kotlinx/dataframe/columns/SingleColumn<*>| { + ^ (this@R|/box|, this@R|special/anonymous|).R|/Scope0.b| + } + ) + } + ) + ^box String(OK) + } diff --git a/plugins/kotlin-dataframe/testData/box/moveAfter.kt b/plugins/kotlin-dataframe/testData/box/moveAfter.kt new file mode 100644 index 0000000000..9b5df0e106 --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveAfter.kt @@ -0,0 +1,10 @@ +// FIR_DUMP +import org.jetbrains.kotlinx.dataframe.* +import org.jetbrains.kotlinx.dataframe.annotations.* +import org.jetbrains.kotlinx.dataframe.api.* +import org.jetbrains.kotlinx.dataframe.io.* + +fun box(): String { + val df = dataFrameOf("a", "b", "c")(1, 2, 3).move { a }.after { b } + return "OK" +} diff --git a/plugins/kotlin-dataframe/testData/box/moveInto.kt b/plugins/kotlin-dataframe/testData/box/moveInto.kt new file mode 100644 index 0000000000..2d6e9f4219 --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveInto.kt @@ -0,0 +1,13 @@ +import org.jetbrains.kotlinx.dataframe.* +import org.jetbrains.kotlinx.dataframe.annotations.* +import org.jetbrains.kotlinx.dataframe.api.* +import org.jetbrains.kotlinx.dataframe.io.* + +fun box(): String { + val df = dataFrameOf("a", "b", "c")(1, 2, 3) + .group { a and b }.into("d") + .move { d.a }.into("renamedA") + df.renamedA + df.compareSchemas(strict = true) + return "OK" +} diff --git a/plugins/kotlin-dataframe/testData/box/moveToLeft.fir.txt b/plugins/kotlin-dataframe/testData/box/moveToLeft.fir.txt new file mode 100644 index 0000000000..cf3b43a6b7 --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveToLeft.fir.txt @@ -0,0 +1,234 @@ +FILE: moveToLeft.kt + public final fun box(): R|kotlin/String| { + lval df: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_83>| = R|org/jetbrains/kotlinx/dataframe/api/dataFrameOf|(vararg(String(s))).R|kotlin/let|/Invoke_56>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>| { + local abstract class Invoke_56I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_56I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_56I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_56I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_56 : R|/Invoke_56I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_56| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder.invoke|(vararg(String(str))) + } + ).R|kotlin/let|/Invoke_56>|, R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_68>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_68>| { + local abstract class Invoke_68I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val l: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_68I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_68I>|.l: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_68I>|.l: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_68I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_68I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_68 : R|/Invoke_68I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_68| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/add|/Invoke_56|>(String(l), = add@fun R|org/jetbrains/kotlinx/dataframe/api/AddDataRow</Invoke_56>|.(it: R|org/jetbrains/kotlinx/dataframe/api/AddDataRow</Invoke_56>|): R|kotlin/Int| { + ^ (this@R|/box|, this@R|special/anonymous|).R|/Scope0.s|.R|kotlin/String.length| + } + ) + } + ).R|org/jetbrains/kotlinx/dataframe/api/move|/Invoke_68|, R|kotlin/Int|>( = move@fun R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_68>|.(it: R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_68>|): R|org/jetbrains/kotlinx/dataframe/columns/ColumnsResolver| { + ^ (this@R|/box|, this@R|special/anonymous|).R|/Scope0.l| + } + ).R|kotlin/let|/Invoke_68, kotlin/Int>|, R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_83>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/api/MoveClause</Invoke_68, kotlin/Int>|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_83>| { + local abstract class Invoke_83I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val l: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_83I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_83I>|.l: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_83I>|.l: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_83I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_83I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_83 : R|/Invoke_83I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_83| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/toLeft|/Invoke_68|, R|kotlin/Int|>() + } + ) + lval df1: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_97>| = R|org/jetbrains/kotlinx/dataframe/api/dataFrameOf|(vararg(String(s))).R|kotlin/let|/Invoke_56>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>| { + local abstract class Invoke_56I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_56I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_56I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_56I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_56 : R|/Invoke_56I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_56| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder.invoke|(vararg(String(str))) + } + ).R|kotlin/let|/Invoke_56>|, R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_68>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_68>| { + local abstract class Invoke_68I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val l: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_68I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_68I>|.l: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_68I>|.l: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_68I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_68I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_68 : R|/Invoke_68I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_68| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/add|/Invoke_56|>(String(l), = add@fun R|org/jetbrains/kotlinx/dataframe/api/AddDataRow</Invoke_56>|.(it: R|org/jetbrains/kotlinx/dataframe/api/AddDataRow</Invoke_56>|): R|kotlin/Int| { + ^ (this@R|/box|, this@R|special/anonymous|).R|/Scope0.s|.R|kotlin/String.length| + } + ) + } + ).R|kotlin/let|/Invoke_68>|, R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_97>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_68>|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_97>| { + local abstract class Invoke_97I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val l: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_97I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_97I>|.l: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_97I>|.l: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_97I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_97I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_97 : R|/Invoke_97I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_97| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/moveToLeft|/Invoke_68|>( = moveToLeft@fun R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_68>|.(it: R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_68>|): R|org/jetbrains/kotlinx/dataframe/columns/ColumnsResolver<*>| { + ^ (this@R|/box|, this@R|special/anonymous|).R|/Scope0.l| + } + ) + } + ) + ^box String(OK) + } diff --git a/plugins/kotlin-dataframe/testData/box/moveToLeft.kt b/plugins/kotlin-dataframe/testData/box/moveToLeft.kt new file mode 100644 index 0000000000..066a51e95e --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveToLeft.kt @@ -0,0 +1,11 @@ +// FIR_DUMP +import org.jetbrains.kotlinx.dataframe.* +import org.jetbrains.kotlinx.dataframe.annotations.* +import org.jetbrains.kotlinx.dataframe.api.* +import org.jetbrains.kotlinx.dataframe.io.* + +fun box(): String { + val df = dataFrameOf("s")("str").add("l") { s.length }.move { l }.toLeft() + val df1 = dataFrameOf("s")("str").add("l") { s.length }.moveToLeft { l } + return "OK" +} diff --git a/plugins/kotlin-dataframe/testData/box/moveToRight.fir.txt b/plugins/kotlin-dataframe/testData/box/moveToRight.fir.txt new file mode 100644 index 0000000000..83dfcc3897 --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveToRight.fir.txt @@ -0,0 +1,116 @@ +FILE: moveToRight.kt + public final fun box(): R|kotlin/String| { + lval df: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>| = R|org/jetbrains/kotlinx/dataframe/api/dataFrameOf|(vararg(String(s))).R|kotlin/let|/Invoke_56>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>| { + local abstract class Invoke_56I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_56I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_56I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_56I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_56 : R|/Invoke_56I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_56| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder.invoke|(vararg(String(str))) + } + ).R|kotlin/let|/Invoke_56>|, R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_69>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_69>| { + local abstract class Invoke_69I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val id: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_69I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_69I>|.id: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_69I>|.id: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_69I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_69I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_69 : R|/Invoke_69I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_69| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/addId|/Invoke_56|>() + } + ).R|org/jetbrains/kotlinx/dataframe/api/move|/Invoke_69|, R|kotlin/Int|>( = move@fun R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_69>|.(it: R|org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl</Invoke_69>|): R|org/jetbrains/kotlinx/dataframe/columns/ColumnsResolver| { + ^ (this@R|/box|, this@R|special/anonymous|).R|/Scope0.id| + } + ).R|kotlin/let|/Invoke_69, kotlin/Int>|, R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>|>( = fun (it: R|org/jetbrains/kotlinx/dataframe/api/MoveClause</Invoke_69, kotlin/Int>|): R|org/jetbrains/kotlinx/dataframe/DataFrame</Invoke_56>| { + local abstract class Invoke_56I : R|kotlin/Any| { + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(1)) public abstract val id: R|kotlin/Int| + public get(): R|kotlin/Int| + + @R|org/jetbrains/kotlinx/dataframe/annotations/Order|(order = Int(0)) public abstract val s: R|kotlin/String| + public get(): R|kotlin/String| + + public constructor(): R|/Invoke_56I| + + } + + local final class Scope0 : R|kotlin/Any| { + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_56I>|.id: R|kotlin/Int| + public get(): R|kotlin/Int| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_56I>|.id: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public final val R|org/jetbrains/kotlinx/dataframe/DataRow</Invoke_56I>|.s: R|kotlin/String| + public get(): R|kotlin/String| + + public final val R|org/jetbrains/kotlinx/dataframe/ColumnsScope</Invoke_56I>|.s: R|org/jetbrains/kotlinx/dataframe/DataColumn| + public get(): R|org/jetbrains/kotlinx/dataframe/DataColumn| + + public constructor(): R|/Scope0| + + } + + local abstract class Invoke_56 : R|/Invoke_56I| { + @R|org/jetbrains/kotlinx/dataframe/annotations/ScopeProperty|() public abstract val scope0: R|/Scope0| + public get(): R|/Scope0| + + public constructor(): R|/Invoke_56| + + } + + ^ R|/it|.R|org/jetbrains/kotlinx/dataframe/api/toRight|/Invoke_69|, R|kotlin/Int|>() + } + ) + ^box String(OK) + } diff --git a/plugins/kotlin-dataframe/testData/box/moveToRight.kt b/plugins/kotlin-dataframe/testData/box/moveToRight.kt new file mode 100644 index 0000000000..444125a085 --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveToRight.kt @@ -0,0 +1,10 @@ +// FIR_DUMP +import org.jetbrains.kotlinx.dataframe.* +import org.jetbrains.kotlinx.dataframe.annotations.* +import org.jetbrains.kotlinx.dataframe.api.* +import org.jetbrains.kotlinx.dataframe.io.* + +fun box(): String { + val df = dataFrameOf("s")("str").addId().move { id }.toRight() + return "OK" +} diff --git a/plugins/kotlin-dataframe/testData/box/moveUnder.kt b/plugins/kotlin-dataframe/testData/box/moveUnder.kt new file mode 100644 index 0000000000..8d4f0a9d3a --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/moveUnder.kt @@ -0,0 +1,17 @@ +import org.jetbrains.kotlinx.dataframe.* +import org.jetbrains.kotlinx.dataframe.annotations.* +import org.jetbrains.kotlinx.dataframe.api.* +import org.jetbrains.kotlinx.dataframe.io.* + +fun box(): String { + val df = dataFrameOf("a", "b", "c")(1, 2, 3) + .group { a and b }.into("d") + .move { c }.under { d } + df.compareSchemas(strict = true) + + // alias for group into + dataFrameOf("a", "b", "c")(1, 2, 3) + .move { a and b }.under("d") + .compareSchemas(strict = true) + return "OK" +} diff --git a/plugins/kotlin-dataframe/testData/box/toDataFrame_nested.kt b/plugins/kotlin-dataframe/testData/box/toDataFrame_nested.kt new file mode 100644 index 0000000000..34409a1699 --- /dev/null +++ b/plugins/kotlin-dataframe/testData/box/toDataFrame_nested.kt @@ -0,0 +1,19 @@ +import org.jetbrains.kotlinx.dataframe.* +import org.jetbrains.kotlinx.dataframe.annotations.* +import org.jetbrains.kotlinx.dataframe.api.* +import org.jetbrains.kotlinx.dataframe.io.* + +fun box(): String { + val df = listOf("a").toDataFrame { + "group" { + "anotherGroup" { + "a" from { 1 } + } + "b" from { "c" } + } + } + + df.group.b + df.group.anotherGroup.a + return "OK" +} diff --git a/plugins/kotlin-dataframe/tests-gen/org/jetbrains/kotlin/fir/dataframe/DataFrameBlackBoxCodegenTestGenerated.java b/plugins/kotlin-dataframe/tests-gen/org/jetbrains/kotlin/fir/dataframe/DataFrameBlackBoxCodegenTestGenerated.java index ef62a062cf..d736fc4081 100644 --- a/plugins/kotlin-dataframe/tests-gen/org/jetbrains/kotlin/fir/dataframe/DataFrameBlackBoxCodegenTestGenerated.java +++ b/plugins/kotlin-dataframe/tests-gen/org/jetbrains/kotlin/fir/dataframe/DataFrameBlackBoxCodegenTestGenerated.java @@ -286,12 +286,42 @@ public void testMapToFrame() { runTest("testData/box/mapToFrame.kt"); } + @Test + @TestMetadata("moveAfter.kt") + public void testMoveAfter() { + runTest("testData/box/moveAfter.kt"); + } + + @Test + @TestMetadata("moveInto.kt") + public void testMoveInto() { + runTest("testData/box/moveInto.kt"); + } + + @Test + @TestMetadata("moveToLeft.kt") + public void testMoveToLeft() { + runTest("testData/box/moveToLeft.kt"); + } + + @Test + @TestMetadata("moveToRight.kt") + public void testMoveToRight() { + runTest("testData/box/moveToRight.kt"); + } + @Test @TestMetadata("moveToTop.kt") public void testMoveToTop() { runTest("testData/box/moveToTop.kt"); } + @Test + @TestMetadata("moveUnder.kt") + public void testMoveUnder() { + runTest("testData/box/moveUnder.kt"); + } + @Test @TestMetadata("nestedDataSchemaCodegen.kt") public void testNestedDataSchemaCodegen() { @@ -478,6 +508,12 @@ public void testToDataFrame_from() { runTest("testData/box/toDataFrame_from.kt"); } + @Test + @TestMetadata("toDataFrame_nested.kt") + public void testToDataFrame_nested() { + runTest("testData/box/toDataFrame_nested.kt"); + } + @Test @TestMetadata("toDataFrame_nullableList.kt") public void testToDataFrame_nullableList() {