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:
committed by
Space Team
parent
b992e698e4
commit
d5f24addea
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+18
-3
@@ -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 =
|
||||
|
||||
+15
@@ -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)<!>
|
||||
}
|
||||
Generated
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user