[FIR] Create fake hidden versions of List.getFirst/getLast in JDK < 21

... so that overrides are marked as deprecated regardless of the JDK.

#KT-65440 Fixed
This commit is contained in:
Kirill Rakhman
2024-02-06 13:26:18 +01:00
committed by Space Team
parent c6b2675089
commit 2f49272c42
22 changed files with 399 additions and 3 deletions
@@ -0,0 +1,29 @@
import java.util.LinkedList
class A<T> : ArrayList<T>() {
fun getFirst(): T = super.<!UNRESOLVED_REFERENCE!>getFirst<!>()
fun getLast(): T = super.<!UNRESOLVED_REFERENCE!>getLast<!>()
}
fun foo(x: List<String>, y: LinkedList<String>, z: A<String>) {
x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
x.<!FUNCTION_CALL_EXPECTED!>first<!>
x.first() // stdlib extension on List
x.<!UNRESOLVED_REFERENCE!>getLast<!>()
x.<!FUNCTION_CALL_EXPECTED!>last<!>
x.last()
y.<!DEPRECATION!>getFirst<!>()
y.<!DEPRECATION!>first<!>
y.first()
y.<!DEPRECATION!>getLast<!>()
y.<!DEPRECATION!>last<!>
y.last()
z.<!DEPRECATION!>getFirst<!>()
z.<!FUNCTION_CALL_EXPECTED!>first<!>
z.first()
z.<!DEPRECATION!>getLast<!>()
z.<!FUNCTION_CALL_EXPECTED!>last<!>
z.last()
}
@@ -0,0 +1,29 @@
import java.util.LinkedList
class A<T> : ArrayList<T>() {
fun getFirst(): T = super.<!UNRESOLVED_REFERENCE!>getFirst<!>()
fun getLast(): T = super.<!UNRESOLVED_REFERENCE!>getLast<!>()
}
fun foo(x: List<String>, y: LinkedList<String>, z: A<String>) {
x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
x.<!FUNCTION_CALL_EXPECTED!>first<!>
x.first() // stdlib extension on List
x.<!UNRESOLVED_REFERENCE!>getLast<!>()
x.<!FUNCTION_CALL_EXPECTED!>last<!>
x.last()
y.getFirst()
y.first
y.first()
y.getLast()
y.last
y.last()
z.getFirst()
z.<!FUNCTION_CALL_EXPECTED!>first<!>
z.first()
z.getLast()
z.<!FUNCTION_CALL_EXPECTED!>last<!>
z.last()
}