From 673b4b4d5208efbcf362a4a03c0cc4519bf3457f Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Mon, 21 Aug 2023 19:13:44 +0200 Subject: [PATCH] [FE] Add OptIn annotation to whitelist of annotation checker It's valid to have `@OptIn` only on `expect` declaration. ^KT-61373 --- .../calls/mpp/AbstractExpectActualAnnotationMatchChecker.kt | 2 ++ .../multiplatform/annotationMatching/skippedAnnotations.fir.kt | 1 + .../multiplatform/annotationMatching/skippedAnnotations.kt | 1 + 3 files changed, 4 insertions(+) diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualAnnotationMatchChecker.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualAnnotationMatchChecker.kt index 732d81606e1..78dbd0d7cea 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualAnnotationMatchChecker.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualAnnotationMatchChecker.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.mpp.DeclarationSymbolMarker import org.jetbrains.kotlin.mpp.TypeAliasSymbolMarker import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.StandardClassIds +import org.jetbrains.kotlin.resolve.checkers.OptInNames import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualAnnotationsIncompatibilityType as IncompatibilityType object AbstractExpectActualAnnotationMatchChecker { @@ -20,6 +21,7 @@ object AbstractExpectActualAnnotationMatchChecker { StandardClassIds.Annotations.SinceKotlin, StandardClassIds.Annotations.Suppress, StandardClassIds.Annotations.WasExperimental, + OptInNames.OPT_IN_CLASS_ID, ) class Incompatibility( diff --git a/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.fir.kt index 3b23cf07f59..7d8fd165fe9 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.fir.kt @@ -17,6 +17,7 @@ annotation class MyOptIn @MyOptIn @WasExperimental(MyOptIn::class) @kotlin.internal.RequireKotlin(version = "1.8") +@OptIn(MyOptIn::class) expect fun skippedAnnotationsOnExpectOnly() // MODULE: m1-jvm()()(m1-common) diff --git a/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.kt b/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.kt index a1c60baad61..92df23976ec 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/annotationMatching/skippedAnnotations.kt @@ -17,6 +17,7 @@ annotation class MyOptIn @MyOptIn @WasExperimental(MyOptIn::class) @kotlin.internal.RequireKotlin(version = "1.8") +@OptIn(MyOptIn::class) expect fun skippedAnnotationsOnExpectOnly() // MODULE: m1-jvm()()(m1-common)