[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.diagnostics.Errors
|
||||||
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
||||||
import org.jetbrains.kotlin.mpp.MppJavaImplicitActualizatorMarker
|
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.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
|
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
@@ -42,7 +42,7 @@ import org.jetbrains.kotlin.resolve.source.PsiSourceFile
|
|||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
private val implicitlyActualizedAnnotationFqn = FqName("kotlin.jvm.ImplicitlyActualizedByJvmDeclaration")
|
private val implicitlyActualizedAnnotationFqn = StandardClassIds.Annotations.ImplicitlyActualizedByJvmDeclaration.asSingleFqName()
|
||||||
|
|
||||||
class ExpectedActualDeclarationChecker(
|
class ExpectedActualDeclarationChecker(
|
||||||
val moduleStructureOracle: ModuleStructureOracle,
|
val moduleStructureOracle: ModuleStructureOracle,
|
||||||
|
|||||||
+1
@@ -18,6 +18,7 @@ object AbstractExpectActualAnnotationMatchChecker {
|
|||||||
private val SKIPPED_CLASS_IDS = setOf(
|
private val SKIPPED_CLASS_IDS = setOf(
|
||||||
StandardClassIds.Annotations.Deprecated,
|
StandardClassIds.Annotations.Deprecated,
|
||||||
StandardClassIds.Annotations.DeprecatedSinceKotlin,
|
StandardClassIds.Annotations.DeprecatedSinceKotlin,
|
||||||
|
StandardClassIds.Annotations.ImplicitlyActualizedByJvmDeclaration,
|
||||||
StandardClassIds.Annotations.OptionalExpectation,
|
StandardClassIds.Annotations.OptionalExpectation,
|
||||||
StandardClassIds.Annotations.RequireKotlin,
|
StandardClassIds.Annotations.RequireKotlin,
|
||||||
StandardClassIds.Annotations.SinceKotlin,
|
StandardClassIds.Annotations.SinceKotlin,
|
||||||
|
|||||||
Vendored
+7
-1
@@ -20,6 +20,10 @@ annotation class MyOptIn
|
|||||||
@OptIn(MyOptIn::class)
|
@OptIn(MyOptIn::class)
|
||||||
expect fun skippedAnnotationsOnExpectOnly()
|
expect fun skippedAnnotationsOnExpectOnly()
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMultiplatform::class)
|
||||||
|
@kotlin.jvm.ImplicitlyActualizedByJvmDeclaration
|
||||||
|
expect class ImplicitlyActualizedByJvmDeclarationOnExpectOnly
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
package kotlin
|
package kotlin
|
||||||
@@ -27,4 +31,6 @@ package kotlin
|
|||||||
@OptIn(ExperimentalMultiplatform::class)
|
@OptIn(ExperimentalMultiplatform::class)
|
||||||
actual annotation class OptionalExpectationOnExpectOnly
|
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)
|
@OptIn(MyOptIn::class)
|
||||||
expect fun skippedAnnotationsOnExpectOnly()
|
expect fun skippedAnnotationsOnExpectOnly()
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMultiplatform::class)
|
||||||
|
@kotlin.jvm.ImplicitlyActualizedByJvmDeclaration
|
||||||
|
expect class ImplicitlyActualizedByJvmDeclarationOnExpectOnly
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
package kotlin
|
package kotlin
|
||||||
@@ -27,4 +31,6 @@ package kotlin
|
|||||||
@OptIn(ExperimentalMultiplatform::class)
|
@OptIn(ExperimentalMultiplatform::class)
|
||||||
actual annotation class OptionalExpectationOnExpectOnly
|
actual annotation class OptionalExpectationOnExpectOnly
|
||||||
|
|
||||||
actual fun skippedAnnotationsOnExpectOnly() {}
|
actual fun skippedAnnotationsOnExpectOnly() {}
|
||||||
|
|
||||||
|
actual class ImplicitlyActualizedByJvmDeclarationOnExpectOnly
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ object StandardClassIds {
|
|||||||
val AccessibleLateinitPropertyLiteral = "AccessibleLateinitPropertyLiteral".internalId()
|
val AccessibleLateinitPropertyLiteral = "AccessibleLateinitPropertyLiteral".internalId()
|
||||||
|
|
||||||
val OptionalExpectation = "OptionalExpectation".baseId()
|
val OptionalExpectation = "OptionalExpectation".baseId()
|
||||||
|
val ImplicitlyActualizedByJvmDeclaration = "ImplicitlyActualizedByJvmDeclaration".jvmId()
|
||||||
|
|
||||||
object Java {
|
object Java {
|
||||||
val Deprecated = "Deprecated".javaLangId()
|
val Deprecated = "Deprecated".javaLangId()
|
||||||
|
|||||||
Reference in New Issue
Block a user