K2: add ACCIDENTAL_OVERRIDE_CLASH_BY_JVM_SIGNATURE for clashing functions
This diagnostic is reported on an explicitly-declared function which overrides a regular Java function with the same signature as a hidden one from the same scope. #KT-64846 Fixed
This commit is contained in:
committed by
Space Team
parent
8f9614c1fb
commit
7615d863d5
+9
@@ -5099,6 +5099,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJvmErrors.ACCIDENTAL_OVERRIDE_CLASH_BY_JVM_SIGNATURE) { firDiagnostic ->
|
||||
AccidentalOverrideClashByJvmSignatureImpl(
|
||||
firSymbolBuilder.functionLikeBuilder.buildFunctionSymbol(firDiagnostic.a),
|
||||
firDiagnostic.b,
|
||||
firSymbolBuilder.functionLikeBuilder.buildFunctionSymbol(firDiagnostic.c),
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJvmErrors.JAVA_TYPE_MISMATCH) { firDiagnostic ->
|
||||
JavaTypeMismatchImpl(
|
||||
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
|
||||
|
||||
+7
@@ -3548,6 +3548,13 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
val base: KtCallableSymbol
|
||||
}
|
||||
|
||||
interface AccidentalOverrideClashByJvmSignature : KtFirDiagnostic<KtNamedFunction> {
|
||||
override val diagnosticClass get() = AccidentalOverrideClashByJvmSignature::class
|
||||
val hidden: KtFunctionLikeSymbol
|
||||
val overrideDescription: String
|
||||
val regular: KtFunctionLikeSymbol
|
||||
}
|
||||
|
||||
interface JavaTypeMismatch : KtFirDiagnostic<KtExpression> {
|
||||
override val diagnosticClass get() = JavaTypeMismatch::class
|
||||
val expectedType: KtType
|
||||
|
||||
+8
@@ -4281,6 +4281,14 @@ internal class WrongNullabilityForJavaOverrideImpl(
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.WrongNullabilityForJavaOverride
|
||||
|
||||
internal class AccidentalOverrideClashByJvmSignatureImpl(
|
||||
override val hidden: KtFunctionLikeSymbol,
|
||||
override val overrideDescription: String,
|
||||
override val regular: KtFunctionLikeSymbol,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtNamedFunction>(firDiagnostic, token), KtFirDiagnostic.AccidentalOverrideClashByJvmSignature
|
||||
|
||||
internal class JavaTypeMismatchImpl(
|
||||
override val expectedType: KtType,
|
||||
override val actualType: KtType,
|
||||
|
||||
Reference in New Issue
Block a user