diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt index cea3bf6e696..3ec56755318 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -555,7 +555,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } - add(FirJvmErrors.SUPER_CALL_WITH_DEFAULT_PARAMETERS) { firDiagnostic -> + add(FirErrors.SUPER_CALL_WITH_DEFAULT_PARAMETERS) { firDiagnostic -> SuperCallWithDefaultParametersImpl( firDiagnostic.a, firDiagnostic as KtPsiDiagnostic, diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index be9f23600c0..261c31db319 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -235,6 +235,9 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error { parameter("target") } + val SUPER_CALL_WITH_DEFAULT_PARAMETERS by error { + parameter("name") + } } val SUPERTYPES by object : DiagnosticGroup("Supertypes") { diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt index f899bf682ef..857dabe41ee 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt @@ -6,10 +6,7 @@ package org.jetbrains.kotlin.fir.checkers.generator.diagnostics import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageFeature.* -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.util.PrivateForInline import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.DiagnosticList import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.PositioningStrategy import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol @@ -21,6 +18,7 @@ import org.jetbrains.kotlin.psi.KtAnnotationEntry import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtExpression +import org.jetbrains.kotlin.util.PrivateForInline @Suppress("ClassName", "unused") @OptIn(PrivateForInline::class) @@ -86,9 +84,6 @@ object JVM_DIAGNOSTICS_LIST : DiagnosticList("FirJvmErrors") { } val SUPER by object : DiagnosticGroup("Super") { - val SUPER_CALL_WITH_DEFAULT_PARAMETERS by error { - parameter("name") - } val INTERFACE_CANT_CALL_DEFAULT_METHOD_VIA_SUPER by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) } diff --git a/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt b/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt index 4654f69f900..be8e980a936 100644 --- a/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt +++ b/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt @@ -71,7 +71,6 @@ object FirJvmErrors { val REDUNDANT_REPEATABLE_ANNOTATION by warning2() // Super - val SUPER_CALL_WITH_DEFAULT_PARAMETERS by error1() val INTERFACE_CANT_CALL_DEFAULT_METHOD_VIA_SUPER by error0(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) // JVM Records diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrorsDefaultMessages.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrorsDefaultMessages.kt index 97ff2ca5795..4bac1ecb76e 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrorsDefaultMessages.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrorsDefaultMessages.kt @@ -73,7 +73,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.REPEATED_A import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SPREAD_ON_SIGNATURE_POLYMORPHIC_CALL import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.STRICTFP_ON_CLASS import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC -import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SUPER_CALL_WITH_DEFAULT_PARAMETERS import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SUSPENSION_POINT_INSIDE_CRITICAL_SECTION import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SYNCHRONIZED_IN_INTERFACE import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SYNCHRONIZED_ON_ABSTRACT @@ -113,11 +112,6 @@ object FirJvmErrorsDefaultMessages : BaseDiagnosticRendererFactory() { JVM_PACKAGE_NAME_NOT_SUPPORTED_IN_FILES_WITH_CLASSES, "'@JvmPackageName' annotation is not supported for files with class declarations." ) - map.put( - SUPER_CALL_WITH_DEFAULT_PARAMETERS, - "Super-calls with default arguments are prohibited. Please specify all arguments of ''super.{0}'' explicitly.", - TO_STRING - ) map.put(LOCAL_JVM_RECORD, "Local '@JvmRecord' classes are prohibited.") map.put(NON_FINAL_JVM_RECORD, "'@JvmRecord' class should be final.") diff --git a/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/NativeExpressionCheckers.kt b/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/NativeExpressionCheckers.kt index b0c803d477d..24841e99cb1 100644 --- a/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/NativeExpressionCheckers.kt +++ b/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/NativeExpressionCheckers.kt @@ -7,8 +7,8 @@ package org.jetbrains.kotlin.fir.analysis.native.checkers import FirNativeForwardDeclarationGetClassCallChecker import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers -import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirGetClassCallChecker -import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirQualifiedAccessExpressionChecker +import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker +import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirSuperCallWithDefaultsChecker object NativeExpressionCheckers : ExpressionCheckers() { override val typeOperatorCallCheckers = setOf( @@ -20,4 +20,6 @@ object NativeExpressionCheckers : ExpressionCheckers() { override val qualifiedAccessExpressionCheckers = setOf( FirNativeForwardDeclarationReifiedChecker ) + override val functionCallCheckers: Set + get() = setOf(FirSuperCallWithDefaultsChecker) } \ No newline at end of file diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index b315a01e9ea..b01299c5ddd 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -201,6 +201,7 @@ object FirErrors { val ABSTRACT_SUPER_CALL by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) val ABSTRACT_SUPER_CALL_WARNING by warning0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error1() + val SUPER_CALL_WITH_DEFAULT_PARAMETERS by error1() // Supertypes val NOT_A_SUPERTYPE by error0() diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirSuperCallWithDefaultsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirSuperCallWithDefaultsChecker.kt similarity index 83% rename from compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirSuperCallWithDefaultsChecker.kt rename to compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirSuperCallWithDefaultsChecker.kt index 78f23171bf9..5798eb995d8 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirSuperCallWithDefaultsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirSuperCallWithDefaultsChecker.kt @@ -3,14 +3,13 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.fir.analysis.jvm.checkers.expression +package org.jetbrains.kotlin.fir.analysis.checkers.expression import org.jetbrains.kotlin.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.explicitReceiverIsNotSuperReference -import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker -import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedArgumentList import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol @@ -26,7 +25,7 @@ object FirSuperCallWithDefaultsChecker : FirFunctionCallChecker() { if (arguments.arguments.size < functionSymbol.valueParameterSymbols.size) { reporter.reportOn( expression.calleeReference.source, - FirJvmErrors.SUPER_CALL_WITH_DEFAULT_PARAMETERS, + FirErrors.SUPER_CALL_WITH_DEFAULT_PARAMETERS, functionSymbol.name.asString(), context ) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt index c0952767b67..fd080681999 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt @@ -583,6 +583,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SUPERTYPE_IS_EXTE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SUPERTYPE_NOT_A_CLASS_OR_INTERFACE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SUPERTYPE_NOT_INITIALIZED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SUPER_CALL_FROM_PUBLIC_INLINE +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SUPER_CALL_WITH_DEFAULT_PARAMETERS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SUPER_IS_NOT_AN_EXPRESSION import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SUPER_NOT_AVAILABLE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TAILREC_ON_VIRTUAL_MEMBER_ERROR @@ -854,6 +855,11 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() { map.put(ILLEGAL_SELECTOR, "The expression cannot be a selector (cannot occur after a dot).") map.put(NO_RECEIVER_ALLOWED, "No receiver can be passed to this function or property.") + map.put( + SUPER_CALL_WITH_DEFAULT_PARAMETERS, + "Super-calls with default arguments are prohibited. Please specify all arguments of ''super.{0}'' explicitly.", + TO_STRING + ) // Supertypes map.put(NOT_A_SUPERTYPE, "Not an immediate supertype.")