K2: Fix isHiddenForThisCallSite for non-direct overridden

Previously, the call of `z.sort` in test has been resolved
to the overridden member
This commit is contained in:
Denis.Zharkov
2023-05-31 18:28:29 +02:00
committed by Space Team
parent b992e698e4
commit d5f24addea
7 changed files with 63 additions and 3 deletions
@@ -20349,6 +20349,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/mapGetOverride.kt");
}
@Test
@TestMetadata("nonDirectHiddenOverride.kt")
public void testNonDirectHiddenOverride() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/nonDirectHiddenOverride.kt");
}
@Test
@TestMetadata("overridesBuiltinNoMagic.kt")
public void testOverridesBuiltinNoMagic() throws Exception {
@@ -20349,6 +20349,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/mapGetOverride.kt");
}
@Test
@TestMetadata("nonDirectHiddenOverride.kt")
public void testNonDirectHiddenOverride() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/nonDirectHiddenOverride.kt");
}
@Test
@TestMetadata("overridesBuiltinNoMagic.kt")
public void testOverridesBuiltinNoMagic() throws Exception {
@@ -20349,6 +20349,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/mapGetOverride.kt");
}
@Test
@TestMetadata("nonDirectHiddenOverride.kt")
public void testNonDirectHiddenOverride() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/nonDirectHiddenOverride.kt");
}
@Test
@TestMetadata("overridesBuiltinNoMagic.kt")
public void testOverridesBuiltinNoMagic() throws Exception {
@@ -20355,6 +20355,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/mapGetOverride.kt");
}
@Test
@TestMetadata("nonDirectHiddenOverride.kt")
public void testNonDirectHiddenOverride() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/nonDirectHiddenOverride.kt");
}
@Test
@TestMetadata("overridesBuiltinNoMagic.kt")
public void testOverridesBuiltinNoMagic() throws Exception {
@@ -25,7 +25,10 @@ import org.jetbrains.kotlin.fir.resolve.inference.csBuilder
import org.jetbrains.kotlin.fir.resolve.inference.hasBuilderInferenceAnnotation
import org.jetbrains.kotlin.fir.resolve.inference.model.ConeExplicitTypeParameterConstraintPosition
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.scopes.*
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.FirUnstableSmartcastTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
import org.jetbrains.kotlin.fir.symbols.SyntheticSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
@@ -39,7 +42,8 @@ import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind.*
import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability
import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
import org.jetbrains.kotlin.resolve.descriptorUtil.DYNAMIC_EXTENSION_FQ_NAME
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.AbstractNullabilityChecker
import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
import org.jetbrains.kotlin.util.OperatorNameConventions
abstract class ResolutionStage {
@@ -669,7 +673,18 @@ internal object CheckDeprecatedSinceKotlin : ResolutionStage() {
if (symbol.fir.isHiddenEverywhereBesideSuperCalls == true) return true
val scope = candidate.originScope as? FirTypeScope ?: return false
return scope.getDirectOverriddenFunctions(symbol).any { it.fir.isHiddenEverywhereBesideSuperCalls == true }
var result = false
scope.processOverriddenFunctions(symbol) {
if (it.fir.isHiddenEverywhereBesideSuperCalls == true) {
result = true
ProcessorAction.STOP
} else {
ProcessorAction.NEXT
}
}
return result
}
private fun FirElement.isSuperCall(): Boolean =
@@ -0,0 +1,15 @@
// FULL_JDK
// FIR_IDENTICAL
// WITH_STDLIB
class A<T> : ArrayList<T>() {
override fun sort(t: Comparator<in T>) {
super.sort(t)
}
}
fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>, c: Comparator<String>) {
x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.sort; typeCall: inline extension function")!><!DEPRECATION_ERROR!>sort<!>(c)<!>
y.<!DEBUG_INFO_CALL("fqName: kotlin.collections.sort; typeCall: inline extension function")!><!DEPRECATION_ERROR!>sort<!>(c)<!>
z.<!DEBUG_INFO_CALL("fqName: kotlin.collections.sort; typeCall: inline extension function")!><!DEPRECATION_ERROR!>sort<!>(c)<!>
}
@@ -20355,6 +20355,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/mapGetOverride.kt");
}
@Test
@TestMetadata("nonDirectHiddenOverride.kt")
public void testNonDirectHiddenOverride() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/nonDirectHiddenOverride.kt");
}
@Test
@TestMetadata("overridesBuiltinNoMagic.kt")
public void testOverridesBuiltinNoMagic() throws Exception {