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");
|
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
|
@Test
|
||||||
@TestMetadata("overridesBuiltinNoMagic.kt")
|
@TestMetadata("overridesBuiltinNoMagic.kt")
|
||||||
public void testOverridesBuiltinNoMagic() throws Exception {
|
public void testOverridesBuiltinNoMagic() throws Exception {
|
||||||
|
|||||||
+6
@@ -20349,6 +20349,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
|||||||
runTest("compiler/testData/diagnostics/tests/j+k/collectionOverrides/mapGetOverride.kt");
|
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
|
@Test
|
||||||
@TestMetadata("overridesBuiltinNoMagic.kt")
|
@TestMetadata("overridesBuiltinNoMagic.kt")
|
||||||
public void testOverridesBuiltinNoMagic() throws Exception {
|
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");
|
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
|
@Test
|
||||||
@TestMetadata("overridesBuiltinNoMagic.kt")
|
@TestMetadata("overridesBuiltinNoMagic.kt")
|
||||||
public void testOverridesBuiltinNoMagic() throws Exception {
|
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");
|
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
|
@Test
|
||||||
@TestMetadata("overridesBuiltinNoMagic.kt")
|
@TestMetadata("overridesBuiltinNoMagic.kt")
|
||||||
public void testOverridesBuiltinNoMagic() throws Exception {
|
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.hasBuilderInferenceAnnotation
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.model.ConeExplicitTypeParameterConstraintPosition
|
import org.jetbrains.kotlin.fir.resolve.inference.model.ConeExplicitTypeParameterConstraintPosition
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
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.SyntheticSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
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.calls.tower.CandidateApplicability
|
||||||
import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
|
import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.DYNAMIC_EXTENSION_FQ_NAME
|
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
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
|
|
||||||
abstract class ResolutionStage {
|
abstract class ResolutionStage {
|
||||||
@@ -669,7 +673,18 @@ internal object CheckDeprecatedSinceKotlin : ResolutionStage() {
|
|||||||
if (symbol.fir.isHiddenEverywhereBesideSuperCalls == true) return true
|
if (symbol.fir.isHiddenEverywhereBesideSuperCalls == true) return true
|
||||||
|
|
||||||
val scope = candidate.originScope as? FirTypeScope ?: return false
|
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 =
|
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");
|
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
|
@Test
|
||||||
@TestMetadata("overridesBuiltinNoMagic.kt")
|
@TestMetadata("overridesBuiltinNoMagic.kt")
|
||||||
public void testOverridesBuiltinNoMagic() throws Exception {
|
public void testOverridesBuiltinNoMagic() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user