[FIR] Do not allow context receivers on value classes
#KT-59413 Fixed
This commit is contained in:
+6
@@ -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,
|
||||
|
||||
+4
@@ -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
|
||||
|
||||
+5
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user