[FIR] Report the use of inline on primary constructor parameters

^KT-59664 Fixed
This commit is contained in:
Nikolay Lunyak
2023-08-22 15:09:29 +03:00
committed by Space Team
parent 6c4f6907ea
commit 77feb86a85
21 changed files with 262 additions and 9 deletions
@@ -4544,6 +4544,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.DECLARATION_CANT_BE_INLINED_DEPRECATION.errorFactory) { firDiagnostic ->
DeclarationCantBeInlinedDeprecationErrorImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.DECLARATION_CANT_BE_INLINED_DEPRECATION.warningFactory) { firDiagnostic ->
DeclarationCantBeInlinedDeprecationWarningImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.OVERRIDE_BY_INLINE) { firDiagnostic ->
OverrideByInlineImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -4582,6 +4594,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.INLINE_PROPERTY_WITH_BACKING_FIELD_DEPRECATION.errorFactory) { firDiagnostic ->
InlinePropertyWithBackingFieldDeprecationErrorImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.INLINE_PROPERTY_WITH_BACKING_FIELD_DEPRECATION.warningFactory) { firDiagnostic ->
InlinePropertyWithBackingFieldDeprecationWarningImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.ILLEGAL_INLINE_PARAMETER_MODIFIER) { firDiagnostic ->
IllegalInlineParameterModifierImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -3173,6 +3173,14 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = DeclarationCantBeInlined::class
}
interface DeclarationCantBeInlinedDeprecationError : KtFirDiagnostic<KtDeclaration> {
override val diagnosticClass get() = DeclarationCantBeInlinedDeprecationError::class
}
interface DeclarationCantBeInlinedDeprecationWarning : KtFirDiagnostic<KtDeclaration> {
override val diagnosticClass get() = DeclarationCantBeInlinedDeprecationWarning::class
}
interface OverrideByInline : KtFirDiagnostic<KtDeclaration> {
override val diagnosticClass get() = OverrideByInline::class
}
@@ -3199,6 +3207,14 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = InlinePropertyWithBackingField::class
}
interface InlinePropertyWithBackingFieldDeprecationError : KtFirDiagnostic<KtDeclaration> {
override val diagnosticClass get() = InlinePropertyWithBackingFieldDeprecationError::class
}
interface InlinePropertyWithBackingFieldDeprecationWarning : KtFirDiagnostic<KtDeclaration> {
override val diagnosticClass get() = InlinePropertyWithBackingFieldDeprecationWarning::class
}
interface IllegalInlineParameterModifier : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = IllegalInlineParameterModifier::class
}
@@ -3826,6 +3826,16 @@ internal class DeclarationCantBeInlinedImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.DeclarationCantBeInlined
internal class DeclarationCantBeInlinedDeprecationErrorImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.DeclarationCantBeInlinedDeprecationError
internal class DeclarationCantBeInlinedDeprecationWarningImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.DeclarationCantBeInlinedDeprecationWarning
internal class OverrideByInlineImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
@@ -3858,6 +3868,16 @@ internal class InlinePropertyWithBackingFieldImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.InlinePropertyWithBackingField
internal class InlinePropertyWithBackingFieldDeprecationErrorImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.InlinePropertyWithBackingFieldDeprecationError
internal class InlinePropertyWithBackingFieldDeprecationWarningImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.InlinePropertyWithBackingFieldDeprecationWarning
internal class IllegalInlineParameterModifierImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
@@ -507,6 +507,18 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/initializedAfterRethrow.kt");
}
@Test
@TestMetadata("inlineConstructorParameter.kt")
public void testInlineConstructorParameter() throws Exception {
runTest("compiler/testData/diagnostics/tests/inlineConstructorParameter.kt");
}
@Test
@TestMetadata("inlineConstructorParameter_on.kt")
public void testInlineConstructorParameter_on() throws Exception {
runTest("compiler/testData/diagnostics/tests/inlineConstructorParameter_on.kt");
}
@Test
@TestMetadata("inlineDeprecationsOnImplicitCalls.kt")
public void testInlineDeprecationsOnImplicitCalls() throws Exception {
@@ -507,6 +507,18 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/initializedAfterRethrow.kt");
}
@Test
@TestMetadata("inlineConstructorParameter.kt")
public void testInlineConstructorParameter() throws Exception {
runTest("compiler/testData/diagnostics/tests/inlineConstructorParameter.kt");
}
@Test
@TestMetadata("inlineConstructorParameter_on.kt")
public void testInlineConstructorParameter_on() throws Exception {
runTest("compiler/testData/diagnostics/tests/inlineConstructorParameter_on.kt");
}
@Test
@TestMetadata("inlineDeprecationsOnImplicitCalls.kt")
public void testInlineDeprecationsOnImplicitCalls() throws Exception {