KMP: Put "prohibit actual typealias to special annotations" under the flag

^KT-61668 Fixed

Review: https://jetbrains.team/p/kt/reviews/12062/timeline
This commit is contained in:
Nikita Bobko
2023-09-05 18:15:37 +02:00
committed by Space Team
parent e742d43ee0
commit 3c73331821
6 changed files with 33 additions and 0 deletions
@@ -74,6 +74,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst
runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasToSpecialAnnotation.kt");
}
@Test
@TestMetadata("actualTypealiasToSpecialAnnotation_oldLanguageVersion.kt")
public void testActualTypealiasToSpecialAnnotation_oldLanguageVersion() throws Exception {
runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasToSpecialAnnotation_oldLanguageVersion.kt");
}
@Test
@TestMetadata("actualTypealias_defaultParamsIncompatibility.kt")
public void testActualTypealias_defaultParamsIncompatibility() throws Exception {
@@ -74,6 +74,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi
runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasToSpecialAnnotation.kt");
}
@Test
@TestMetadata("actualTypealiasToSpecialAnnotation_oldLanguageVersion.kt")
public void testActualTypealiasToSpecialAnnotation_oldLanguageVersion() throws Exception {
runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasToSpecialAnnotation_oldLanguageVersion.kt");
}
@Test
@TestMetadata("actualTypealias_defaultParamsIncompatibility.kt")
public void testActualTypealias_defaultParamsIncompatibility() throws Exception {
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.analysis.checkers.declaration
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.reportOn
@@ -19,6 +20,7 @@ import org.jetbrains.kotlin.resolve.calls.mpp.ActualTypealiasToSpecialAnnotation
internal object FirActualTypealiasToSpecialAnnotationChecker : FirTypeAliasChecker() {
override fun check(declaration: FirTypeAlias, context: CheckerContext, reporter: DiagnosticReporter) {
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.MultiplatformRestrictions)) return
if (!declaration.isActual) return
val typealiasedClassSymbol = declaration.expandedConeType?.toSymbol(context.session) ?: return
if (typealiasedClassSymbol.classKind != ClassKind.ANNOTATION_CLASS) {
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.resolve.checkers
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.classId
internal object ActualTypealiasToSpecialAnnotationChecker : DeclarationChecker {
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.MultiplatformRestrictions)) return
if (declaration !is KtTypeAlias || descriptor !is TypeAliasDescriptor || !descriptor.isActual) {
return
}
@@ -0,0 +1,11 @@
// LANGUAGE: -MultiplatformRestrictions
// FIR_IDENTICAL
// WITH_STDLIB
// MODULE: m1-common
// FILE: common.kt
expect annotation class TypealiasToKotlinPkg
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
actual typealias TypealiasToKotlinPkg = kotlin.Deprecated
@@ -23069,6 +23069,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasToSpecialAnnotation.kt");
}
@Test
@TestMetadata("actualTypealiasToSpecialAnnotation_oldLanguageVersion.kt")
public void testActualTypealiasToSpecialAnnotation_oldLanguageVersion() throws Exception {
runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasToSpecialAnnotation_oldLanguageVersion.kt");
}
@Test
@TestMetadata("actualTypealias_defaultParamsIncompatibility.kt")
public void testActualTypealias_defaultParamsIncompatibility() throws Exception {