K1: Change how Kotlin sees some of the new JDK 21 collections members

- Make addFirst/Last and removeFirst/removeLast as members
- Leave getFirst/getLast unprocessed, thus visible for K1, but marked
as deprecated

Though the implementations of getFirst/getLast and synthetic property
access to them are expected to be deprecated as well, it's expected
to be fixed in later commits.

^KT-60659 In Progress
^KT-60769 In Progress
This commit is contained in:
Denis.Zharkov
2023-07-28 13:58:52 +02:00
committed by Space Team
parent d99f8ac9b4
commit 1e86a82ee1
8 changed files with 216 additions and 28 deletions
@@ -0,0 +1,51 @@
// WITH_STDLIB
fun foo(ll: java.util.LinkedList<String>, al: ArrayList<String>, ad: ArrayDeque<String>, jad: java.util.ArrayDeque<String>) {
ll.addFirst("")
ll.addLast("")
ll.<!UNRESOLVED_REFERENCE!>getFirst<!>()
ll.<!INVISIBLE_REFERENCE!>first<!> // synthetic property for getFirst()
ll.first() // stdlib extension on List
ll.<!UNRESOLVED_REFERENCE!>getLast<!>()
ll.<!INVISIBLE_REFERENCE!>last<!>
ll.last()
ll.removeFirst()
ll.removeLast()
ll.reversed()
al.addFirst("")
al.addLast("")
al.<!UNRESOLVED_REFERENCE!>getFirst<!>()
al.<!FUNCTION_CALL_EXPECTED!>first<!>
al.first()
al.<!UNRESOLVED_REFERENCE!>getLast<!>()
al.<!FUNCTION_CALL_EXPECTED!>last<!>
al.last()
al.removeFirst()
al.removeLast()
al.reversed()
ad.addFirst("")
ad.addLast("")
ad.<!UNRESOLVED_REFERENCE!>getFirst<!>()
ad.<!FUNCTION_CALL_EXPECTED!>first<!>
ad.first()
ad.<!UNRESOLVED_REFERENCE!>getLast<!>()
ad.<!FUNCTION_CALL_EXPECTED!>last<!>
ad.last()
ad.removeFirst()
ad.removeLast()
ad.reversed()
jad.addFirst("")
jad.addLast("")
jad.getFirst()
jad.first
jad.first()
jad.getLast()
jad.last
jad.last()
jad.removeFirst()
jad.removeLast()
jad.reversed()
}