[FIR] Add expect actual checker

This commit is contained in:
Dmitriy Novozhilov
2021-05-24 16:44:23 +03:00
committed by teamcityserver
parent faadb08174
commit c3060e861f
45 changed files with 1687 additions and 80 deletions
@@ -5,6 +5,7 @@ plugins {
}
dependencies {
implementation(project(":compiler:resolution.common"))
implementation(project(":compiler:fir:tree"))
implementation(project(":compiler:fir:tree:tree-generator"))
implementation(project(":compiler:fir:checkers:checkers-component-generator"))
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.diagnostics.WhenMissingCase
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.DiagnosticData
import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.DiagnosticList
import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.DiagnosticParameter
@@ -30,6 +31,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
import org.jetbrains.kotlin.types.Variance
import kotlin.reflect.KClass
import kotlin.reflect.KType
@@ -296,6 +298,8 @@ private object FirToKtConversionCreator {
LanguageVersionSettings::class,
Variance::class,
FqName::class,
FirModuleData::class,
ExpectActualCompatibility.Incompatible::class,
)
private val KType.kClass: KClass<*>
@@ -26,10 +26,14 @@ import org.jetbrains.kotlin.psi.KtBinaryExpressionWithTypeRHS
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtConstructor
import org.jetbrains.kotlin.psi.KtConstructorDelegationCall
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtDeclarationWithBody
import org.jetbrains.kotlin.psi.KtDelegatedSuperTypeEntry
import org.jetbrains.kotlin.psi.KtDestructuringDeclaration
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtEnumEntry
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression
@@ -2129,12 +2133,6 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.EXPECTED_PRIVATE_DECLARATION) { firDiagnostic ->
ExpectedPrivateDeclarationImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.VAL_WITH_SETTER) { firDiagnostic ->
ValWithSetterImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -2232,6 +2230,30 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.EXPECTED_CLASS_CONSTRUCTOR_DELEGATION_CALL) { firDiagnostic ->
ExpectedClassConstructorDelegationCallImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER) { firDiagnostic ->
ExpectedClassConstructorPropertyParameterImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_ENUM_CONSTRUCTOR) { firDiagnostic ->
ExpectedEnumConstructorImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_ENUM_ENTRY_WITH_BODY) { firDiagnostic ->
ExpectedEnumEntryWithBodyImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_PROPERTY_INITIALIZER) { firDiagnostic ->
ExpectedPropertyInitializerImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -2250,6 +2272,138 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.SUPERTYPE_INITIALIZED_IN_EXPECTED_CLASS) { firDiagnostic ->
SupertypeInitializedInExpectedClassImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_PRIVATE_DECLARATION) { firDiagnostic ->
ExpectedPrivateDeclarationImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.IMPLEMENTATION_BY_DELEGATION_IN_EXPECT_CLASS) { firDiagnostic ->
ImplementationByDelegationInExpectClassImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_TYPE_ALIAS_NOT_TO_CLASS) { firDiagnostic ->
ActualTypeAliasNotToClassImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_TYPE_ALIAS_TO_CLASS_WITH_DECLARATION_SITE_VARIANCE) { firDiagnostic ->
ActualTypeAliasToClassWithDeclarationSiteVarianceImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE) { firDiagnostic ->
ActualTypeAliasWithUseSiteVarianceImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_TYPE_ALIAS_WITH_COMPLEX_SUBSTITUTION) { firDiagnostic ->
ActualTypeAliasWithComplexSubstitutionImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS) { firDiagnostic ->
ActualFunctionWithDefaultArgumentsImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE) { firDiagnostic ->
ActualAnnotationConflictingDefaultArgumentValueImpl(
firSymbolBuilder.variableLikeBuilder.buildVariableLikeSymbol(firDiagnostic.a.fir),
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_FUNCTION_SOURCE_WITH_DEFAULT_ARGUMENTS_NOT_FOUND) { firDiagnostic ->
ExpectedFunctionSourceWithDefaultArgumentsNotFoundImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.NO_ACTUAL_FOR_EXPECT) { firDiagnostic ->
NoActualForExpectImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir),
firDiagnostic.b,
firDiagnostic.c.mapKeys { (incompatible, _) ->
incompatible
}.mapValues { (_, collection) ->
collection.map { firBasedSymbol ->
firSymbolBuilder.buildSymbol(firBasedSymbol.fir)
}
},
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_WITHOUT_EXPECT) { firDiagnostic ->
ActualWithoutExpectImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir),
firDiagnostic.b.mapKeys { (incompatible, _) ->
incompatible
}.mapValues { (_, collection) ->
collection.map { firBasedSymbol ->
firSymbolBuilder.buildSymbol(firBasedSymbol.fir)
}
},
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.AMBIGUOUS_ACTUALS) { firDiagnostic ->
AmbiguousActualsImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir),
firDiagnostic.b.map { firBasedSymbol ->
firSymbolBuilder.buildSymbol(firBasedSymbol.fir)
},
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.AMBIGUOUS_EXPECTS) { firDiagnostic ->
AmbiguousExpectsImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir),
firDiagnostic.b.map { firModuleData ->
firModuleData
},
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS) { firDiagnostic ->
NoActualClassMemberForExpectedClassImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir),
firDiagnostic.b.map { pair ->
firSymbolBuilder.buildSymbol(pair.first.fir) to pair.second.mapKeys { (incompatible, _) ->
incompatible
}.mapValues { (_, collection) ->
collection.map { firBasedSymbol ->
firSymbolBuilder.buildSymbol(firBasedSymbol.fir)
}
}
},
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ACTUAL_MISSING) { firDiagnostic ->
ActualMissingImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION) { firDiagnostic ->
InitializerRequiredForDestructuringDeclarationImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -13,6 +13,8 @@ import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.diagnostics.WhenMissingCase
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.idea.frontend.api.diagnostics.KtDiagnosticWithPsi
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassLikeSymbol
@@ -33,10 +35,14 @@ import org.jetbrains.kotlin.psi.KtBinaryExpressionWithTypeRHS
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtConstructor
import org.jetbrains.kotlin.psi.KtConstructorDelegationCall
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtDeclarationWithBody
import org.jetbrains.kotlin.psi.KtDelegatedSuperTypeEntry
import org.jetbrains.kotlin.psi.KtDestructuringDeclaration
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtEnumEntry
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression
@@ -59,6 +65,7 @@ import org.jetbrains.kotlin.psi.KtWhenCondition
import org.jetbrains.kotlin.psi.KtWhenEntry
import org.jetbrains.kotlin.psi.KtWhenExpression
import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility.Incompatible
import org.jetbrains.kotlin.types.Variance
/*
@@ -1504,10 +1511,6 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = PrivateSetterForOpenProperty::class
}
abstract class ExpectedPrivateDeclaration : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = ExpectedPrivateDeclaration::class
}
abstract class ValWithSetter : KtFirDiagnostic<KtPropertyAccessor>() {
override val diagnosticClass get() = ValWithSetter::class
}
@@ -1575,6 +1578,22 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ExpectedDeclarationWithBody::class
}
abstract class ExpectedClassConstructorDelegationCall : KtFirDiagnostic<KtConstructorDelegationCall>() {
override val diagnosticClass get() = ExpectedClassConstructorDelegationCall::class
}
abstract class ExpectedClassConstructorPropertyParameter : KtFirDiagnostic<KtParameter>() {
override val diagnosticClass get() = ExpectedClassConstructorPropertyParameter::class
}
abstract class ExpectedEnumConstructor : KtFirDiagnostic<KtConstructor<*>>() {
override val diagnosticClass get() = ExpectedEnumConstructor::class
}
abstract class ExpectedEnumEntryWithBody : KtFirDiagnostic<KtEnumEntry>() {
override val diagnosticClass get() = ExpectedEnumEntryWithBody::class
}
abstract class ExpectedPropertyInitializer : KtFirDiagnostic<KtExpression>() {
override val diagnosticClass get() = ExpectedPropertyInitializer::class
}
@@ -1587,6 +1606,82 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ExpectedLateinitProperty::class
}
abstract class SupertypeInitializedInExpectedClass : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = SupertypeInitializedInExpectedClass::class
}
abstract class ExpectedPrivateDeclaration : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = ExpectedPrivateDeclaration::class
}
abstract class ImplementationByDelegationInExpectClass : KtFirDiagnostic<KtDelegatedSuperTypeEntry>() {
override val diagnosticClass get() = ImplementationByDelegationInExpectClass::class
}
abstract class ActualTypeAliasNotToClass : KtFirDiagnostic<KtTypeAlias>() {
override val diagnosticClass get() = ActualTypeAliasNotToClass::class
}
abstract class ActualTypeAliasToClassWithDeclarationSiteVariance : KtFirDiagnostic<KtTypeAlias>() {
override val diagnosticClass get() = ActualTypeAliasToClassWithDeclarationSiteVariance::class
}
abstract class ActualTypeAliasWithUseSiteVariance : KtFirDiagnostic<KtTypeAlias>() {
override val diagnosticClass get() = ActualTypeAliasWithUseSiteVariance::class
}
abstract class ActualTypeAliasWithComplexSubstitution : KtFirDiagnostic<KtTypeAlias>() {
override val diagnosticClass get() = ActualTypeAliasWithComplexSubstitution::class
}
abstract class ActualFunctionWithDefaultArguments : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ActualFunctionWithDefaultArguments::class
}
abstract class ActualAnnotationConflictingDefaultArgumentValue : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ActualAnnotationConflictingDefaultArgumentValue::class
abstract val parameter: KtVariableLikeSymbol
}
abstract class ExpectedFunctionSourceWithDefaultArgumentsNotFound : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ExpectedFunctionSourceWithDefaultArgumentsNotFound::class
}
abstract class NoActualForExpect : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = NoActualForExpect::class
abstract val declaration: KtSymbol
abstract val module: FirModuleData
abstract val compatibility: Map<Incompatible<FirBasedSymbol<*>>, List<KtSymbol>>
}
abstract class ActualWithoutExpect : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = ActualWithoutExpect::class
abstract val declaration: KtSymbol
abstract val compatibility: Map<Incompatible<FirBasedSymbol<*>>, List<KtSymbol>>
}
abstract class AmbiguousActuals : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = AmbiguousActuals::class
abstract val declaration: KtSymbol
abstract val candidates: List<KtSymbol>
}
abstract class AmbiguousExpects : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = AmbiguousExpects::class
abstract val declaration: KtSymbol
abstract val modules: List<FirModuleData>
}
abstract class NoActualClassMemberForExpectedClass : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = NoActualClassMemberForExpectedClass::class
abstract val declaration: KtSymbol
abstract val members: List<Pair<KtSymbol, Map<Incompatible<FirBasedSymbol<*>>, List<KtSymbol>>>>
}
abstract class ActualMissing : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = ActualMissing::class
}
abstract class InitializerRequiredForDestructuringDeclaration : KtFirDiagnostic<KtDestructuringDeclaration>() {
override val diagnosticClass get() = InitializerRequiredForDestructuringDeclaration::class
}
@@ -13,7 +13,9 @@ import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.diagnostics.WhenMissingCase
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassLikeSymbol
@@ -35,10 +37,14 @@ import org.jetbrains.kotlin.psi.KtBinaryExpressionWithTypeRHS
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtConstructor
import org.jetbrains.kotlin.psi.KtConstructorDelegationCall
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtDeclarationWithBody
import org.jetbrains.kotlin.psi.KtDelegatedSuperTypeEntry
import org.jetbrains.kotlin.psi.KtDestructuringDeclaration
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtEnumEntry
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression
@@ -61,6 +67,7 @@ import org.jetbrains.kotlin.psi.KtWhenCondition
import org.jetbrains.kotlin.psi.KtWhenEntry
import org.jetbrains.kotlin.psi.KtWhenExpression
import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility.Incompatible
import org.jetbrains.kotlin.types.Variance
/*
@@ -2423,13 +2430,6 @@ internal class PrivateSetterForOpenPropertyImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedPrivateDeclarationImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExpectedPrivateDeclaration(), KtAbstractFirDiagnostic<KtModifierListOwner> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ValWithSetterImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
@@ -2542,6 +2542,34 @@ internal class ExpectedDeclarationWithBodyImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedClassConstructorDelegationCallImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExpectedClassConstructorDelegationCall(), KtAbstractFirDiagnostic<KtConstructorDelegationCall> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedClassConstructorPropertyParameterImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExpectedClassConstructorPropertyParameter(), KtAbstractFirDiagnostic<KtParameter> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedEnumConstructorImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExpectedEnumConstructor(), KtAbstractFirDiagnostic<KtConstructor<*>> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedEnumEntryWithBodyImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExpectedEnumEntryWithBody(), KtAbstractFirDiagnostic<KtEnumEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedPropertyInitializerImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
@@ -2563,6 +2591,130 @@ internal class ExpectedLateinitPropertyImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class SupertypeInitializedInExpectedClassImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.SupertypeInitializedInExpectedClass(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedPrivateDeclarationImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExpectedPrivateDeclaration(), KtAbstractFirDiagnostic<KtModifierListOwner> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ImplementationByDelegationInExpectClassImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ImplementationByDelegationInExpectClass(), KtAbstractFirDiagnostic<KtDelegatedSuperTypeEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualTypeAliasNotToClassImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualTypeAliasNotToClass(), KtAbstractFirDiagnostic<KtTypeAlias> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualTypeAliasToClassWithDeclarationSiteVarianceImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualTypeAliasToClassWithDeclarationSiteVariance(), KtAbstractFirDiagnostic<KtTypeAlias> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualTypeAliasWithUseSiteVarianceImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualTypeAliasWithUseSiteVariance(), KtAbstractFirDiagnostic<KtTypeAlias> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualTypeAliasWithComplexSubstitutionImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualTypeAliasWithComplexSubstitution(), KtAbstractFirDiagnostic<KtTypeAlias> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualFunctionWithDefaultArgumentsImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualFunctionWithDefaultArguments(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualAnnotationConflictingDefaultArgumentValueImpl(
override val parameter: KtVariableLikeSymbol,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualAnnotationConflictingDefaultArgumentValue(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedFunctionSourceWithDefaultArgumentsNotFoundImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExpectedFunctionSourceWithDefaultArgumentsNotFound(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class NoActualForExpectImpl(
override val declaration: KtSymbol,
override val module: FirModuleData,
override val compatibility: Map<Incompatible<FirBasedSymbol<*>>, List<KtSymbol>>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.NoActualForExpect(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualWithoutExpectImpl(
override val declaration: KtSymbol,
override val compatibility: Map<Incompatible<FirBasedSymbol<*>>, List<KtSymbol>>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualWithoutExpect(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class AmbiguousActualsImpl(
override val declaration: KtSymbol,
override val candidates: List<KtSymbol>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.AmbiguousActuals(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class AmbiguousExpectsImpl(
override val declaration: KtSymbol,
override val modules: List<FirModuleData>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.AmbiguousExpects(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class NoActualClassMemberForExpectedClassImpl(
override val declaration: KtSymbol,
override val members: List<Pair<KtSymbol, Map<Incompatible<FirBasedSymbol<*>>, List<KtSymbol>>>>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.NoActualClassMemberForExpectedClass(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ActualMissingImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ActualMissing(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class InitializerRequiredForDestructuringDeclarationImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,