FIR checker: report type parameters on anonymous objects

This commit is contained in:
Tianyu Geng
2021-07-22 16:54:25 -07:00
committed by TeamCityServer
parent 4d9102f749
commit a18daa5d62
10 changed files with 58 additions and 19 deletions
@@ -1486,6 +1486,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.TYPE_PARAMETERS_IN_ANONYMOUS_OBJECT) { firDiagnostic ->
TypeParametersInAnonymousObjectImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ILLEGAL_PROJECTION_USAGE) { firDiagnostic ->
IllegalProjectionUsageImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -1057,6 +1057,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = TypeParametersInObject::class
}
abstract class TypeParametersInAnonymousObject : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = TypeParametersInAnonymousObject::class
}
abstract class IllegalProjectionUsage : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = IllegalProjectionUsage::class
}
@@ -1691,6 +1691,13 @@ internal class TypeParametersInObjectImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class TypeParametersInAnonymousObjectImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.TypeParametersInAnonymousObject(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class IllegalProjectionUsageImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,