Skip to content

Commit 0485832

Browse files
committed
rework plugin contract
1 parent ed8e69c commit 0485832

File tree

9 files changed

+93
-50
lines changed

9 files changed

+93
-50
lines changed

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallback.kt renamed to core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,20 @@ import java.io.File
3535

3636
annotation class TransformDataFrameExpressions
3737

38-
object PluginCallback {
38+
fun interface PluginCallback {
39+
fun doAction(
40+
source: String,
41+
name: String,
42+
df: Any,
43+
id: String,
44+
receiverId: String?,
45+
containingClassFqName: String?,
46+
containingFunName: String?,
47+
statementIndex: Int
48+
)
49+
}
50+
51+
object PluginCallbackProxy : PluginCallback {
3952
val names = mutableMapOf<String, List<String>>()
4053
val expressionsByStatement = mutableMapOf<Int, List<Expression>>()
4154

@@ -169,17 +182,15 @@ object PluginCallback {
169182
return data
170183
}
171184

172-
var action: (String, String, Any, String, String?, String?, String?, Int) -> Unit =
173-
{ source, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex ->
174-
expressionsByStatement.compute(statementIndex) { _, list ->
175-
val element = Expression(source, containingClassFqName, containingFunName, df)
176-
list?.plus(element) ?: listOf(element)
177-
}
185+
var action: PluginCallback = PluginCallback { source, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex ->
186+
expressionsByStatement.compute(statementIndex) { _, list ->
187+
val element = Expression(source, containingClassFqName, containingFunName, df)
188+
list?.plus(element) ?: listOf(element)
178189
}
190+
}
179191

180-
@Suppress("unused")
181-
fun doAction(
182-
string: String,
192+
override fun doAction(
193+
source: String,
183194
name: String,
184195
df: Any,
185196
id: String,
@@ -188,7 +199,7 @@ object PluginCallback {
188199
containingFunName: String?,
189200
statementIndex: Int
190201
) {
191-
action(string, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex)
202+
action.doAction(source, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex)
192203
}
193204
}
194205

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/Modify.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ import org.jetbrains.kotlinx.dataframe.api.with
9898
import org.jetbrains.kotlinx.dataframe.api.withNull
9999
import org.jetbrains.kotlinx.dataframe.api.withValue
100100
import org.jetbrains.kotlinx.dataframe.api.withZero
101-
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallback
101+
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallbackProxy
102102
import org.jetbrains.kotlinx.dataframe.explainer.TransformDataFrameExpressions
103103
import org.jetbrains.kotlinx.dataframe.impl.api.mapNotNullValues
104104
import org.jetbrains.kotlinx.dataframe.indices
@@ -259,14 +259,14 @@ class Modify : TestBase() {
259259
df.shuffle()
260260
// SampleEnd
261261

262-
PluginCallback.expressionsByStatement[0] = listOf(
263-
PluginCallback.Expression(
262+
PluginCallbackProxy.expressionsByStatement[0] = listOf(
263+
PluginCallbackProxy.Expression(
264264
source = "df",
265265
containingClassFqName = "org.jetbrains.kotlinx.dataframe.samples.api.Modify",
266266
containingFunName = "shuffle",
267267
df = df
268268
),
269-
PluginCallback.Expression(
269+
PluginCallbackProxy.Expression(
270270
source = "shuffle()",
271271
containingClassFqName = "org.jetbrains.kotlinx.dataframe.samples.api.Modify",
272272
containingFunName = "shuffle",

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/TestBase.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.jetbrains.kotlinx.dataframe.api.cast
77
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
88
import org.jetbrains.kotlinx.dataframe.api.group
99
import org.jetbrains.kotlinx.dataframe.api.into
10-
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallback
10+
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallbackProxy
1111
import org.junit.After
1212
import org.junit.Before
1313

@@ -20,14 +20,14 @@ public open class TestBase {
2020
@Before
2121
fun start() {
2222
if (System.getenv(OUTPUTS) != null) {
23-
PluginCallback.start()
23+
PluginCallbackProxy.start()
2424
}
2525
}
2626

2727
@After
2828
fun save() {
2929
if (System.getenv(OUTPUTS) != null) {
30-
PluginCallback.save()
30+
PluginCallbackProxy.save()
3131
}
3232
}
3333

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallback.kt renamed to core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,20 @@ import java.io.File
3535

3636
annotation class TransformDataFrameExpressions
3737

38-
object PluginCallback {
38+
fun interface PluginCallback {
39+
fun doAction(
40+
source: String,
41+
name: String,
42+
df: Any,
43+
id: String,
44+
receiverId: String?,
45+
containingClassFqName: String?,
46+
containingFunName: String?,
47+
statementIndex: Int
48+
)
49+
}
50+
51+
object PluginCallbackProxy : PluginCallback {
3952
val names = mutableMapOf<String, List<String>>()
4053
val expressionsByStatement = mutableMapOf<Int, List<Expression>>()
4154

@@ -169,17 +182,15 @@ object PluginCallback {
169182
return data
170183
}
171184

172-
var action: (String, String, Any, String, String?, String?, String?, Int) -> Unit =
173-
{ source, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex ->
174-
expressionsByStatement.compute(statementIndex) { _, list ->
175-
val element = Expression(source, containingClassFqName, containingFunName, df)
176-
list?.plus(element) ?: listOf(element)
177-
}
185+
var action: PluginCallback = PluginCallback { source, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex ->
186+
expressionsByStatement.compute(statementIndex) { _, list ->
187+
val element = Expression(source, containingClassFqName, containingFunName, df)
188+
list?.plus(element) ?: listOf(element)
178189
}
190+
}
179191

180-
@Suppress("unused")
181-
fun doAction(
182-
string: String,
192+
override fun doAction(
193+
source: String,
183194
name: String,
184195
df: Any,
185196
id: String,
@@ -188,7 +199,7 @@ object PluginCallback {
188199
containingFunName: String?,
189200
statementIndex: Int
190201
) {
191-
action(string, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex)
202+
action.doAction(source, name, df, id, receiverId, containingClassFqName, containingFunName, statementIndex)
192203
}
193204
}
194205

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/Modify.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ import org.jetbrains.kotlinx.dataframe.api.with
9898
import org.jetbrains.kotlinx.dataframe.api.withNull
9999
import org.jetbrains.kotlinx.dataframe.api.withValue
100100
import org.jetbrains.kotlinx.dataframe.api.withZero
101-
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallback
101+
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallbackProxy
102102
import org.jetbrains.kotlinx.dataframe.explainer.TransformDataFrameExpressions
103103
import org.jetbrains.kotlinx.dataframe.impl.api.mapNotNullValues
104104
import org.jetbrains.kotlinx.dataframe.indices
@@ -259,14 +259,14 @@ class Modify : TestBase() {
259259
df.shuffle()
260260
// SampleEnd
261261

262-
PluginCallback.expressionsByStatement[0] = listOf(
263-
PluginCallback.Expression(
262+
PluginCallbackProxy.expressionsByStatement[0] = listOf(
263+
PluginCallbackProxy.Expression(
264264
source = "df",
265265
containingClassFqName = "org.jetbrains.kotlinx.dataframe.samples.api.Modify",
266266
containingFunName = "shuffle",
267267
df = df
268268
),
269-
PluginCallback.Expression(
269+
PluginCallbackProxy.Expression(
270270
source = "shuffle()",
271271
containingClassFqName = "org.jetbrains.kotlinx.dataframe.samples.api.Modify",
272272
containingFunName = "shuffle",

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/TestBase.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.jetbrains.kotlinx.dataframe.api.cast
77
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
88
import org.jetbrains.kotlinx.dataframe.api.group
99
import org.jetbrains.kotlinx.dataframe.api.into
10-
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallback
10+
import org.jetbrains.kotlinx.dataframe.explainer.PluginCallbackProxy
1111
import org.junit.After
1212
import org.junit.Before
1313

@@ -20,14 +20,14 @@ public open class TestBase {
2020
@Before
2121
fun start() {
2222
if (System.getenv(OUTPUTS) != null) {
23-
PluginCallback.start()
23+
PluginCallbackProxy.start()
2424
}
2525
}
2626

2727
@After
2828
fun save() {
2929
if (System.getenv(OUTPUTS) != null) {
30-
PluginCallback.save()
30+
PluginCallbackProxy.save()
3131
}
3232
}
3333

plugins/expressions-converter/src/org/jetbrains/kotlinx/dataframe/ExplainerIrTransformer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ class ExplainerIrTransformer(
223223
add(IrConstImpl.int(-1, -1, pluginContext.irBuiltIns.intType, data.statementIndex))
224224
}
225225
body = pluginContext.irFactory.createBlockBody(-1, -1) {
226-
val callback = FqName("org.jetbrains.kotlinx.dataframe.explainer.PluginCallback.doAction")
226+
val callback = FqName("org.jetbrains.kotlinx.dataframe.explainer.PluginCallbackProxy.doAction")
227227
val doAction = pluginContext.referenceFunctions(callback).single()
228228
statements += IrCallImpl(
229229
startOffset = -1,
@@ -233,7 +233,7 @@ class ExplainerIrTransformer(
233233
typeArgumentsCount = 0,
234234
valueArgumentsCount = valueArguments.size
235235
).apply {
236-
val clazz = FqName("org.jetbrains.kotlinx.dataframe.explainer.PluginCallback")
236+
val clazz = FqName("org.jetbrains.kotlinx.dataframe.explainer.PluginCallbackProxy")
237237
val plugin = pluginContext.referenceClass(clazz)!!
238238
dispatchReceiver = IrGetObjectValueImpl(-1, -1, plugin.defaultType, plugin)
239239
valueArguments.forEachIndexed { i, argument ->

plugins/expressions-converter/testData/box/df.kt

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,27 +71,41 @@ fun move() {
7171
df.move("age", "weight").into { pathOf("info", it.name()) }
7272
}
7373

74-
object PluginCallback {
75-
var action: (String, String, Any, String, String?, String? String?, Int) -> Unit = { _, _, _, _, _, _, _, _ -> Unit }
74+
fun interface PluginCallback {
75+
fun doAction(
76+
source: String,
77+
name: String,
78+
df: Any,
79+
id: String,
80+
receiverId: String?,
81+
containingClassFqName: String?,
82+
containingFunName: String?,
83+
statementIndex: Int
84+
)
85+
}
86+
87+
object PluginCallbackProxy : PluginCallback {
88+
89+
var action: PluginCallback = PluginCallback { _, _, _, _, _, _, _, _ -> Unit }
7690

77-
fun doAction(string: String, name: String, df: Any, id: String, receiverId: String?, containingClassFqName: String?, containingFunName: String?, statemenIndex: Int) {
78-
action(string, name, df, id, receiverId, containingClassFqName, containingFunName, statemenIndex)
91+
override fun doAction(source: String, name: String, df: Any, id: String, receiverId: String?, containingClassFqName: String?, containingFunName: String?, statemenIndex: Int) {
92+
action.doAction(source, name, df, id, receiverId, containingClassFqName, containingFunName, statemenIndex)
7993
}
8094
}
8195

8296
//fun callChainTransformed(df: DataFrame<*>) {
8397
// val df1 = df
8498
// .filter { "age"<Int>() > 20 }
85-
// .also { PluginCallback.doAction(""".filter { "age"<Int>() > 20 }""", "filter", it) }
99+
// .also { PluginCallbackProxy.doAction(""".filter { "age"<Int>() > 20 }""", "filter", it) }
86100
//}
87101

88102
//fun callChainTransformed(df: DataFrame<*>) {
89103
// val df1 = df
90104
// .filter { "age"<Int>() > 20 }
91-
// .also { PluginCallback.action(""".filter { "age"<Int>() > 20 }""", it) }
105+
// .also { PluginCallbackProxy.action(""".filter { "age"<Int>() > 20 }""", it) }
92106
// .groupBy("something")
93107
// .sum()
94-
// .also { PluginCallback.action(""".groupBy("something").sum()""", it) }
108+
// .also { PluginCallbackProxy.action(""".groupBy("something").sum()""", it) }
95109
//}
96110

97111
annotation class TransformDataFrameExpressions
@@ -101,7 +115,7 @@ fun box(): String {
101115
val value by columnOf("a", "b", "c", "c")
102116
val df = dataFrameOf(age, value)
103117
val expressions = mutableListOf<String>()
104-
PluginCallback.action = { source, _, df, id, receiverId, containingClassFqName, containingFunName, statementIndex ->
118+
PluginCallbackProxy.action = PluginCallback { source, _, df, id, receiverId, containingClassFqName, containingFunName, statementIndex ->
105119
println("== Call ==")
106120
expressions += source
107121
if (df is AnyFrame) {

plugins/expressions-converter/testData/box/df.txt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,17 @@ package org {
2020
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
2121
}
2222

23-
public object PluginCallback {
24-
private constructor PluginCallback()
25-
public final var action: (kotlin.String, kotlin.String, kotlin.Any, kotlin.String, kotlin.String?, kotlin.String?, kotlin.String?, kotlin.Int) -> kotlin.Unit
26-
public final fun doAction(/*0*/ string: kotlin.String, /*1*/ name: kotlin.String, /*2*/ df: kotlin.Any, /*3*/ id: kotlin.String, /*4*/ receiverId: kotlin.String?, /*5*/ containingClassFqName: kotlin.String?, /*6*/ containingFunName: kotlin.String?, /*7*/ statemenIndex: kotlin.Int): kotlin.Unit
23+
public fun interface PluginCallback {
24+
public abstract fun doAction(/*0*/ source: kotlin.String, /*1*/ name: kotlin.String, /*2*/ df: kotlin.Any, /*3*/ id: kotlin.String, /*4*/ receiverId: kotlin.String?, /*5*/ containingClassFqName: kotlin.String?, /*6*/ containingFunName: kotlin.String?, /*7*/ statementIndex: kotlin.Int): kotlin.Unit
25+
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
26+
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
27+
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
28+
}
29+
30+
public object PluginCallbackProxy : org.jetbrains.kotlinx.dataframe.explainer.PluginCallback {
31+
private constructor PluginCallbackProxy()
32+
public final var action: org.jetbrains.kotlinx.dataframe.explainer.PluginCallback
33+
public open override /*1*/ fun doAction(/*0*/ source: kotlin.String, /*1*/ name: kotlin.String, /*2*/ df: kotlin.Any, /*3*/ id: kotlin.String, /*4*/ receiverId: kotlin.String?, /*5*/ containingClassFqName: kotlin.String?, /*6*/ containingFunName: kotlin.String?, /*7*/ statemenIndex: kotlin.Int): kotlin.Unit
2734
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
2835
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
2936
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

0 commit comments

Comments
 (0)