[JVM] Forbid non-JvmInline value classes again

This commit is contained in:
Evgeniy.Zhelenskiy
2021-12-25 04:44:00 +03:00
committed by Space
parent 7595f798e1
commit df1de3a7d3
19 changed files with 126 additions and 4798 deletions
@@ -1285,6 +1285,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.VALUE_CLASS_EMPTY_CONSTRUCTOR) { firDiagnostic ->
ValueClassEmptyConstructorImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.VALUE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER) { firDiagnostic ->
ValueClassConstructorNotFinalReadOnlyParameterImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -928,6 +928,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = InlineClassConstructorWrongParametersSize::class
}
abstract class ValueClassEmptyConstructor : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = ValueClassEmptyConstructor::class
}
abstract class ValueClassConstructorNotFinalReadOnlyParameter : KtFirDiagnostic<KtParameter>() {
override val diagnosticClass get() = ValueClassConstructorNotFinalReadOnlyParameter::class
}
@@ -1110,6 +1110,11 @@ internal class InlineClassConstructorWrongParametersSizeImpl(
override val token: ValidityToken,
) : KtFirDiagnostic.InlineClassConstructorWrongParametersSize(), KtAbstractFirDiagnostic<KtElement>
internal class ValueClassEmptyConstructorImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ValueClassEmptyConstructor(), KtAbstractFirDiagnostic<KtElement>
internal class ValueClassConstructorNotFinalReadOnlyParameterImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.base
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.utils.TransformersFunctions;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@@ -32113,6 +32114,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/valueClasses/propertiesWithBackingFieldsInsideValueClass.kt");
}
@Test
@TestMetadata("recursiveMultiFieldValueClasses.kt")
public void testRecursiveMultiFieldValueClasses() throws Exception {
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
}
@Test
@TestMetadata("recursiveValueClasses.kt")
public void testRecursiveValueClasses() throws Exception {
@@ -32167,6 +32174,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingType.kt");
}
@Test
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
}
@Test
@TestMetadata("valueClassesInsideAnnotations.kt")
public void testValueClassesInsideAnnotations() throws Exception {