[FE, IR] Allow @ImplicitlyActualizedByJvmDeclaration to be set only on expect
@ImplicitlyActualizedByJvmDeclaration is the only one OptionalExpectation annotation which works correctly when set only on `expect`. All other (like @JvmName, @JsName) - not, so warning for them must be reported. ^KT-61725 Fixed
This commit is contained in:
committed by
Space Team
parent
efad248d7d
commit
5e49b472f8
+2
-2
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
||||
import org.jetbrains.kotlin.mpp.MppJavaImplicitActualizatorMarker
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
@@ -42,7 +42,7 @@ import org.jetbrains.kotlin.resolve.source.PsiSourceFile
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import java.io.File
|
||||
|
||||
private val implicitlyActualizedAnnotationFqn = FqName("kotlin.jvm.ImplicitlyActualizedByJvmDeclaration")
|
||||
private val implicitlyActualizedAnnotationFqn = StandardClassIds.Annotations.ImplicitlyActualizedByJvmDeclaration.asSingleFqName()
|
||||
|
||||
class ExpectedActualDeclarationChecker(
|
||||
val moduleStructureOracle: ModuleStructureOracle,
|
||||
|
||||
+1
@@ -18,6 +18,7 @@ object AbstractExpectActualAnnotationMatchChecker {
|
||||
private val SKIPPED_CLASS_IDS = setOf(
|
||||
StandardClassIds.Annotations.Deprecated,
|
||||
StandardClassIds.Annotations.DeprecatedSinceKotlin,
|
||||
StandardClassIds.Annotations.ImplicitlyActualizedByJvmDeclaration,
|
||||
StandardClassIds.Annotations.OptionalExpectation,
|
||||
StandardClassIds.Annotations.RequireKotlin,
|
||||
StandardClassIds.Annotations.SinceKotlin,
|
||||
|
||||
Vendored
+7
-1
@@ -20,6 +20,10 @@ annotation class MyOptIn
|
||||
@OptIn(MyOptIn::class)
|
||||
expect fun skippedAnnotationsOnExpectOnly()
|
||||
|
||||
@OptIn(ExperimentalMultiplatform::class)
|
||||
@kotlin.jvm.ImplicitlyActualizedByJvmDeclaration
|
||||
expect class ImplicitlyActualizedByJvmDeclarationOnExpectOnly
|
||||
|
||||
// MODULE: m1-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
package kotlin
|
||||
@@ -27,4 +31,6 @@ package kotlin
|
||||
@OptIn(ExperimentalMultiplatform::class)
|
||||
actual annotation class OptionalExpectationOnExpectOnly
|
||||
|
||||
actual fun skippedAnnotationsOnExpectOnly() {}
|
||||
actual fun skippedAnnotationsOnExpectOnly() {}
|
||||
|
||||
actual class ImplicitlyActualizedByJvmDeclarationOnExpectOnly
|
||||
|
||||
+7
-1
@@ -20,6 +20,10 @@ annotation class MyOptIn
|
||||
@OptIn(MyOptIn::class)
|
||||
expect fun skippedAnnotationsOnExpectOnly()
|
||||
|
||||
@OptIn(ExperimentalMultiplatform::class)
|
||||
@kotlin.jvm.ImplicitlyActualizedByJvmDeclaration
|
||||
expect class ImplicitlyActualizedByJvmDeclarationOnExpectOnly
|
||||
|
||||
// MODULE: m1-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
package kotlin
|
||||
@@ -27,4 +31,6 @@ package kotlin
|
||||
@OptIn(ExperimentalMultiplatform::class)
|
||||
actual annotation class OptionalExpectationOnExpectOnly
|
||||
|
||||
actual fun skippedAnnotationsOnExpectOnly() {}
|
||||
actual fun skippedAnnotationsOnExpectOnly() {}
|
||||
|
||||
actual class ImplicitlyActualizedByJvmDeclarationOnExpectOnly
|
||||
|
||||
@@ -197,6 +197,7 @@ object StandardClassIds {
|
||||
val AccessibleLateinitPropertyLiteral = "AccessibleLateinitPropertyLiteral".internalId()
|
||||
|
||||
val OptionalExpectation = "OptionalExpectation".baseId()
|
||||
val ImplicitlyActualizedByJvmDeclaration = "ImplicitlyActualizedByJvmDeclaration".jvmId()
|
||||
|
||||
object Java {
|
||||
val Deprecated = "Deprecated".javaLangId()
|
||||
|
||||
Reference in New Issue
Block a user