IR: copy annotations when making lateinit fields nullable

This commit is contained in:
pyos
2019-11-15 10:24:31 +01:00
committed by Alexander Udalov
parent 4f56b1a960
commit 1bc48c3df9
5 changed files with 31 additions and 0 deletions
@@ -48,6 +48,7 @@ open class LateinitLowering(val context: CommonBackendContext) : FileLoweringPas
}.apply {
parent = originalField.parent
correspondingPropertySymbol = originalField.correspondingPropertySymbol
annotations += originalField.annotations
}
}
}
@@ -0,0 +1,15 @@
// WITH_REFLECT
// TARGET_BACKEND: JVM
@Target(AnnotationTarget.FIELD)
annotation class Ann
class C {
@Ann
lateinit var x0: String
}
fun box(): String {
require(C::class.java.getDeclaredField("x0")?.getAnnotation(Ann::class.java) != null)
return "OK"
}
@@ -76,6 +76,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/annotations/annotationsOnLateinitAccessors.kt");
}
@TestMetadata("annotationsOnLateinitFields.kt")
public void testAnnotationsOnLateinitFields() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationsOnLateinitFields.kt");
}
@TestMetadata("annotationsOnNonExistentAccessors.kt")
public void testAnnotationsOnNonExistentAccessors() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationsOnNonExistentAccessors.kt");
@@ -81,6 +81,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/annotations/annotationsOnLateinitAccessors.kt");
}
@TestMetadata("annotationsOnLateinitFields.kt")
public void testAnnotationsOnLateinitFields() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationsOnLateinitFields.kt");
}
@TestMetadata("annotationsOnNonExistentAccessors.kt")
public void testAnnotationsOnNonExistentAccessors() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationsOnNonExistentAccessors.kt");
@@ -76,6 +76,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/annotations/annotationsOnLateinitAccessors.kt");
}
@TestMetadata("annotationsOnLateinitFields.kt")
public void testAnnotationsOnLateinitFields() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationsOnLateinitFields.kt");
}
@TestMetadata("annotationsOnNonExistentAccessors.kt")
public void testAnnotationsOnNonExistentAccessors() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationsOnNonExistentAccessors.kt");