[FIR] Do not allow context receivers on value classes

#KT-59413 Fixed
This commit is contained in:
Brian Norman
2023-06-27 16:49:22 +03:00
committed by Space Team
parent b74ff19930
commit 61acd2b6f5
8 changed files with 30 additions and 8 deletions
@@ -1646,6 +1646,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.VALUE_CLASS_CANNOT_HAVE_CONTEXT_RECEIVERS) { firDiagnostic ->
ValueClassCannotHaveContextReceiversImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.ANNOTATION_ON_ILLEGAL_MULTI_FIELD_VALUE_CLASS_TYPED_TARGET) { firDiagnostic ->
AnnotationOnIllegalMultiFieldValueClassTypedTargetImpl(
firDiagnostic.a,
@@ -1182,6 +1182,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ValueClassCannotBeCloneable::class
}
interface ValueClassCannotHaveContextReceivers : KtFirDiagnostic<KtDeclaration> {
override val diagnosticClass get() = ValueClassCannotHaveContextReceivers::class
}
interface AnnotationOnIllegalMultiFieldValueClassTypedTarget : KtFirDiagnostic<KtAnnotationEntry> {
override val diagnosticClass get() = AnnotationOnIllegalMultiFieldValueClassTypedTarget::class
val name: String
@@ -1419,6 +1419,11 @@ internal class ValueClassCannotBeCloneableImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.ValueClassCannotBeCloneable
internal class ValueClassCannotHaveContextReceiversImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.ValueClassCannotHaveContextReceivers
internal class AnnotationOnIllegalMultiFieldValueClassTypedTargetImpl(
override val name: String,
firDiagnostic: KtPsiDiagnostic,