K1/K2: consider List.(add/remove)(First/Last) as mutable list methods

#KT-64640 Fixed
This commit is contained in:
Mikhail Glukhikh
2024-01-02 13:59:54 +01:00
committed by Space Team
parent 8a560d2629
commit 0ef41d75b5
5 changed files with 24 additions and 10 deletions
@@ -57,3 +57,6 @@ fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>) {
z.<!DEBUG_INFO_CALL("fqName: A.removeLast; typeCall: function")!>removeLast()<!>
z.<!DEBUG_INFO_CALL("fqName: kotlin.collections.reversed; typeCall: extension function")!>reversed()<!>
}
// DIAGNOSTICS: -JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE
// accidentally reported (K1 only) on x.addFirst/addLast/removeFirst/removeLast (no such diagnostics on y and z)
@@ -57,3 +57,6 @@ fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>) {
z.<!DEBUG_INFO_CALL("fqName: A.removeLast; typeCall: function")!>removeLast()<!>
z.<!DEBUG_INFO_CALL("fqName: kotlin.collections.reversed; typeCall: extension function")!>reversed()<!>
}
// DIAGNOSTICS: -JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE
// accidentally reported (K1 only) on x.addFirst/addLast/removeFirst/removeLast (no such diagnostics on y and z)
@@ -2,8 +2,8 @@
// WITH_STDLIB
fun bar(x: List<String>) {
x.addFirst("")
x.addLast("")
x.removeFirst()
x.removeLast()
}
x.<!UNRESOLVED_REFERENCE!>addFirst<!>("")
x.<!UNRESOLVED_REFERENCE!>addLast<!>("")
x.<!UNRESOLVED_REFERENCE!>removeFirst<!>()
x.<!UNRESOLVED_REFERENCE!>removeLast<!>()
}
@@ -2,8 +2,8 @@
// WITH_STDLIB
fun bar(x: List<String>) {
x.<!JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>addFirst<!>("")
x.<!JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>addLast<!>("")
x.<!JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>removeFirst<!>()
x.<!JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>removeLast<!>()
x.<!UNRESOLVED_REFERENCE!>addFirst<!>("")
x.<!UNRESOLVED_REFERENCE!>addLast<!>("")
x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeFirst<!>()
x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeLast<!>()
}
@@ -136,7 +136,15 @@ object JvmBuiltInsSignatures {
signatures {
inJavaUtil("Collection", "removeIf(Ljava/util/function/Predicate;)Z") +
inJavaUtil("List", "replaceAll(Ljava/util/function/UnaryOperator;)V", "sort(Ljava/util/Comparator;)V") +
inJavaUtil(
"List",
"replaceAll(Ljava/util/function/UnaryOperator;)V",
"sort(Ljava/util/Comparator;)V",
"addFirst(Ljava/lang/Object;)V",
"addLast(Ljava/lang/Object;)V",
"removeFirst()Ljava/lang/Object;",
"removeLast()Ljava/lang/Object;",
) +
inJavaUtil(
"Map",