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:
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+2
@@ -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) {
|
||||
|
||||
+2
@@ -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
|
||||
}
|
||||
|
||||
+11
@@ -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
|
||||
|
||||
Generated
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user