[FIR] @JvmOverloads related checkers

This commit is contained in:
Andrey Zinovyev
2021-08-17 17:16:31 +03:00
committed by TeamCityServer
parent 17ae69416c
commit f9b601edae
17 changed files with 222 additions and 74 deletions
@@ -3439,6 +3439,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJvmErrors.JAVA_TYPE_MISMATCH) { firDiagnostic ->
JavaTypeMismatchImpl(
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.b),
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.STRICTFP_ON_CLASS) { firDiagnostic ->
StrictfpOnClassImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -3475,10 +3483,44 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJvmErrors.JAVA_TYPE_MISMATCH) { firDiagnostic ->
JavaTypeMismatchImpl(
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.b),
add(FirJvmErrors.OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS) { firDiagnostic ->
OverloadsWithoutDefaultArgumentsImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.OVERLOADS_ABSTRACT) { firDiagnostic ->
OverloadsAbstractImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.OVERLOADS_INTERFACE) { firDiagnostic ->
OverloadsInterfaceImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.OVERLOADS_LOCAL) { firDiagnostic ->
OverloadsLocalImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR.errorFactory) { firDiagnostic ->
OverloadsAnnotationClassConstructorErrorImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR.warningFactory) { firDiagnostic ->
OverloadsAnnotationClassConstructorWarningImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.OVERLOADS_PRIVATE) { firDiagnostic ->
OverloadsPrivateImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
@@ -2398,6 +2398,12 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ConflictingJvmDeclarations::class
}
abstract class JavaTypeMismatch : KtFirDiagnostic<KtExpression>() {
override val diagnosticClass get() = JavaTypeMismatch::class
abstract val expectedType: KtType
abstract val actualType: KtType
}
abstract class StrictfpOnClass : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = StrictfpOnClass::class
}
@@ -2422,10 +2428,32 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = SynchronizedOnInline::class
}
abstract class JavaTypeMismatch : KtFirDiagnostic<KtExpression>() {
override val diagnosticClass get() = JavaTypeMismatch::class
abstract val expectedType: KtType
abstract val actualType: KtType
abstract class OverloadsWithoutDefaultArguments : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = OverloadsWithoutDefaultArguments::class
}
abstract class OverloadsAbstract : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = OverloadsAbstract::class
}
abstract class OverloadsInterface : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = OverloadsInterface::class
}
abstract class OverloadsLocal : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = OverloadsLocal::class
}
abstract class OverloadsAnnotationClassConstructorError : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = OverloadsAnnotationClassConstructorError::class
}
abstract class OverloadsAnnotationClassConstructorWarning : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = OverloadsAnnotationClassConstructorWarning::class
}
abstract class OverloadsPrivate : KtFirDiagnostic<KtAnnotationEntry>() {
override val diagnosticClass get() = OverloadsPrivate::class
}
}
@@ -3878,6 +3878,15 @@ internal class ConflictingJvmDeclarationsImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class JavaTypeMismatchImpl(
override val expectedType: KtType,
override val actualType: KtType,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JavaTypeMismatch(), KtAbstractFirDiagnostic<KtExpression> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class StrictfpOnClassImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
@@ -3920,12 +3929,52 @@ internal class SynchronizedOnInlineImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class JavaTypeMismatchImpl(
override val expectedType: KtType,
override val actualType: KtType,
internal class OverloadsWithoutDefaultArgumentsImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JavaTypeMismatch(), KtAbstractFirDiagnostic<KtExpression> {
) : KtFirDiagnostic.OverloadsWithoutDefaultArguments(), KtAbstractFirDiagnostic<KtAnnotationEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class OverloadsAbstractImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.OverloadsAbstract(), KtAbstractFirDiagnostic<KtAnnotationEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class OverloadsInterfaceImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.OverloadsInterface(), KtAbstractFirDiagnostic<KtAnnotationEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class OverloadsLocalImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.OverloadsLocal(), KtAbstractFirDiagnostic<KtAnnotationEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class OverloadsAnnotationClassConstructorErrorImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.OverloadsAnnotationClassConstructorError(), KtAbstractFirDiagnostic<KtAnnotationEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class OverloadsAnnotationClassConstructorWarningImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.OverloadsAnnotationClassConstructorWarning(), KtAbstractFirDiagnostic<KtAnnotationEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class OverloadsPrivateImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.OverloadsPrivate(), KtAbstractFirDiagnostic<KtAnnotationEntry> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}