Skip to content

Commit cf5b4ec

Browse files
committed
[Compiler plugin] Inline all trivial delegates
It was supposed to be a source of truth to help choose correct arguments, but in reality it's more reliable to look at existing interpreters
1 parent cc5222c commit cf5b4ec

File tree

7 files changed

+26
-85
lines changed

7 files changed

+26
-85
lines changed

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/ExpectedArgumentDelegates.kt

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
package org.jetbrains.kotlinx.dataframe.plugin.impl
22

3-
import org.jetbrains.kotlinx.dataframe.plugin.impl.api.RenameClauseApproximation
43
import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractInterpreter.*
54
import org.jetbrains.kotlinx.dataframe.plugin.impl.api.TypeApproximation
6-
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.ColumnAccessorApproximation
7-
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.ColumnPathApproximation
8-
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.ColumnWithPathApproximation
95
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.DataFrameCallableId
10-
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.InsertClauseApproximation
11-
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.KPropertyApproximation
126
import kotlin.properties.PropertyDelegateProvider
137
import kotlin.properties.ReadOnlyProperty
148

@@ -18,18 +12,6 @@ fun <T> AbstractInterpreter<T>.dataFrame(
1812
name: ArgumentName? = null
1913
): ExpectedArgumentProvider<PluginDataFrameSchema> = arg(name, lens = Interpreter.Schema)
2014

21-
fun <T> AbstractInterpreter<T>.varargString(
22-
name: ArgumentName? = null,
23-
defaultValue: DefaultValue<List<String>> = Absent
24-
25-
fun <T> AbstractInterpreter<T>.renameClause(
26-
name: ArgumentName? = null
27-
): ExpectedArgumentProvider<RenameClauseApproximation> = arg(name, lens = Interpreter.Value)
28-
29-
fun <T> AbstractInterpreter<T>.columnsSelector(
30-
name: ArgumentName? = null
31-
): ExpectedArgumentProvider<List<String>> = arg(name, lens = Interpreter.Value)
32-
3315
fun <T> AbstractInterpreter<T>.type(
3416
name: ArgumentName? = null
3517
): ExpectedArgumentProvider<TypeApproximation> = arg(name, lens = Interpreter.ReturnType)
@@ -43,35 +25,6 @@ fun <T, E : Enum<E>> AbstractInterpreter<T>.enum(
4325
java.lang.Enum.valueOf(forName as Class<out Enum<*>>, it.callableName) as E
4426
}
4527

46-
fun <T> AbstractInterpreter<T>.columnAccessor(
47-
name: ArgumentName? = null
48-
): ExpectedArgumentProvider<ColumnAccessorApproximation> = arg(name)
49-
50-
fun <T> AbstractInterpreter<T>.dataColumn(
51-
name: ArgumentName? = null
52-
): ExpectedArgumentProvider<SimpleCol> = arg(name)
53-
54-
fun <T> AbstractInterpreter<T>.insertClause(
55-
name: ArgumentName? = null
56-
): ExpectedArgumentProvider<InsertClauseApproximation> = arg(name)
57-
58-
internal fun <T> AbstractInterpreter<T>.columnPath(
59-
name: ArgumentName? = null
60-
61-
internal fun <T> AbstractInterpreter<T>.columnWithPath(
62-
name: ArgumentName? = null
63-
): ExpectedArgumentProvider<ColumnWithPathApproximation> = arg(name, lens = Interpreter.Value)
64-
): ExpectedArgumentProvider<ColumnPathApproximation> = arg(name)
65-
66-
fun <T> AbstractInterpreter<T>.kproperty(
67-
name: ArgumentName? = null
68-
): ExpectedArgumentProvider<KPropertyApproximation> = arg(name)
69-
70-
internal fun <T> AbstractInterpreter<T>.string(
71-
name: ArgumentName? = null
72-
): ExpectedArgumentProvider<String> =
73-
arg(name)
74-
7528
internal fun <T> AbstractInterpreter<T>.dsl(
7629
name: ArgumentName? = null
7730
): ExpectedArgumentProvider<(Any, Map<String, Interpreter.Success<Any?>>) -> Unit> =

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/add.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,13 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleColumnGroup
1010
import org.jetbrains.kotlinx.dataframe.plugin.impl.dataFrame
1111
import org.jetbrains.kotlinx.dataframe.plugin.impl.simpleColumnOf
1212
import org.jetbrains.kotlinx.dataframe.plugin.impl.dsl
13-
import org.jetbrains.kotlinx.dataframe.plugin.impl.string
1413
import org.jetbrains.kotlinx.dataframe.plugin.impl.type
1514

1615
typealias TypeApproximation = Marker
1716

1817
class Add : AbstractSchemaModificationInterpreter() {
1918
val Arguments.receiver: PluginDataFrameSchema by dataFrame()
20-
val Arguments.name: String by string()
19+
val Arguments.name: String by arg()
2120
val Arguments.type: TypeApproximation by type(name("expression"))
2221

2322
override fun Arguments.interpret(): PluginDataFrameSchema {
@@ -27,7 +26,7 @@ class Add : AbstractSchemaModificationInterpreter() {
2726

2827
class From : AbstractInterpreter<Unit>() {
2928
val Arguments.dsl: AddDslApproximation by arg()
30-
val Arguments.receiver: String by string()
29+
val Arguments.receiver: String by arg()
3130
val Arguments.type: TypeApproximation by type(name("expression"))
3231

3332
override fun Arguments.interpret() {
@@ -38,7 +37,7 @@ class From : AbstractInterpreter<Unit>() {
3837
class Into : AbstractInterpreter<Unit>() {
3938
val Arguments.dsl: AddDslApproximation by arg()
4039
val Arguments.receiver: TypeApproximation by type()
41-
val Arguments.name: String by string()
40+
val Arguments.name: String by arg()
4241

4342
override fun Arguments.interpret() {
4443
dsl.columns += simpleColumnOf(name, receiver.type)
@@ -60,7 +59,7 @@ class AddWithDsl : AbstractSchemaModificationInterpreter() {
6059

6160
class AddDslStringInvoke : AbstractInterpreter<Unit>() {
6261
val Arguments.dsl: AddDslApproximation by arg()
63-
val Arguments.receiver: String by string()
62+
val Arguments.receiver: String by arg()
6463
val Arguments.body by dsl()
6564

6665
override fun Arguments.interpret() {

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/convert.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.jetbrains.kotlinx.dataframe.plugin.impl.api
22

33
import org.jetbrains.kotlinx.dataframe.api.Infer
44
import org.jetbrains.kotlinx.dataframe.plugin.extensions.KotlinTypeFacade
5+
import org.jetbrains.kotlinx.dataframe.plugin.impl.Absent
56
import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractInterpreter
67
import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractSchemaModificationInterpreter
78
import org.jetbrains.kotlinx.dataframe.plugin.impl.Arguments
@@ -11,13 +12,10 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleCol
1112
import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleColumnGroup
1213
import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleDataColumn
1314
import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleFrameColumn
14-
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.ColumnWithPathApproximation
1515
import org.jetbrains.kotlinx.dataframe.plugin.impl.dataFrame
1616
import org.jetbrains.kotlinx.dataframe.plugin.impl.enum
1717
import org.jetbrains.kotlinx.dataframe.plugin.impl.simpleColumnOf
18-
import org.jetbrains.kotlinx.dataframe.plugin.impl.string
1918
import org.jetbrains.kotlinx.dataframe.plugin.impl.type
20-
import org.jetbrains.kotlinx.dataframe.plugin.impl.varargString
2119

2220
internal class Convert0 : AbstractInterpreter<ConvertApproximation>() {
2321
val Arguments.columns: ColumnsResolver by arg()
@@ -31,7 +29,7 @@ internal class Convert0 : AbstractInterpreter<ConvertApproximation>() {
3129

3230
class Convert2 : AbstractInterpreter<ConvertApproximation>() {
3331
val Arguments.receiver: PluginDataFrameSchema by dataFrame()
34-
val Arguments.columns: List<String> by varargString()
32+
val Arguments.columns: List<String> by arg(defaultValue = Absent)
3533

3634
override fun Arguments.interpret(): ConvertApproximation {
3735
return ConvertApproximation(receiver, columns.map { listOf(it) })
@@ -41,8 +39,8 @@ class Convert2 : AbstractInterpreter<ConvertApproximation>() {
4139
class ConvertApproximation(val schema: PluginDataFrameSchema, val columns: List<List<String>>)
4240

4341
internal class Convert6 : AbstractInterpreter<PluginDataFrameSchema>() {
44-
val Arguments.firstCol: String by string()
45-
val Arguments.cols: List<String> by varargString(defaultValue = Present(emptyList()))
42+
val Arguments.firstCol: String by arg()
43+
val Arguments.cols: List<String> by arg(defaultValue = Present(emptyList()))
4644
val Arguments.infer: Infer by enum(defaultValue = Present(Infer.Nulls))
4745
val Arguments.expression: TypeApproximation by type()
4846
val Arguments.receiver: PluginDataFrameSchema by dataFrame()

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/dataFrameOf.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.Arguments
1414
import org.jetbrains.kotlinx.dataframe.plugin.impl.Interpreter
1515
import org.jetbrains.kotlinx.dataframe.plugin.impl.PluginDataFrameSchema
1616
import org.jetbrains.kotlinx.dataframe.plugin.impl.simpleColumnOf
17-
import org.jetbrains.kotlinx.dataframe.plugin.impl.varargString
1817
import org.jetbrains.kotlinx.dataframe.impl.api.withValuesImpl
18+
import org.jetbrains.kotlinx.dataframe.plugin.impl.Absent
1919

2020
class DataFrameOf0 : AbstractInterpreter<DataFrameBuilderApproximation>() {
21-
val Arguments.header: List<String> by varargString()
21+
val Arguments.header: List<String> by arg(defaultValue = Absent)
2222

2323
override fun Arguments.interpret(): DataFrameBuilderApproximation {
2424
return DataFrameBuilderApproximation(header)

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/insert.kt

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,21 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.Present
1414
import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleCol
1515
import org.jetbrains.kotlinx.dataframe.plugin.impl.asDataColumn
1616
import org.jetbrains.kotlinx.dataframe.plugin.impl.asDataFrame
17-
import org.jetbrains.kotlinx.dataframe.plugin.impl.columnAccessor
18-
import org.jetbrains.kotlinx.dataframe.plugin.impl.columnPath
1917
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.ColumnAccessorApproximation
2018
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.ColumnPathApproximation
2119
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.InsertClauseApproximation
2220
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.KPropertyApproximation
23-
import org.jetbrains.kotlinx.dataframe.plugin.impl.dataColumn
2421
import org.jetbrains.kotlinx.dataframe.plugin.impl.dataFrame
2522
import org.jetbrains.kotlinx.dataframe.plugin.impl.enum
26-
import org.jetbrains.kotlinx.dataframe.plugin.impl.insertClause
27-
import org.jetbrains.kotlinx.dataframe.plugin.impl.kproperty
2823
import org.jetbrains.kotlinx.dataframe.plugin.impl.simpleColumnOf
29-
import org.jetbrains.kotlinx.dataframe.plugin.impl.string
3024
import org.jetbrains.kotlinx.dataframe.plugin.impl.toPluginDataFrameSchema
3125
import org.jetbrains.kotlinx.dataframe.plugin.impl.type
3226

3327
/**
3428
* @see DataFrame.insert
3529
*/
3630
internal class Insert0 : AbstractInterpreter<InsertClauseApproximation>() {
37-
val Arguments.column: SimpleCol by dataColumn()
31+
val Arguments.column: SimpleCol by arg()
3832
val Arguments.receiver: PluginDataFrameSchema by dataFrame()
3933

4034
override fun Arguments.interpret(): InsertClauseApproximation {
@@ -43,7 +37,7 @@ internal class Insert0 : AbstractInterpreter<InsertClauseApproximation>() {
4337
}
4438

4539
internal class Insert1 : AbstractInterpreter<InsertClauseApproximation>() {
46-
val Arguments.name: String by string()
40+
val Arguments.name: String by arg()
4741
val Arguments.infer: Infer by enum(defaultValue = Present(Infer.Nulls))
4842
val Arguments.expression: TypeApproximation by type()
4943
val Arguments.receiver: PluginDataFrameSchema by dataFrame()
@@ -54,7 +48,7 @@ internal class Insert1 : AbstractInterpreter<InsertClauseApproximation>() {
5448
}
5549

5650
internal class Insert2 : AbstractInterpreter<InsertClauseApproximation>() {
57-
val Arguments.column: ColumnAccessorApproximation by columnAccessor()
51+
val Arguments.column: ColumnAccessorApproximation by arg()
5852
val Arguments.infer: Infer by enum(defaultValue = Present(Infer.Nulls))
5953
val Arguments.expression: TypeApproximation by type()
6054
val Arguments.receiver: PluginDataFrameSchema by dataFrame()
@@ -65,7 +59,7 @@ internal class Insert2 : AbstractInterpreter<InsertClauseApproximation>() {
6559
}
6660

6761
internal class Insert3 : AbstractInterpreter<InsertClauseApproximation>() {
68-
val Arguments.column: KPropertyApproximation by kproperty()
62+
val Arguments.column: KPropertyApproximation by arg()
6963
val Arguments.infer: Infer by enum(defaultValue = Present(Infer.Nulls))
7064
val Arguments.expression: TypeApproximation by type()
7165
val Arguments.receiver: PluginDataFrameSchema by dataFrame()
@@ -77,7 +71,7 @@ internal class Insert3 : AbstractInterpreter<InsertClauseApproximation>() {
7771

7872
internal class Under0 : AbstractInterpreter<PluginDataFrameSchema>() {
7973
val Arguments.column: SingleColumnApproximation by arg()
80-
val Arguments.receiver: InsertClauseApproximation by insertClause()
74+
val Arguments.receiver: InsertClauseApproximation by arg()
8175

8276
override fun Arguments.interpret(): PluginDataFrameSchema {
8377
val path = column.resolve(receiver.df).single().path
@@ -88,8 +82,8 @@ internal class Under0 : AbstractInterpreter<PluginDataFrameSchema>() {
8882
}
8983

9084
internal class Under1 : AbstractInterpreter<PluginDataFrameSchema>() {
91-
val Arguments.columnPath: ColumnPathApproximation by columnPath()
92-
val Arguments.receiver: InsertClauseApproximation by insertClause()
85+
val Arguments.columnPath: ColumnPathApproximation by arg()
86+
val Arguments.receiver: InsertClauseApproximation by arg()
9387

9488
override fun Arguments.interpret(): PluginDataFrameSchema {
9589
return receiver.df.asDataFrame()
@@ -99,8 +93,8 @@ internal class Under1 : AbstractInterpreter<PluginDataFrameSchema>() {
9993
}
10094

10195
internal class Under2 : AbstractInterpreter<PluginDataFrameSchema>() {
102-
val Arguments.column: ColumnAccessorApproximation by columnAccessor()
103-
val Arguments.receiver: InsertClauseApproximation by insertClause()
96+
val Arguments.column: ColumnAccessorApproximation by arg()
97+
val Arguments.receiver: InsertClauseApproximation by arg()
10498

10599
override fun Arguments.interpret(): PluginDataFrameSchema {
106100
return receiver.df.asDataFrame()
@@ -110,8 +104,8 @@ internal class Under2 : AbstractInterpreter<PluginDataFrameSchema>() {
110104
}
111105

112106
internal class Under3 : AbstractInterpreter<PluginDataFrameSchema>() {
113-
val Arguments.column: KPropertyApproximation by kproperty()
114-
val Arguments.receiver: InsertClauseApproximation by insertClause()
107+
val Arguments.column: KPropertyApproximation by arg()
108+
val Arguments.receiver: InsertClauseApproximation by arg()
115109

116110
override fun Arguments.interpret(): PluginDataFrameSchema {
117111
return receiver.df.asDataFrame()
@@ -121,8 +115,8 @@ internal class Under3 : AbstractInterpreter<PluginDataFrameSchema>() {
121115
}
122116

123117
internal class Under4 : AbstractInterpreter<PluginDataFrameSchema>() {
124-
val Arguments.column: String by string()
125-
val Arguments.receiver: InsertClauseApproximation by insertClause()
118+
val Arguments.column: String by arg()
119+
val Arguments.receiver: InsertClauseApproximation by arg()
126120

127121
override fun Arguments.interpret(): PluginDataFrameSchema {
128122
return receiver.df.asDataFrame()

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/read.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.jetbrains.kotlinx.dataframe.plugin.impl.api
22

3-
import kotlinx.serialization.decodeFromString
43
import kotlinx.serialization.json.Json
54
import org.jetbrains.kotlinx.dataframe.DataFrame
65
import org.jetbrains.kotlinx.dataframe.DataRow
@@ -22,12 +21,11 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractSchemaModificationInt
2221
import org.jetbrains.kotlinx.dataframe.plugin.impl.PluginDataFrameSchema
2322
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.IoSchema
2423
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.deserializeToPluginDataFrameSchema
25-
import org.jetbrains.kotlinx.dataframe.plugin.impl.string
2624
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.toPluginDataFrameSchema
2725
import java.io.File
2826

2927
internal class Read0 : AbstractInterpreter<PluginDataFrameSchema>() {
30-
val Arguments.path by string()
28+
val Arguments.path: String by arg()
3129
val Arguments.header: List<String> by arg(defaultValue = Present(listOf()))
3230

3331
override fun Arguments.interpret(): PluginDataFrameSchema {

plugins/kotlin-dataframe/src/org/jetbrains/kotlinx/dataframe/plugin/impl/api/rename.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jetbrains.kotlinx.dataframe.plugin.impl.api
22

3+
import org.jetbrains.kotlinx.dataframe.plugin.impl.Absent
34
import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractInterpreter
45
import org.jetbrains.kotlinx.dataframe.plugin.impl.AbstractSchemaModificationInterpreter
56
import org.jetbrains.kotlinx.dataframe.plugin.impl.Arguments
@@ -8,9 +9,7 @@ import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleCol
89
import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleDataColumn
910
import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleColumnGroup
1011
import org.jetbrains.kotlinx.dataframe.plugin.impl.SimpleFrameColumn
11-
import org.jetbrains.kotlinx.dataframe.plugin.impl.data.ColumnWithPathApproximation
1212
import org.jetbrains.kotlinx.dataframe.plugin.impl.dataFrame
13-
import org.jetbrains.kotlinx.dataframe.plugin.impl.varargString
1413

1514
class Rename : AbstractInterpreter<RenameClauseApproximation>() {
1615
private val Arguments.receiver by dataFrame()
@@ -24,7 +23,7 @@ class RenameClauseApproximation(val schema: PluginDataFrameSchema, val columns:
2423

2524
class RenameInto : AbstractSchemaModificationInterpreter() {
2625
val Arguments.receiver: RenameClauseApproximation by arg()
27-
val Arguments.newNames: List<String> by varargString()
26+
val Arguments.newNames: List<String> by arg(defaultValue = Absent)
2827

2928
override fun Arguments.interpret(): PluginDataFrameSchema {
3029
val columns = receiver.columns.resolve(receiver.schema)

0 commit comments

Comments
 (0)