FIR: fix serialization of JvmField-properties of local classes
#KT-48175 Fixed
This commit is contained in:
+4
-5
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
|
||||
import org.jetbrains.kotlin.fir.resolve.toFirRegularClass
|
||||
import org.jetbrains.kotlin.fir.serialization.FirElementSerializer
|
||||
import org.jetbrains.kotlin.fir.serialization.FirSerializerExtension
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -259,11 +260,9 @@ class FirJvmSerializerExtension(
|
||||
private fun FirProperty.isJvmFieldPropertyInInterfaceCompanion(): Boolean {
|
||||
if (!hasJvmFieldAnnotation) return false
|
||||
|
||||
val container =
|
||||
dispatchReceiverType?.classId?.let {
|
||||
session.firProvider.getFirClassifierByFqName(it) as? FirRegularClass
|
||||
}
|
||||
if (container == null || !container.isCompanion) {
|
||||
val container = (dispatchReceiverType as? ConeClassLikeType)?.lookupTag?.toFirRegularClass(session)
|
||||
// Note: companions are anyway forbidden in local classes
|
||||
if (container == null || !container.isCompanion || container.isLocal) {
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -16034,6 +16034,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmFieldInLocalClass.kt")
|
||||
public void testJvmFieldInLocalClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/jvmFieldInLocalClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("KotlinDocumentationProvider.kt")
|
||||
public void testKotlinDocumentationProvider() throws Exception {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun box(): String {
|
||||
class Bean {
|
||||
@JvmField
|
||||
val a: String = "OK"
|
||||
}
|
||||
|
||||
return Bean().a
|
||||
}
|
||||
+6
@@ -16034,6 +16034,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmFieldInLocalClass.kt")
|
||||
public void testJvmFieldInLocalClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/jvmFieldInLocalClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("KotlinDocumentationProvider.kt")
|
||||
public void testKotlinDocumentationProvider() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user