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.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
|
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.FirElementSerializer
|
||||||
import org.jetbrains.kotlin.fir.serialization.FirSerializerExtension
|
import org.jetbrains.kotlin.fir.serialization.FirSerializerExtension
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -259,11 +260,9 @@ class FirJvmSerializerExtension(
|
|||||||
private fun FirProperty.isJvmFieldPropertyInInterfaceCompanion(): Boolean {
|
private fun FirProperty.isJvmFieldPropertyInInterfaceCompanion(): Boolean {
|
||||||
if (!hasJvmFieldAnnotation) return false
|
if (!hasJvmFieldAnnotation) return false
|
||||||
|
|
||||||
val container =
|
val container = (dispatchReceiverType as? ConeClassLikeType)?.lookupTag?.toFirRegularClass(session)
|
||||||
dispatchReceiverType?.classId?.let {
|
// Note: companions are anyway forbidden in local classes
|
||||||
session.firProvider.getFirClassifierByFqName(it) as? FirRegularClass
|
if (container == null || !container.isCompanion || container.isLocal) {
|
||||||
}
|
|
||||||
if (container == null || !container.isCompanion) {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
@@ -16034,6 +16034,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");
|
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
|
@Test
|
||||||
@TestMetadata("KotlinDocumentationProvider.kt")
|
@TestMetadata("KotlinDocumentationProvider.kt")
|
||||||
public void testKotlinDocumentationProvider() throws Exception {
|
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");
|
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
|
@Test
|
||||||
@TestMetadata("KotlinDocumentationProvider.kt")
|
@TestMetadata("KotlinDocumentationProvider.kt")
|
||||||
public void testKotlinDocumentationProvider() throws Exception {
|
public void testKotlinDocumentationProvider() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user