FIR: fix serialization of accessor with source-level annotations

This commit is contained in:
Mikhail Glukhikh
2021-01-28 09:17:17 +03:00
parent 72b07c727b
commit 1c80c5610d
6 changed files with 53 additions and 2 deletions
@@ -13724,6 +13724,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");
}
@Test
@TestMetadata("NameHighlighter.kt")
public void testNameHighlighter() throws Exception {
runTest("compiler/testData/codegen/box/fir/NameHighlighter.kt");
}
@Test
@TestMetadata("SuspendExtension.kt")
public void testSuspendExtension() throws Exception {
@@ -714,11 +714,12 @@ class FirElementSerializer private constructor(
private fun getAccessorFlags(accessor: FirPropertyAccessor, property: FirProperty): Int {
// [FirDefaultPropertyAccessor]---a property accessor without body---can still hold other information, such as annotations,
// user-contributed visibility, and modifiers, such as `external` or `inline`.
val nonSourceAnnotations = accessor.nonSourceAnnotations(session)
val isDefault = accessor is FirDefaultPropertyAccessor &&
accessor.annotations.isEmpty() && accessor.visibility == property.visibility &&
nonSourceAnnotations.isEmpty() && accessor.visibility == property.visibility &&
!accessor.isExternal && !accessor.isInline
return Flags.getAccessorFlags(
accessor.nonSourceAnnotations(session).isNotEmpty(),
nonSourceAnnotations.isNotEmpty(),
ProtoEnumFlags.visibility(normalizeVisibility(accessor)),
ProtoEnumFlags.modality(accessor.modality!!),
!isDefault,
+27
View File
@@ -0,0 +1,27 @@
// TARGET_BACKEND: JVM
// MODULE: lib
// FILE: NameHighlighter.kt
object NameHighlighter {
var namesHighlightingEnabled = true
@TestOnly set
}
// FILE: TestOnly.java
import java.lang.annotation.*;
@Retention(RetentionPolicy.SOURCE)
@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
public @interface TestOnly {
}
// MODULE: main(lib)
// FILE: main.kt
fun box(): String {
if (!NameHighlighter.namesHighlightingEnabled) return "FAIL 1"
NameHighlighter.namesHighlightingEnabled = false
if (NameHighlighter.namesHighlightingEnabled) return "FAIL 2"
return "OK"
}
@@ -13724,6 +13724,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");
}
@Test
@TestMetadata("NameHighlighter.kt")
public void testNameHighlighter() throws Exception {
runTest("compiler/testData/codegen/box/fir/NameHighlighter.kt");
}
@Test
@TestMetadata("SuspendExtension.kt")
public void testSuspendExtension() throws Exception {
@@ -13724,6 +13724,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");
}
@Test
@TestMetadata("NameHighlighter.kt")
public void testNameHighlighter() throws Exception {
runTest("compiler/testData/codegen/box/fir/NameHighlighter.kt");
}
@Test
@TestMetadata("SuspendExtension.kt")
public void testSuspendExtension() throws Exception {
@@ -12061,6 +12061,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
public void testIrBuiltIns() throws Exception {
runTest("compiler/testData/codegen/box/fir/IrBuiltIns.kt");
}
@TestMetadata("NameHighlighter.kt")
public void testNameHighlighter() throws Exception {
runTest("compiler/testData/codegen/box/fir/NameHighlighter.kt");
}
}
@TestMetadata("compiler/testData/codegen/box/fullJdk")