Skip to content

Commit e493477

Browse files
authored
Merge pull request #1043 from Kotlin/to-df-fix
[Compiler plugin] Fix toDataFrame for different visibilities
2 parents bddf7bf + f681ae4 commit e493477

File tree

5 files changed

+81
-3
lines changed

5 files changed

+81
-3
lines changed

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

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

3-
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
3+
import org.jetbrains.kotlin.descriptors.Visibilities
44
import org.jetbrains.kotlin.fir.FirSession
55
import org.jetbrains.kotlinx.dataframe.plugin.classId
66
import org.jetbrains.kotlinx.dataframe.plugin.utils.Names
77
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
88
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
9-
import org.jetbrains.kotlin.fir.declarations.utils.effectiveVisibility
109
import org.jetbrains.kotlin.fir.declarations.utils.isEnumClass
1110
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
11+
import org.jetbrains.kotlin.fir.declarations.utils.visibility
1212
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
1313
import org.jetbrains.kotlin.fir.expressions.FirExpression
1414
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
@@ -256,7 +256,7 @@ internal fun KotlinTypeFacade.toDataFrame(
256256
return declarations
257257
.filterNot { excludes.contains(it.first) }
258258
.filterNot { excludedClasses.contains(it.first.resolvedReturnType) }
259-
.filter { it.first.effectiveVisibility == EffectiveVisibility.Public }
259+
.filter { it.first.visibility == Visibilities.Public }
260260
.map { (it, name) ->
261261
var returnType = it.fir.returnTypeRef.resolveIfJavaType(session, JavaTypeParameterStack.EMPTY, null)
262262
.coneType.upperBoundIfFlexible()
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import org.jetbrains.kotlinx.dataframe.*
2+
import org.jetbrains.kotlinx.dataframe.annotations.*
3+
import org.jetbrains.kotlinx.dataframe.api.*
4+
import org.jetbrains.kotlinx.dataframe.io.*
5+
6+
fun box(): String {
7+
data class Name(val firstName: String, val lastName: String)
8+
9+
data class Score(val subject: String, val value: Int)
10+
11+
data class Student(val name: Name, val age: Int, val scores: List<Score>)
12+
13+
val students = listOf(
14+
Student(Name("Alice", "Cooper"), 15, listOf(Score("math", 4), Score("biology", 3))),
15+
Student(Name("Bob", "Marley"), 20, listOf(Score("music", 5))),
16+
).toDataFrame()
17+
18+
students.compareSchemas(strict = true)
19+
return "OK"
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import org.jetbrains.kotlinx.dataframe.*
2+
import org.jetbrains.kotlinx.dataframe.annotations.*
3+
import org.jetbrains.kotlinx.dataframe.api.*
4+
import org.jetbrains.kotlinx.dataframe.io.*
5+
6+
private data class Name(val firstName: String, val lastName: String)
7+
8+
private data class Score(val subject: String, val value: Int)
9+
10+
private data class Student(val name: Name, val age: Int, val scores: List<Score>)
11+
12+
fun box(): String {
13+
val students = listOf(
14+
Student(Name("Alice", "Cooper"), 15, listOf(Score("math", 4), Score("biology", 3))),
15+
Student(Name("Bob", "Marley"), 20, listOf(Score("music", 5))),
16+
).toDataFrame()
17+
18+
students.compareSchemas(strict = true)
19+
return "OK"
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import org.jetbrains.kotlinx.dataframe.*
2+
import org.jetbrains.kotlinx.dataframe.annotations.*
3+
import org.jetbrains.kotlinx.dataframe.api.*
4+
import org.jetbrains.kotlinx.dataframe.io.*
5+
6+
data class Name(val firstName: String, val lastName: String)
7+
8+
data class Score(val subject: String, val value: Int)
9+
10+
data class Student(private val name: Name, private val age: Int, val scores: List<Score>)
11+
12+
fun box(): String {
13+
val students = listOf(
14+
Student(Name("Alice", "Cooper"), 15, listOf(Score("math", 4), Score("biology", 3))),
15+
Student(Name("Bob", "Marley"), 20, listOf(Score("music", 5))),
16+
).toDataFrame()
17+
18+
students.compareSchemas(strict = true)
19+
return "OK"
20+
}

plugins/kotlin-dataframe/tests-gen/org/jetbrains/kotlin/fir/dataframe/DataFrameBlackBoxCodegenTestGenerated.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,12 @@ public void testToDataFrame_from() {
508508
runTest("testData/box/toDataFrame_from.kt");
509509
}
510510

511+
@Test
512+
@TestMetadata("toDataFrame_local_class.kt")
513+
public void testToDataFrame_local_class() {
514+
runTest("testData/box/toDataFrame_local_class.kt");
515+
}
516+
511517
@Test
512518
@TestMetadata("toDataFrame_nested.kt")
513519
public void testToDataFrame_nested() {
@@ -532,6 +538,18 @@ public void testToDataFrame_nullableSubtree() {
532538
runTest("testData/box/toDataFrame_nullableSubtree.kt");
533539
}
534540

541+
@Test
542+
@TestMetadata("toDataFrame_private_class.kt")
543+
public void testToDataFrame_private_class() {
544+
runTest("testData/box/toDataFrame_private_class.kt");
545+
}
546+
547+
@Test
548+
@TestMetadata("toDataFrame_private_properties.kt")
549+
public void testToDataFrame_private_properties() {
550+
runTest("testData/box/toDataFrame_private_properties.kt");
551+
}
552+
535553
@Test
536554
@TestMetadata("toDataFrame_superType.kt")
537555
public void testToDataFrame_superType() {

0 commit comments

Comments
 (0)