Add applicability checks & tests for SubclassOptInRequired

This commit is contained in:
Mikhail Glukhikh
2022-08-08 11:46:46 +02:00
committed by teamcity
parent 66e710704a
commit 80a9f22052
16 changed files with 431 additions and 18 deletions
@@ -1041,6 +1041,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.SUBCLASS_OPT_IN_INAPPLICABLE) { firDiagnostic ->
SubclassOptInInapplicableImpl(
firDiagnostic.a,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.EXPOSED_TYPEALIAS_EXPANDED_TYPE) { firDiagnostic ->
ExposedTypealiasExpandedTypeImpl(
firDiagnostic.a,
@@ -751,6 +751,11 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = OptInMarkerOnOverrideWarning::class
}
abstract class SubclassOptInInapplicable : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = SubclassOptInInapplicable::class
abstract val target: String
}
abstract class ExposedTypealiasExpandedType : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = ExposedTypealiasExpandedType::class
abstract val elementVisibility: EffectiveVisibility
@@ -902,6 +902,12 @@ internal class OptInMarkerOnOverrideWarningImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.OptInMarkerOnOverrideWarning(), KtAbstractFirDiagnostic<KtAnnotationEntry>
internal class SubclassOptInInapplicableImpl(
override val target: String,
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.SubclassOptInInapplicable(), KtAbstractFirDiagnostic<KtAnnotationEntry>
internal class ExposedTypealiasExpandedTypeImpl(
override val elementVisibility: EffectiveVisibility,
override val restrictingDeclaration: KtSymbol,
@@ -37548,6 +37548,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/overrideInAnonymousObject.kt");
}
@Test
@TestMetadata("subClassOptInModality.kt")
public void testSubClassOptInModality() throws Exception {
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/subClassOptInModality.kt");
}
@Test
@TestMetadata("subClassOptInRequired.kt")
public void testSubClassOptInRequired() throws Exception {