[FIR] fix implementation status for Java fields and synthetic properties
^KTIJ-23963 Fixed
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt
index a2cae62..f8dee7a 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt
@@ -25,7 +25,6 @@
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyExpressionBlock
import org.jetbrains.kotlin.fir.references.FirSuperReference
import org.jetbrains.kotlin.fir.references.toResolvedCallableSymbol
-import org.jetbrains.kotlin.fir.declarations.fullyExpandedClass
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.scopes.*
@@ -346,15 +345,24 @@
}
}
}
- if (this is FirNamedFunctionSymbol) {
- if (parentClassSymbol is FirRegularClassSymbol && parentClassSymbol.isData && matchesDataClassSyntheticMemberSignatures) {
- return ImplementationStatus.INHERITED_OR_SYNTHESIZED
+
+ when (symbol) {
+ is FirNamedFunctionSymbol -> {
+ if (
+ parentClassSymbol is FirRegularClassSymbol &&
+ parentClassSymbol.isData &&
+ symbol.matchesDataClassSyntheticMemberSignatures
+ ) {
+ return ImplementationStatus.INHERITED_OR_SYNTHESIZED
+ }
+ // TODO: suspend function overridden by a Java class in the middle is not properly regarded as an override
+ if (isSuspend) {
+ return ImplementationStatus.INHERITED_OR_SYNTHESIZED
+ }
}
- // TODO: suspend function overridden by a Java class in the middle is not properly regarded as an override
- if (isSuspend) {
- return ImplementationStatus.INHERITED_OR_SYNTHESIZED
- }
+ is FirFieldSymbol -> if (symbol.isJavaOrEnhancement) return ImplementationStatus.CANNOT_BE_IMPLEMENTED
}
+
return when {
isFinal -> ImplementationStatus.CANNOT_BE_IMPLEMENTED
containingClassSymbol === parentClassSymbol && (origin == FirDeclarationOrigin.Source || origin == FirDeclarationOrigin.Precompiled) ->