From 4879cc384df3adb6aaa96c919b26ea09cf754a1c Mon Sep 17 00:00:00 2001 From: Nikita Klimenko Date: Mon, 17 Jun 2024 13:30:24 +0300 Subject: [PATCH 1/3] [Compiler plugin] Hide errors for references that are available from friend module --- .../kotlinx/dataframe/plugin/impl/SimpleCol.kt | 2 ++ .../kotlinx/dataframe/plugin/impl/api/insert.kt | 12 +++++++----- .../kotlinx/dataframe/plugin/impl/api/join.kt | 2 ++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/SimpleCol.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/SimpleCol.kt index f3acad1e9a..532cff5799 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/SimpleCol.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/SimpleCol.kt @@ -1,3 +1,5 @@ +@file:Suppress("INVISIBLE_REFERENCE", "CANNOT_OVERRIDE_INVISIBLE_MEMBER") + package org.jetbrains.kotlinx.dataframe.plugin.impl import org.jetbrains.kotlin.fir.types.ConeKotlinType diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt index 2d0c0f1366..aa10bd4fbe 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt @@ -1,3 +1,5 @@ +@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") + package org.jetbrains.kotlinx.dataframe.plugin.impl.api import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractInterpreter @@ -81,7 +83,7 @@ internal class Under0 : AbstractInterpreter() { val Arguments.receiver: InsertClauseApproximation by insertClause() override fun Arguments.interpret(): PluginDataFrameSchema { - return receiver.df.insertImpl(listOf(GenericColumnsToInsert(column.path.path.toPath(), receiver.column)), anyDataFrame) + return receiver.df.insertImpl(listOf(GenericColumnsToInsert(column.path.path.toPath(), receiver.column))) } } @@ -90,7 +92,7 @@ internal class Under1 : AbstractInterpreter() { val Arguments.receiver: InsertClauseApproximation by insertClause() override fun Arguments.interpret(): PluginDataFrameSchema { - return receiver.df.insertImpl(listOf(GenericColumnsToInsert(columnPath.path.toPath(), receiver.column)), anyRow) + return receiver.df.insertImpl(listOf(GenericColumnsToInsert(columnPath.path.toPath(), receiver.column))) } } @@ -99,7 +101,7 @@ internal class Under2 : AbstractInterpreter() { val Arguments.receiver: InsertClauseApproximation by insertClause() override fun Arguments.interpret(): PluginDataFrameSchema { - return receiver.df.insertImpl(listOf(GenericColumnsToInsert(pathOf(column.name), receiver.column)), anyRow) + return receiver.df.insertImpl(listOf(GenericColumnsToInsert(pathOf(column.name), receiver.column))) } } @@ -108,7 +110,7 @@ internal class Under3 : AbstractInterpreter() { val Arguments.receiver: InsertClauseApproximation by insertClause() override fun Arguments.interpret(): PluginDataFrameSchema { - return receiver.df.insertImpl(listOf(GenericColumnsToInsert(pathOf(column.name), receiver.column)), anyRow) + return receiver.df.insertImpl(listOf(GenericColumnsToInsert(pathOf(column.name), receiver.column))) } } @@ -117,7 +119,7 @@ internal class Under4 : AbstractInterpreter() { val Arguments.receiver: InsertClauseApproximation by insertClause() override fun Arguments.interpret(): PluginDataFrameSchema { - return receiver.df.insertImpl(listOf(GenericColumnsToInsert(pathOf(column), receiver.column)), anyRow) + return receiver.df.insertImpl(listOf(GenericColumnsToInsert(pathOf(column), receiver.column))) } } diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/join.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/join.kt index 16f3cbf210..b55e9435ee 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/join.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/join.kt @@ -1,3 +1,5 @@ +@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") + package org.jetbrains.kotlinx.dataframe.plugin.impl.api import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractInterpreter From 0719aea4c306546d6e21a4b8ab69a504401ecf47 Mon Sep 17 00:00:00 2001 From: Nikita Klimenko Date: Mon, 17 Jun 2024 13:34:17 +0300 Subject: [PATCH 2/3] [Compiler plugin] fix "'it' is shadowed" --- .../kotlinx/dataframe/plugin/analyzeRefinedCallShape.kt | 6 +++--- .../dataframe/plugin/impl/data/toPluginDataFrameSchema.kt | 4 ---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/analyzeRefinedCallShape.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/analyzeRefinedCallShape.kt index 8bf735f887..69043a7fc3 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/analyzeRefinedCallShape.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/analyzeRefinedCallShape.kt @@ -36,8 +36,8 @@ fun KotlinTypeFacade.analyzeRefinedCallShape(call: FirFunctionCall, reporter: In return null } - val newSchema: PluginDataFrameSchema = call.interpreterName(session)?.let { - when (it) { + val newSchema: PluginDataFrameSchema = call.interpreterName(session)?.let { name -> + when (name) { "toDataFrameDsl" -> { val list = call.argumentList as FirResolvedArgumentList val lambda = (list.arguments.singleOrNull() as? FirAnonymousFunctionExpression)?.anonymousFunction @@ -85,7 +85,7 @@ fun KotlinTypeFacade.analyzeRefinedCallShape(call: FirFunctionCall, reporter: In PluginDataFrameSchema(emptyList()) } } - else -> it.load>().let { processor -> + else -> name.load>().let { processor -> val dataFrameSchema = interpret(call, processor, reporter = reporter) .let { val value = it?.value diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/data/toPluginDataFrameSchema.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/data/toPluginDataFrameSchema.kt index 4b30b9baa1..091e581079 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/data/toPluginDataFrameSchema.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/data/toPluginDataFrameSchema.kt @@ -53,8 +53,6 @@ val KotlinTypeFacade.toPluginDataFrameSchema: DataFrameSchema.() -> PluginDataFr ) } - - val KotlinTypeFacade.deserializeToPluginDataFrameSchema: SerializableSchema.() -> PluginDataFrameSchema get() = { PluginDataFrameSchema( @@ -155,7 +153,6 @@ private fun from(type: KType): SerializableKType { return serializableKType } - private fun List.mapToConeTypeProjection(): List = List(size) { val typeProjection = get(it) val type = typeProjection.type @@ -189,7 +186,6 @@ private fun List.mapToConeTypeProjection(): Array ?: error("") From 91fa0755efa8bd44003488430dd63d13d5d1ebba Mon Sep 17 00:00:00 2001 From: Nikita Klimenko Date: Mon, 17 Jun 2024 13:35:08 +0300 Subject: [PATCH 3/3] [Compiler plugin] anyRow and anyFrame were used in SimpleCol and are no longer needed --- .../dataframe/plugin/extensions/KotlinTypeFacade.kt | 12 ------------ .../kotlinx/dataframe/plugin/impl/api/insert.kt | 6 ++---- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/KotlinTypeFacade.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/KotlinTypeFacade.kt index ed19ed9225..d5c1250e99 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/KotlinTypeFacade.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/extensions/KotlinTypeFacade.kt @@ -35,18 +35,6 @@ interface KotlinTypeFacade { fun Marker.type() = type - val anyDataFrame get() = ConeClassLikeTypeImpl( - ConeClassLikeLookupTagImpl(Names.DF_CLASS_ID), - typeArguments = arrayOf(session.builtinTypes.anyType.type), - isNullable = false - ).wrap() - - val anyRow get() = ConeClassLikeTypeImpl( - ConeClassLikeLookupTagImpl(Names.DATA_ROW_CLASS_ID), - typeArguments = arrayOf(session.builtinTypes.anyType.type), - isNullable = false - ).wrap() - fun from(type: KType): Marker { return Marker(fromImpl(type)) } diff --git a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt index aa10bd4fbe..84f4c6cb90 100644 --- a/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt +++ b/plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlinx.dataframe.api.Infer import org.jetbrains.kotlinx.dataframe.api.pathOf import org.jetbrains.kotlinx.dataframe.api.toPath import org.jetbrains.kotlinx.dataframe.impl.api.GenericColumnsToInsert -import org.jetbrains.kotlinx.dataframe.impl.api.GenericColumnGroup import org.jetbrains.kotlinx.dataframe.impl.api.insertImplGenericContainer import org.jetbrains.kotlinx.dataframe.plugin.impl.PluginDataFrameSchema import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleCol @@ -125,10 +124,9 @@ internal class Under4 : AbstractInterpreter() { @PublishedApi internal fun PluginDataFrameSchema.insertImpl( - columns: List>, - columnGroupType: TypeApproximation + columns: List> ): PluginDataFrameSchema { - return insertImplGenericContainer>( + return insertImplGenericContainer( this, columns, columns.firstOrNull()?.referenceNode?.getRoot(),