[IR] Add diagnostics to forbid annotations for MFVC-typed elements
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com> #KT-1179
This commit is contained in:
committed by
Space Team
parent
adee33d3e5
commit
fa4ceb4ef4
+7
@@ -1406,6 +1406,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.ANNOTATION_ON_ILLEGAL_MULTI_FIELD_VALUE_CLASS_TYPED_TARGET) { firDiagnostic ->
|
||||
AnnotationOnIllegalMultiFieldValueClassTypedTargetImpl(
|
||||
firDiagnostic.a,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.NONE_APPLICABLE) { firDiagnostic ->
|
||||
NoneApplicableImpl(
|
||||
firDiagnostic.a.map { firBasedSymbol ->
|
||||
|
||||
+5
@@ -1012,6 +1012,11 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
override val diagnosticClass get() = ValueClassCannotBeCloneable::class
|
||||
}
|
||||
|
||||
abstract class AnnotationOnIllegalMultiFieldValueClassTypedTarget : KtFirDiagnostic<KtAnnotationEntry>() {
|
||||
override val diagnosticClass get() = AnnotationOnIllegalMultiFieldValueClassTypedTarget::class
|
||||
abstract val name: String
|
||||
}
|
||||
|
||||
abstract class NoneApplicable : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = NoneApplicable::class
|
||||
abstract val candidates: List<KtSymbol>
|
||||
|
||||
+6
@@ -1214,6 +1214,12 @@ internal class ValueClassCannotBeCloneableImpl(
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.ValueClassCannotBeCloneable(), KtAbstractFirDiagnostic<KtDeclaration>
|
||||
|
||||
internal class AnnotationOnIllegalMultiFieldValueClassTypedTargetImpl(
|
||||
override val name: String,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.AnnotationOnIllegalMultiFieldValueClassTypedTarget(), KtAbstractFirDiagnostic<KtAnnotationEntry>
|
||||
|
||||
internal class NoneApplicableImpl(
|
||||
override val candidates: List<KtSymbol>,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
|
||||
+6
@@ -33612,6 +33612,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/valueClasses"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotations.kt")
|
||||
public void testAnnotations() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/valueClasses/annotations.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("basicValueClassDeclaration.kt")
|
||||
public void testBasicValueClassDeclaration() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user