[FIR] DATA_CLASS_OVERRIDE_CONFLICT diagnostic

This commit is contained in:
Andrey Zinovyev
2021-06-21 15:43:01 +03:00
committed by teamcityserver
parent b44785c24e
commit b36f8ed8f5
17 changed files with 93 additions and 44 deletions
@@ -576,6 +576,11 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
parameter<FirCallableDeclaration<*>>("baseMember") parameter<FirCallableDeclaration<*>>("baseMember")
} }
val DATA_CLASS_OVERRIDE_CONFLICT by error<KtClassOrObject>(PositioningStrategy.DATA_MODIFIER) {
parameter<FirCallableDeclaration<*>>("overridingMember")
parameter<FirCallableDeclaration<*>>("baseMember")
}
val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error<KtModifierListOwner>(PositioningStrategy.VISIBILITY_MODIFIER) { val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error<KtModifierListOwner>(PositioningStrategy.VISIBILITY_MODIFIER) {
parameter<Visibility>("overridingVisibility") parameter<Visibility>("overridingVisibility")
parameter<FirCallableDeclaration>("overridden") parameter<FirCallableDeclaration>("overridden")
@@ -74,6 +74,7 @@ enum class PositioningStrategy(private val strategy: String? = null) {
ANNOTATION_USE_SITE, ANNOTATION_USE_SITE,
ASSIGNMENT_LHS, ASSIGNMENT_LHS,
IMPORT_LAST_NAME, IMPORT_LAST_NAME,
DATA_MODIFIER,
; ;
@@ -345,6 +345,7 @@ object FirErrors {
// overrides // overrides
val NOTHING_TO_OVERRIDE by error1<KtModifierListOwner, FirMemberDeclaration>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) val NOTHING_TO_OVERRIDE by error1<KtModifierListOwner, FirMemberDeclaration>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER)
val CANNOT_OVERRIDE_INVISIBLE_MEMBER by error2<KtNamedDeclaration, FirCallableDeclaration<*>, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) val CANNOT_OVERRIDE_INVISIBLE_MEMBER by error2<KtNamedDeclaration, FirCallableDeclaration<*>, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER)
val DATA_CLASS_OVERRIDE_CONFLICT by error2<KtClassOrObject, FirCallableDeclaration<*>, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DATA_MODIFIER)
val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error3<KtModifierListOwner, Visibility, FirCallableDeclaration, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error3<KtModifierListOwner, Visibility, FirCallableDeclaration, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER)
val CANNOT_CHANGE_ACCESS_PRIVILEGE by error3<KtModifierListOwner, Visibility, FirCallableDeclaration, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) val CANNOT_CHANGE_ACCESS_PRIVILEGE by error3<KtModifierListOwner, Visibility, FirCallableDeclaration, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER)
val OVERRIDING_FINAL_MEMBER by error2<KtNamedDeclaration, FirCallableDeclaration, Name>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) val OVERRIDING_FINAL_MEMBER by error2<KtNamedDeclaration, FirCallableDeclaration, Name>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER)
@@ -202,6 +202,20 @@ object FirOverrideChecker : FirClassChecker() {
} }
val kind = member.source?.kind 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. // 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 if (kind !is FirRealSourceElementKind && kind !is FirFakeSourceElementKind.PropertyFromParameter) return
val overridden = overriddenMemberSymbols.first().originalOrSelf() val overridden = overriddenMemberSymbols.first().originalOrSelf()
@@ -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_GENERIC_UPPER_BOUND
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.CYCLIC_INHERITANCE_HIERARCHY 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_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_VARARG_PARAMETER
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_CLASS_WITHOUT_PARAMETERS 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 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, VIRTUAL_MEMBER_HIDDEN, "''{0}'' hides member of supertype ''{1}'' and needs ''override'' modifier", DECLARATION_NAME,
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( map.put(
GENERIC_THROWABLE_SUBCLASS, GENERIC_THROWABLE_SUBCLASS,
@@ -354,6 +354,9 @@ object LightTreePositioningStrategies {
val INNER_MODIFIER: LightTreePositioningStrategy = val INNER_MODIFIER: LightTreePositioningStrategy =
ModifierSetBasedLightTreePositioningStrategy(TokenSet.create(KtTokens.INNER_KEYWORD)) ModifierSetBasedLightTreePositioningStrategy(TokenSet.create(KtTokens.INNER_KEYWORD))
val DATA_MODIFIER: LightTreePositioningStrategy =
ModifierSetBasedLightTreePositioningStrategy(TokenSet.create(KtTokens.DATA_KEYWORD))
val OPERATOR: LightTreePositioningStrategy = object : LightTreePositioningStrategy() { val OPERATOR: LightTreePositioningStrategy = object : LightTreePositioningStrategy() {
override fun mark( override fun mark(
node: LighterASTNode, node: LighterASTNode,
@@ -118,6 +118,11 @@ object SourceElementPositioningStrategies {
PositioningStrategies.SUSPEND_MODIFIER PositioningStrategies.SUSPEND_MODIFIER
) )
val DATA_MODIFIER = SourceElementPositioningStrategy(
LightTreePositioningStrategies.DATA_MODIFIER,
PositioningStrategies.DATA_MODIFIER
)
val OPERATOR = SourceElementPositioningStrategy( val OPERATOR = SourceElementPositioningStrategy(
LightTreePositioningStrategies.OPERATOR, LightTreePositioningStrategies.OPERATOR,
PositioningStrategies.OPERATOR PositioningStrategies.OPERATOR
@@ -374,6 +374,9 @@ object PositioningStrategies {
@JvmField @JvmField
val SUSPEND_MODIFIER: PositioningStrategy<KtModifierListOwner> = modifierSetPosition(KtTokens.SUSPEND_KEYWORD) val SUSPEND_MODIFIER: PositioningStrategy<KtModifierListOwner> = modifierSetPosition(KtTokens.SUSPEND_KEYWORD)
@JvmField
val DATA_MODIFIER: PositioningStrategy<KtModifierListOwner> = modifierSetPosition(KtTokens.DATA_KEYWORD)
@JvmField @JvmField
val FOR_REDECLARATION: PositioningStrategy<PsiElement> = object : PositioningStrategy<PsiElement>() { val FOR_REDECLARATION: PositioningStrategy<PsiElement> = object : PositioningStrategy<PsiElement>() {
override fun mark(element: PsiElement): List<TextRange> { override fun mark(element: PsiElement): List<TextRange> {
@@ -1,13 +0,0 @@
interface SuperInterface
open class SuperClass
<!INCOMPATIBLE_MODIFIERS!>abstract<!> <!INCOMPATIBLE_MODIFIERS!>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) : <!FINAL_SUPERTYPE!>Complex<!>(42)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface SuperInterface interface SuperInterface
open class SuperClass open class SuperClass
@@ -2,4 +2,4 @@ interface T {
final fun component1(): Int = 42 final fun component1(): Int = 42
} }
data class A(val x: Int) : T <!DATA_CLASS_OVERRIDE_CONFLICT!>data<!> class A(val x: Int) : T
@@ -5,10 +5,10 @@ interface A<T> {
fun bar(x: T!!): T!! fun bar(x: T!!): T!!
} }
//interface B<T1> : A<T1> { interface B<T1> : A<T1> {
// override fun foo(x: T1): T1 override fun foo(x: T1): T1
// override fun bar(x: T1!!): T1!! override fun bar(x: T1!!): T1!!
//} }
interface C<T2> : A<T2> { interface C<T2> : A<T2> {
override fun foo(x: T2!!): T2!! override fun foo(x: T2!!): T2!!
@@ -1,4 +1,3 @@
// fir reports NOTHING_TO_OVERRIDE because it keeps only one definition of p.Base
// MODULE: m1 // MODULE: m1
// FILE: x.kt // FILE: x.kt
package p package p
@@ -8,7 +8,7 @@ open class NotAllowed
class Derived: Base(42) class Derived: Base(42)
data class Nasty(val z: Int, val y: Int): Base(z) <!DATA_CLASS_OVERRIDE_CONFLICT!>data<!> class Nasty(val z: Int, val y: Int): Base(z)
data class Complex(val y: Int): Allowed, NotAllowed() data class Complex(val y: Int): Allowed, NotAllowed()
@@ -1630,7 +1630,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
CannotOverrideInvisibleMemberImpl( CannotOverrideInvisibleMemberImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b 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, token,
) )
} }
@@ -1664,7 +1672,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
ReturnTypeMismatchOnInheritanceImpl( ReturnTypeMismatchOnInheritanceImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>, firDiagnostic as FirPsiDiagnostic,
token, token,
) )
} }
@@ -1672,7 +1680,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
PropertyTypeMismatchOnInheritanceImpl( PropertyTypeMismatchOnInheritanceImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>, firDiagnostic as FirPsiDiagnostic,
token, token,
) )
} }
@@ -1680,7 +1688,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
VarTypeMismatchOnInheritanceImpl( VarTypeMismatchOnInheritanceImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>, firDiagnostic as FirPsiDiagnostic,
token, token,
) )
} }
@@ -1688,7 +1696,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
ReturnTypeMismatchByDelegationImpl( ReturnTypeMismatchByDelegationImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>, firDiagnostic as FirPsiDiagnostic,
token, token,
) )
} }
@@ -1696,7 +1704,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
PropertyTypeMismatchByDelegationImpl( PropertyTypeMismatchByDelegationImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>, firDiagnostic as FirPsiDiagnostic,
token, token,
) )
} }
@@ -1704,7 +1712,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
VarOverriddenByValByDelegationImpl( VarOverriddenByValByDelegationImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a as FirCallableDeclaration),
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration), firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b as FirCallableDeclaration),
firDiagnostic as FirPsiDiagnostic<*>, firDiagnostic as FirPsiDiagnostic,
token, token,
) )
} }
@@ -1713,7 +1721,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
firDiagnostic.a.map { firCallableDeclaration -> firDiagnostic.a.map { firCallableDeclaration ->
firSymbolBuilder.callableBuilder.buildCallableSymbol(firCallableDeclaration as FirCallableDeclaration) firSymbolBuilder.callableBuilder.buildCallableSymbol(firCallableDeclaration as FirCallableDeclaration)
}, },
firDiagnostic as FirPsiDiagnostic<*>, firDiagnostic as FirPsiDiagnostic,
token, token,
) )
} }
@@ -1157,6 +1157,12 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val baseMember: KtCallableSymbol abstract val baseMember: KtCallableSymbol
} }
abstract class DataClassOverrideConflict : KtFirDiagnostic<KtClassOrObject>() {
override val diagnosticClass get() = DataClassOverrideConflict::class
abstract val overridingMember: KtCallableSymbol
abstract val baseMember: KtCallableSymbol
}
abstract class CannotWeakenAccessPrivilege : KtFirDiagnostic<KtModifierListOwner>() { abstract class CannotWeakenAccessPrivilege : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = CannotWeakenAccessPrivilege::class override val diagnosticClass get() = CannotWeakenAccessPrivilege::class
abstract val overridingVisibility: Visibility abstract val overridingVisibility: Visibility
@@ -1857,10 +1857,19 @@ internal class NothingToOverrideImpl(
internal class CannotOverrideInvisibleMemberImpl( internal class CannotOverrideInvisibleMemberImpl(
override val overridingMember: KtCallableSymbol, override val overridingMember: KtCallableSymbol,
override val baseMember: KtCallableSymbol, override val baseMember: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.CannotOverrideInvisibleMember(), KtAbstractFirDiagnostic<KtNamedDeclaration> { ) : KtFirDiagnostic.CannotOverrideInvisibleMember(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
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<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class CannotWeakenAccessPrivilegeImpl( internal class CannotWeakenAccessPrivilegeImpl(
@@ -1895,63 +1904,63 @@ internal class OverridingFinalMemberImpl(
internal class ReturnTypeMismatchOnInheritanceImpl( internal class ReturnTypeMismatchOnInheritanceImpl(
override val conflictingDeclaration1: KtCallableSymbol, override val conflictingDeclaration1: KtCallableSymbol,
override val conflictingDeclaration2: KtCallableSymbol, override val conflictingDeclaration2: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.ReturnTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> { ) : KtFirDiagnostic.ReturnTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class PropertyTypeMismatchOnInheritanceImpl( internal class PropertyTypeMismatchOnInheritanceImpl(
override val conflictingDeclaration1: KtCallableSymbol, override val conflictingDeclaration1: KtCallableSymbol,
override val conflictingDeclaration2: KtCallableSymbol, override val conflictingDeclaration2: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.PropertyTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> { ) : KtFirDiagnostic.PropertyTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class VarTypeMismatchOnInheritanceImpl( internal class VarTypeMismatchOnInheritanceImpl(
override val conflictingDeclaration1: KtCallableSymbol, override val conflictingDeclaration1: KtCallableSymbol,
override val conflictingDeclaration2: KtCallableSymbol, override val conflictingDeclaration2: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.VarTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> { ) : KtFirDiagnostic.VarTypeMismatchOnInheritance(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class ReturnTypeMismatchByDelegationImpl( internal class ReturnTypeMismatchByDelegationImpl(
override val delegateDeclaration: KtCallableSymbol, override val delegateDeclaration: KtCallableSymbol,
override val baseDeclaration: KtCallableSymbol, override val baseDeclaration: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.ReturnTypeMismatchByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> { ) : KtFirDiagnostic.ReturnTypeMismatchByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class PropertyTypeMismatchByDelegationImpl( internal class PropertyTypeMismatchByDelegationImpl(
override val delegateDeclaration: KtCallableSymbol, override val delegateDeclaration: KtCallableSymbol,
override val baseDeclaration: KtCallableSymbol, override val baseDeclaration: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.PropertyTypeMismatchByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> { ) : KtFirDiagnostic.PropertyTypeMismatchByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class VarOverriddenByValByDelegationImpl( internal class VarOverriddenByValByDelegationImpl(
override val delegateDeclaration: KtCallableSymbol, override val delegateDeclaration: KtCallableSymbol,
override val baseDeclaration: KtCallableSymbol, override val baseDeclaration: KtCallableSymbol,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.VarOverriddenByValByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> { ) : KtFirDiagnostic.VarOverriddenByValByDelegation(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class ConflictingInheritedMembersImpl( internal class ConflictingInheritedMembersImpl(
override val conflictingDeclarations: List<KtCallableSymbol>, override val conflictingDeclarations: List<KtCallableSymbol>,
firDiagnostic: FirPsiDiagnostic<*>, firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken, override val token: ValidityToken,
) : KtFirDiagnostic.ConflictingInheritedMembers(), KtAbstractFirDiagnostic<KtClassOrObject> { ) : KtFirDiagnostic.ConflictingInheritedMembers(), KtAbstractFirDiagnostic<KtClassOrObject> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
} }
internal class AbstractMemberNotImplementedImpl( internal class AbstractMemberNotImplementedImpl(