[FIR] Only overridable members should report JvmName inapplicable

Instead of checking for only open declarations, check for overridable
declarations, since private declarations cannot be overridden even if
they are marked as open. While normally these modifiers are exclusive,
a declaration can be made open via a compiler plugin like AllOpen.

#KT-60183 Fixed
#KT-57223 Fixed
This commit is contained in:
Brian Norman
2023-07-14 09:07:10 -05:00
committed by Space Team
parent 70662007a5
commit 363b336b7a
5 changed files with 58 additions and 101 deletions
@@ -13,9 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclaratio
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.isInline
import org.jetbrains.kotlin.fir.declarations.utils.isOpen
import org.jetbrains.kotlin.fir.declarations.utils.isOverride
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
import org.jetbrains.kotlin.fir.resolve.getContainingClass
@@ -47,7 +45,7 @@ object FirJvmNameChecker : FirBasicDeclarationChecker() {
if (
declaration.isOverride ||
declaration.isOpen ||
declaration.isOverridable ||
containingClass?.isValueClassThatRequiresMangling() == true
) {
reporter.reportOn(jvmName.source, FirJvmErrors.INAPPLICABLE_JVM_NAME, context)