[IR] Forbid MFVC primary constructors default arguments

Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com>

#KT-1179
This commit is contained in:
Evgeniy.Zhelenskiy
2022-10-20 18:36:41 +02:00
committed by Space Team
parent c6e54e6433
commit adee33d3e5
20 changed files with 111 additions and 44 deletions
@@ -1369,6 +1369,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.MULTI_FIELD_VALUE_CLASS_PRIMARY_CONSTRUCTOR_DEFAULT_PARAMETER) { firDiagnostic ->
MultiFieldValueClassPrimaryConstructorDefaultParameterImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_VALUE_CLASS) { firDiagnostic ->
SecondaryConstructorWithBodyInsideValueClassImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -987,6 +987,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ValueClassCannotBeRecursive::class
}
abstract class MultiFieldValueClassPrimaryConstructorDefaultParameter : KtFirDiagnostic<KtExpression>() {
override val diagnosticClass get() = MultiFieldValueClassPrimaryConstructorDefaultParameter::class
}
abstract class SecondaryConstructorWithBodyInsideValueClass : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = SecondaryConstructorWithBodyInsideValueClass::class
}
@@ -1183,6 +1183,11 @@ internal class ValueClassCannotBeRecursiveImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ValueClassCannotBeRecursive(), KtAbstractFirDiagnostic<KtTypeReference>
internal class MultiFieldValueClassPrimaryConstructorDefaultParameterImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.MultiFieldValueClassPrimaryConstructorDefaultParameter(), KtAbstractFirDiagnostic<KtExpression>
internal class SecondaryConstructorWithBodyInsideValueClassImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,