K1: change depr. level of List.getFirst to HIDDEN but don't force it on overrides

#KT-65441 Fixed
This commit is contained in:
Mikhail Glukhikh
2024-02-26 10:59:29 +01:00
committed by Space Team
parent d870d9dcc6
commit 91e9fbd9bf
5 changed files with 42 additions and 84 deletions
@@ -1,11 +1,11 @@
fun foo(ll: java.util.LinkedList<String>, al: ArrayList<String>, ad: ArrayDeque<String>, jad: java.util.ArrayDeque<String>) { fun foo(ll: java.util.LinkedList<String>, al: ArrayList<String>, ad: ArrayDeque<String>, jad: java.util.ArrayDeque<String>) {
ll.addFirst("") ll.addFirst("")
ll.addLast("") ll.addLast("")
ll.<!DEPRECATION!>getFirst<!>() ll.getFirst()
ll.<!DEPRECATION!>first<!> // synthetic property for getFirst() ll.first // synthetic property for getFirst()
ll.first() // stdlib extension on List ll.first() // stdlib extension on List
ll.<!DEPRECATION!>getLast<!>() ll.getLast()
ll.<!DEPRECATION!>last<!> ll.last
ll.last() ll.last()
ll.<!DEBUG_INFO_CALL("fqName: java.util.LinkedList.removeFirst; typeCall: function")!>removeFirst()<!> ll.<!DEBUG_INFO_CALL("fqName: java.util.LinkedList.removeFirst; typeCall: function")!>removeFirst()<!>
ll.<!DEBUG_INFO_CALL("fqName: java.util.LinkedList.removeLast; typeCall: function")!>removeLast()<!> ll.<!DEBUG_INFO_CALL("fqName: java.util.LinkedList.removeLast; typeCall: function")!>removeLast()<!>
@@ -13,11 +13,11 @@ fun foo(ll: java.util.LinkedList<String>, al: ArrayList<String>, ad: ArrayDeque<
al.addFirst("") al.addFirst("")
al.addLast("") al.addLast("")
al.<!DEPRECATION!>getFirst<!>() al.getFirst()
al.<!DEPRECATION!>first<!> al.first
al.first() al.first()
al.<!DEPRECATION!>getLast<!>() al.getLast()
al.<!DEPRECATION!>last<!> al.last
al.last() al.last()
al.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeFirst; typeCall: function")!>removeFirst()<!> al.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeFirst; typeCall: function")!>removeFirst()<!>
al.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeLast; typeCall: function")!>removeLast()<!> al.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeLast; typeCall: function")!>removeLast()<!>
@@ -25,11 +25,11 @@ fun foo(ll: java.util.LinkedList<String>, al: ArrayList<String>, ad: ArrayDeque<
ad.addFirst("") ad.addFirst("")
ad.addLast("") ad.addLast("")
ad.<!DEPRECATION!>getFirst<!>() ad.<!UNRESOLVED_REFERENCE!>getFirst<!>()
ad.<!DEPRECATION!>first<!> ad.<!DEPRECATION_ERROR!>first<!>
ad.first() ad.first()
ad.<!DEPRECATION!>getLast<!>() ad.<!UNRESOLVED_REFERENCE!>getLast<!>()
ad.<!DEPRECATION!>last<!> ad.<!DEPRECATION_ERROR!>last<!>
ad.last() ad.last()
ad.<!DEBUG_INFO_CALL("fqName: kotlin.collections.ArrayDeque.removeFirst; typeCall: function")!>removeFirst()<!> ad.<!DEBUG_INFO_CALL("fqName: kotlin.collections.ArrayDeque.removeFirst; typeCall: function")!>removeFirst()<!>
ad.<!DEBUG_INFO_CALL("fqName: kotlin.collections.ArrayDeque.removeLast; typeCall: function")!>removeLast()<!> ad.<!DEBUG_INFO_CALL("fqName: kotlin.collections.ArrayDeque.removeLast; typeCall: function")!>removeLast()<!>
@@ -1,55 +1,12 @@
/newListMethods.kt:15:18: warning: this declaration overrides deprecated member but not marked as deprecated itself. Please add @Deprecated annotation or suppress. See https://youtrack.jetbrains.com/issue/KT-47902 for details /newListMethods.kt:30:7: error: unresolved reference: getFirst
override fun getFirst(): T = super.getFirst()
^^^^^^^^
/newListMethods.kt:15:40: warning: 'getFirst(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
override fun getFirst(): T = super.getFirst()
^^^^^^^^
/newListMethods.kt:16:18: warning: this declaration overrides deprecated member but not marked as deprecated itself. Please add @Deprecated annotation or suppress. See https://youtrack.jetbrains.com/issue/KT-47902 for details
override fun getLast(): T = super.getLast()
^^^^^^^
/newListMethods.kt:16:39: warning: 'getLast(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead
override fun getLast(): T = super.getLast()
^^^^^^^
/newListMethods.kt:18:34: warning: 'getFirst(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
fun superFirst2(): T = super.first
^^^^^
/newListMethods.kt:19:33: warning: 'getLast(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead
fun superLast2(): T = super.last
^^^^
/newListMethods.kt:30:7: warning: 'getFirst(): E!' is deprecated. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
x.getFirst() x.getFirst()
^^^^^^^^ ^^^^^^^^
/newListMethods.kt:31:7: warning: 'getter for first: E!' is deprecated. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead /newListMethods.kt:31:7: error: using 'getter for first: E!' is an error. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
x.first // synthetic property for getFirst() x.first // synthetic property for getFirst()
^^^^^ ^^^^^
/newListMethods.kt:33:7: warning: 'getLast(): E!' is deprecated. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead /newListMethods.kt:33:7: error: unresolved reference: getLast
x.getLast() x.getLast()
^^^^^^^ ^^^^^^^
/newListMethods.kt:34:7: warning: 'getter for last: E!' is deprecated. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead /newListMethods.kt:34:7: error: using 'getter for last: E!' is an error. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead
x.last x.last
^^^^ ^^^^
/newListMethods.kt:42:7: warning: 'getFirst(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
y.getFirst()
^^^^^^^^
/newListMethods.kt:43:7: warning: 'getFirst(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
y.first
^^^^^
/newListMethods.kt:45:7: warning: 'getLast(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead
y.getLast()
^^^^^^^
/newListMethods.kt:46:7: warning: 'getLast(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead
y.last
^^^^
/newListMethods.kt:54:7: warning: 'getFirst(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
z.getFirst()
^^^^^^^^
/newListMethods.kt:55:7: warning: 'getFirst(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getFirst()' member of List is redundant in Kotlin and might be removed soon. Please use 'first()' stdlib extension instead
z.first
^^^^^
/newListMethods.kt:57:7: warning: 'getLast(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead
z.getLast()
^^^^^^^
/newListMethods.kt:58:7: warning: 'getLast(): E!' is deprecated. Overrides deprecated member in 'java.util.AbstractList'. 'getLast()' member of List is redundant in Kotlin and might be removed soon. Please use 'last()' stdlib extension instead
z.last
^^^^
@@ -12,11 +12,11 @@ class A<T> : ArrayList<T>() {
super.addLast(t) super.addLast(t)
} }
override fun <!OVERRIDE_DEPRECATION!>getFirst<!>(): T = super.<!DEPRECATION!>getFirst<!>() override fun <!OVERRIDE_DEPRECATION!>getFirst<!>(): T = super.getFirst()
override fun <!OVERRIDE_DEPRECATION!>getLast<!>(): T = super.<!DEPRECATION!>getLast<!>() override fun <!OVERRIDE_DEPRECATION!>getLast<!>(): T = super.getLast()
fun superFirst2(): T = super.<!DEPRECATION!>first<!> fun superFirst2(): T = super.first
fun superLast2(): T = super.<!DEPRECATION!>last<!> fun superLast2(): T = super.last
override fun removeFirst(): T = super.removeFirst() override fun removeFirst(): T = super.removeFirst()
override fun removeLast(): T = super.removeLast() override fun removeLast(): T = super.removeLast()
@@ -27,11 +27,11 @@ class A<T> : ArrayList<T>() {
fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>) { fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>) {
x.addFirst("") x.addFirst("")
x.addLast("") x.addLast("")
x.<!DEPRECATION!>getFirst<!>() x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
x.<!DEPRECATION!>first<!> // synthetic property for getFirst() x.<!DEPRECATION_ERROR!>first<!> // synthetic property for getFirst()
x.first() // stdlib extension on List x.first() // stdlib extension on List
x.<!DEPRECATION!>getLast<!>() x.<!UNRESOLVED_REFERENCE!>getLast<!>()
x.<!DEPRECATION!>last<!> x.<!DEPRECATION_ERROR!>last<!>
x.last() x.last()
x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.MutableList.removeFirst; typeCall: function")!>removeFirst()<!> x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.MutableList.removeFirst; typeCall: function")!>removeFirst()<!>
x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.MutableList.removeLast; typeCall: function")!>removeLast()<!> x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.MutableList.removeLast; typeCall: function")!>removeLast()<!>
@@ -39,11 +39,11 @@ fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>) {
y.addFirst("") y.addFirst("")
y.addLast("") y.addLast("")
y.<!DEPRECATION!>getFirst<!>() y.getFirst()
y.<!DEPRECATION!>first<!> y.first
y.first() y.first()
y.<!DEPRECATION!>getLast<!>() y.getLast()
y.<!DEPRECATION!>last<!> y.last
y.last() y.last()
y.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeFirst; typeCall: function")!>removeFirst()<!> y.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeFirst; typeCall: function")!>removeFirst()<!>
y.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeLast; typeCall: function")!>removeLast()<!> y.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeLast; typeCall: function")!>removeLast()<!>
@@ -51,11 +51,11 @@ fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>) {
z.addFirst("") z.addFirst("")
z.addLast("") z.addLast("")
z.<!DEPRECATION!>getFirst<!>() z.getFirst()
z.<!DEPRECATION!>first<!> z.first
z.first() z.first()
z.<!DEPRECATION!>getLast<!>() z.getLast()
z.<!DEPRECATION!>last<!> z.last
z.last() z.last()
z.<!DEBUG_INFO_CALL("fqName: A.removeFirst; typeCall: function")!>removeFirst()<!> z.<!DEBUG_INFO_CALL("fqName: A.removeFirst; typeCall: function")!>removeFirst()<!>
z.<!DEBUG_INFO_CALL("fqName: A.removeLast; typeCall: function")!>removeLast()<!> z.<!DEBUG_INFO_CALL("fqName: A.removeLast; typeCall: function")!>removeLast()<!>
@@ -5,10 +5,10 @@ fun bar(x: List<String>) {
x.<!UNRESOLVED_REFERENCE!>addLast<!>("") x.<!UNRESOLVED_REFERENCE!>addLast<!>("")
x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeFirst<!>() x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeFirst<!>()
x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeLast<!>() x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeLast<!>()
x.<!DEPRECATION, JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>getFirst<!>() x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
x.<!DEPRECATION, JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>getLast<!>() x.<!UNRESOLVED_REFERENCE!>getLast<!>()
x.<!DEPRECATION!>first<!> x.<!DEPRECATION_ERROR!>first<!>
x.<!DEPRECATION!>last<!> x.<!DEPRECATION_ERROR!>last<!>
} }
// Additional test for other SequenceCollection inheritor // Additional test for other SequenceCollection inheritor
@@ -17,10 +17,10 @@ fun baz(x: ArrayDeque<String>, y: LinkedHashSet<String>) {
x.addLast("") x.addLast("")
x.removeFirst() x.removeFirst()
x.removeLast() x.removeLast()
x.<!DEPRECATION!>getFirst<!>() x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
x.<!DEPRECATION!>getLast<!>() x.<!UNRESOLVED_REFERENCE!>getLast<!>()
x.<!DEPRECATION!>first<!> x.<!DEPRECATION_ERROR!>first<!>
x.<!DEPRECATION!>last<!> x.<!DEPRECATION_ERROR!>last<!>
y.addFirst("") y.addFirst("")
y.addLast("") y.addLast("")
@@ -79,7 +79,8 @@ class JvmBuiltInsCustomizer(
storageManager.createMemoizedFunction<Pair<String, String>, Annotations> { (methodName, extensionName) -> storageManager.createMemoizedFunction<Pair<String, String>, Annotations> { (methodName, extensionName) ->
val annotation = moduleDescriptor.builtIns.createDeprecatedAnnotation( val annotation = moduleDescriptor.builtIns.createDeprecatedAnnotation(
"'$methodName()' member of List is redundant in Kotlin and might be removed soon. Please use '$extensionName()' stdlib extension instead", "'$methodName()' member of List is redundant in Kotlin and might be removed soon. Please use '$extensionName()' stdlib extension instead",
forcePropagationDeprecationToOverrides = true, forcePropagationDeprecationToOverrides = false,
level = "HIDDEN",
replaceWith = "$extensionName()" replaceWith = "$extensionName()"
) )
Annotations.create(listOf(annotation)) Annotations.create(listOf(annotation))