From b36f8ed8f566e8628a708e0b623fbd78d83f1c38 Mon Sep 17 00:00:00 2001 From: Andrey Zinovyev Date: Mon, 21 Jun 2021 15:43:01 +0300 Subject: [PATCH] [FIR] DATA_CLASS_OVERRIDE_CONFLICT diagnostic --- .../diagnostics/FirDiagnosticsList.kt | 5 +++ .../diagnostics/model/DiagnosticData.kt | 1 + .../fir/analysis/diagnostics/FirErrors.kt | 1 + .../declaration/FirOverrideChecker.kt | 14 +++++++ .../diagnostics/FirDefaultErrorMessages.kt | 7 ++++ .../LightTreePositioningStrategies.kt | 3 ++ .../SourceElementPositioningStrategies.kt | 5 +++ .../diagnostics/PositioningStrategies.kt | 3 ++ .../tests/dataClasses/dataInheritance.fir.kt | 13 ------ .../tests/dataClasses/dataInheritance.kt | 1 + ...plementTraitWhichHasFinalComponent1.fir.kt | 2 +- .../overrides.fir.kt | 8 ++-- .../sameSuperTraitDifferentBounds.fir.kt | 1 - .../noDataClassInheritance.fir.kt | 2 +- .../diagnostics/KtFirDataClassConverters.kt | 24 +++++++---- .../api/fir/diagnostics/KtFirDiagnostics.kt | 6 +++ .../fir/diagnostics/KtFirDiagnosticsImpl.kt | 41 +++++++++++-------- 17 files changed, 93 insertions(+), 44 deletions(-) delete mode 100644 compiler/testData/diagnostics/tests/dataClasses/dataInheritance.fir.kt diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 538995880b8..110807ab55d 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -576,6 +576,11 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { parameter>("baseMember") } + val DATA_CLASS_OVERRIDE_CONFLICT by error(PositioningStrategy.DATA_MODIFIER) { + parameter>("overridingMember") + parameter>("baseMember") + } + val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error(PositioningStrategy.VISIBILITY_MODIFIER) { parameter("overridingVisibility") parameter("overridden") diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/model/DiagnosticData.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/model/DiagnosticData.kt index 355567c5bcf..31e6060b984 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/model/DiagnosticData.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/model/DiagnosticData.kt @@ -74,6 +74,7 @@ enum class PositioningStrategy(private val strategy: String? = null) { ANNOTATION_USE_SITE, ASSIGNMENT_LHS, IMPORT_LAST_NAME, + DATA_MODIFIER, ; diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 672ba081550..8583e7c66ac 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -345,6 +345,7 @@ object FirErrors { // overrides val NOTHING_TO_OVERRIDE by error1(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) val CANNOT_OVERRIDE_INVISIBLE_MEMBER by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) + val DATA_CLASS_OVERRIDE_CONFLICT by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DATA_MODIFIER) val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error3(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val CANNOT_CHANGE_ACCESS_PRIVILEGE by error3(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val OVERRIDING_FINAL_MEMBER by error2(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt index 7e20a5b0bd7..aa98fe42e7e 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt @@ -202,6 +202,20 @@ object FirOverrideChecker : FirClassChecker() { } val kind = member.source?.kind // Only report if the current member has real source or it's a member property declared inside the primary constructor. + + if (kind is FirFakeSourceElementKind.DataClassGeneratedMembers) { + overriddenMemberSymbols.find { (it.fir as? FirCallableMemberDeclaration<*>)?.isFinal == true }?.let { base -> + reporter.reportOn( + containingClass.source, + FirErrors.DATA_CLASS_OVERRIDE_CONFLICT, + member, + base.fir, + context + ) + } + return + } + if (kind !is FirRealSourceElementKind && kind !is FirFakeSourceElementKind.PropertyFromParameter) return val overridden = overriddenMemberSymbols.first().originalOrSelf() diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt index 5c9fe055300..1d6b9960dd9 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt @@ -95,6 +95,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.CYCLIC_CONSTRUCTO import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.CYCLIC_GENERIC_UPPER_BOUND import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.CYCLIC_INHERITANCE_HIERARCHY import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_CLASS_NOT_PROPERTY_PARAMETER +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_CLASS_OVERRIDE_CONFLICT import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_CLASS_VARARG_PARAMETER import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_CLASS_WITHOUT_PARAMETERS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DELEGATED_PROPERTY_INSIDE_INLINE_CLASS @@ -942,6 +943,12 @@ class FirDefaultErrorMessages { VIRTUAL_MEMBER_HIDDEN, "''{0}'' hides member of supertype ''{1}'' and needs ''override'' modifier", DECLARATION_NAME, DECLARATION_NAME ) + map.put( + DATA_CLASS_OVERRIDE_CONFLICT, + "Function ''{0}'' generated for the data class conflicts with member of supertype ''{1}''", + FQ_NAMES_IN_TYPES, + FQ_NAMES_IN_TYPES + ) map.put( GENERIC_THROWABLE_SUBCLASS, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt index 742422c9b9a..4a8e1b1f17c 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt @@ -354,6 +354,9 @@ object LightTreePositioningStrategies { val INNER_MODIFIER: LightTreePositioningStrategy = ModifierSetBasedLightTreePositioningStrategy(TokenSet.create(KtTokens.INNER_KEYWORD)) + val DATA_MODIFIER: LightTreePositioningStrategy = + ModifierSetBasedLightTreePositioningStrategy(TokenSet.create(KtTokens.DATA_KEYWORD)) + val OPERATOR: LightTreePositioningStrategy = object : LightTreePositioningStrategy() { override fun mark( node: LighterASTNode, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/SourceElementPositioningStrategies.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/SourceElementPositioningStrategies.kt index 9e915415ec0..329aba4783f 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/SourceElementPositioningStrategies.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/SourceElementPositioningStrategies.kt @@ -118,6 +118,11 @@ object SourceElementPositioningStrategies { PositioningStrategies.SUSPEND_MODIFIER ) + val DATA_MODIFIER = SourceElementPositioningStrategy( + LightTreePositioningStrategies.DATA_MODIFIER, + PositioningStrategies.DATA_MODIFIER + ) + val OPERATOR = SourceElementPositioningStrategy( LightTreePositioningStrategies.OPERATOR, PositioningStrategies.OPERATOR diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt index 7b4dcb8dad2..eaea5fa9b83 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt @@ -374,6 +374,9 @@ object PositioningStrategies { @JvmField val SUSPEND_MODIFIER: PositioningStrategy = modifierSetPosition(KtTokens.SUSPEND_KEYWORD) + @JvmField + val DATA_MODIFIER: PositioningStrategy = modifierSetPosition(KtTokens.DATA_KEYWORD) + @JvmField val FOR_REDECLARATION: PositioningStrategy = object : PositioningStrategy() { override fun mark(element: PsiElement): List { diff --git a/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.fir.kt b/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.fir.kt deleted file mode 100644 index 33e4b49b3dd..00000000000 --- a/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.fir.kt +++ /dev/null @@ -1,13 +0,0 @@ -interface SuperInterface - -open class SuperClass - -abstract data class Base(val x: Int) - -class Derived: Base(42) - -data class Nasty(val z: Int, val y: Int): Base(z) - -data class Complex(val y: Int): SuperInterface, SuperClass() - -data class SubData(val sss: String) : Complex(42) diff --git a/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt b/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt index 7b00d6a0a12..b81a09e9959 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL interface SuperInterface open class SuperClass diff --git a/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.fir.kt b/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.fir.kt index 107969b1faf..8efc12249f6 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.fir.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.fir.kt @@ -2,4 +2,4 @@ interface T { final fun component1(): Int = 42 } -data class A(val x: Int) : T +data class A(val x: Int) : T diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNull/overrides.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNull/overrides.fir.kt index 90b7b4cd4bc..0a9518edf2e 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNull/overrides.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNull/overrides.fir.kt @@ -5,10 +5,10 @@ interface A { fun bar(x: T!!): T!! } -//interface B : A { -// override fun foo(x: T1): T1 -// override fun bar(x: T1!!): T1!! -//} +interface B : A { + override fun foo(x: T1): T1 + override fun bar(x: T1!!): T1!! +} interface C : A { override fun foo(x: T2!!): T2!! diff --git a/compiler/testData/diagnostics/tests/multimodule/duplicateSuper/sameSuperTraitDifferentBounds.fir.kt b/compiler/testData/diagnostics/tests/multimodule/duplicateSuper/sameSuperTraitDifferentBounds.fir.kt index a70bb847133..9223cf8d466 100644 --- a/compiler/testData/diagnostics/tests/multimodule/duplicateSuper/sameSuperTraitDifferentBounds.fir.kt +++ b/compiler/testData/diagnostics/tests/multimodule/duplicateSuper/sameSuperTraitDifferentBounds.fir.kt @@ -1,4 +1,3 @@ -// fir reports NOTHING_TO_OVERRIDE because it keeps only one definition of p.Base // MODULE: m1 // FILE: x.kt package p diff --git a/compiler/testData/diagnostics/tests/sourceCompatibility/noDataClassInheritance.fir.kt b/compiler/testData/diagnostics/tests/sourceCompatibility/noDataClassInheritance.fir.kt index b8133554e39..fa1f9eef8b1 100644 --- a/compiler/testData/diagnostics/tests/sourceCompatibility/noDataClassInheritance.fir.kt +++ b/compiler/testData/diagnostics/tests/sourceCompatibility/noDataClassInheritance.fir.kt @@ -8,7 +8,7 @@ open class NotAllowed class Derived: Base(42) -data class Nasty(val z: Int, val y: Int): Base(z) +data class Nasty(val z: Int, val y: Int): Base(z) data class Complex(val y: Int): Allowed, NotAllowed() diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt index 69c835560a2..1cdebdd264c 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -1630,7 +1630,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert CannotOverrideInvisibleMemberImpl( firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, + token, + ) + } + add(FirErrors.DATA_CLASS_OVERRIDE_CONFLICT) { firDiagnostic -> + DataClassOverrideConflictImpl( + firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), + firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), + firDiagnostic as FirPsiDiagnostic, token, ) } @@ -1664,7 +1672,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert ReturnTypeMismatchOnInheritanceImpl( firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, token, ) } @@ -1672,7 +1680,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert PropertyTypeMismatchOnInheritanceImpl( firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, token, ) } @@ -1680,7 +1688,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert VarTypeMismatchOnInheritanceImpl( firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, token, ) } @@ -1688,7 +1696,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert ReturnTypeMismatchByDelegationImpl( firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, token, ) } @@ -1696,7 +1704,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert PropertyTypeMismatchByDelegationImpl( firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, token, ) } @@ -1704,7 +1712,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert VarOverriddenByValByDelegationImpl( firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, token, ) } @@ -1713,7 +1721,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert firDiagnostic.a.map { firCallableDeclaration -> firSymbolBuilder.callableBuilder.buildCallableSymbol(firCallableDeclaration as FirCallableDeclaration) }, - firDiagnostic as FirPsiDiagnostic<*>, + firDiagnostic as FirPsiDiagnostic, token, ) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt index 7c39bed8a00..55f4dfc38e6 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt @@ -1157,6 +1157,12 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { abstract val baseMember: KtCallableSymbol } + abstract class DataClassOverrideConflict : KtFirDiagnostic() { + override val diagnosticClass get() = DataClassOverrideConflict::class + abstract val overridingMember: KtCallableSymbol + abstract val baseMember: KtCallableSymbol + } + abstract class CannotWeakenAccessPrivilege : KtFirDiagnostic() { override val diagnosticClass get() = CannotWeakenAccessPrivilege::class abstract val overridingVisibility: Visibility diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index abcfd185c97..9680992c726 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -1857,10 +1857,19 @@ internal class NothingToOverrideImpl( internal class CannotOverrideInvisibleMemberImpl( override val overridingMember: KtCallableSymbol, override val baseMember: KtCallableSymbol, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.CannotOverrideInvisibleMember(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) +} + +internal class DataClassOverrideConflictImpl( + override val overridingMember: KtCallableSymbol, + override val baseMember: KtCallableSymbol, + firDiagnostic: FirPsiDiagnostic, + override val token: ValidityToken, +) : KtFirDiagnostic.DataClassOverrideConflict(), KtAbstractFirDiagnostic { + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class CannotWeakenAccessPrivilegeImpl( @@ -1895,63 +1904,63 @@ internal class OverridingFinalMemberImpl( internal class ReturnTypeMismatchOnInheritanceImpl( override val conflictingDeclaration1: KtCallableSymbol, override val conflictingDeclaration2: KtCallableSymbol, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.ReturnTypeMismatchOnInheritance(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class PropertyTypeMismatchOnInheritanceImpl( override val conflictingDeclaration1: KtCallableSymbol, override val conflictingDeclaration2: KtCallableSymbol, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.PropertyTypeMismatchOnInheritance(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class VarTypeMismatchOnInheritanceImpl( override val conflictingDeclaration1: KtCallableSymbol, override val conflictingDeclaration2: KtCallableSymbol, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.VarTypeMismatchOnInheritance(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class ReturnTypeMismatchByDelegationImpl( override val delegateDeclaration: KtCallableSymbol, override val baseDeclaration: KtCallableSymbol, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.ReturnTypeMismatchByDelegation(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class PropertyTypeMismatchByDelegationImpl( override val delegateDeclaration: KtCallableSymbol, override val baseDeclaration: KtCallableSymbol, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.PropertyTypeMismatchByDelegation(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class VarOverriddenByValByDelegationImpl( override val delegateDeclaration: KtCallableSymbol, override val baseDeclaration: KtCallableSymbol, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.VarOverriddenByValByDelegation(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class ConflictingInheritedMembersImpl( override val conflictingDeclarations: List, - firDiagnostic: FirPsiDiagnostic<*>, + firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.ConflictingInheritedMembers(), KtAbstractFirDiagnostic { - override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } internal class AbstractMemberNotImplementedImpl(