[FIR] Fix case with lazy resolve in expect-actual annotation checker

Unresolved annotation arguments were treated as absent arguments,
which lead to false-positive reports.
Add assert and test for that and fix.

MR: KT-MR-12245

^KT-60671 Fixed
This commit is contained in:
Roman Efremov
2023-09-20 11:09:51 +02:00
committed by Space Team
parent 4c75fb108f
commit 0fd700de21
10 changed files with 106 additions and 13 deletions
@@ -0,0 +1,19 @@
// This test is for the case when expect annotation is FirAnnotationCall and actual annotation is not FirAnnotationCall
// MODULE: common
// TARGET_PLATFORM: Common
expect annotation class Ann(val p: Int)
@Ann(p = 1)
expect class Foo
// MODULE: main()()(common)
// TARGET_PLATFORM: JVM
// FILE: Foo.kt
actual annotation class Ann actual constructor(actual val p: Int)
<!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>actual typealias <!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>Foo<!> = FooImpl<!>
// FILE: FooImpl.java
@Ann(p = 2)
public class FooImpl {
}
@@ -0,0 +1,19 @@
// This test is for the case when expect annotation is FirAnnotationCall and actual annotation is not FirAnnotationCall
// MODULE: common
// TARGET_PLATFORM: Common
expect annotation class Ann(val p: Int)
@Ann(p = 1)
expect class Foo
// MODULE: main()()(common)
// TARGET_PLATFORM: JVM
// FILE: Foo.kt
actual annotation class Ann actual constructor(actual val p: Int)
actual typealias <!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>Foo<!> = FooImpl
// FILE: FooImpl.java
@Ann(p = 2)
public class FooImpl {
}