Skip to content

Commit 91e9fbd

Browse files
mglukhikhSpace Team
authored and
Space Team
committed
K1: change depr. level of List.getFirst to HIDDEN but don't force it on overrides
#KT-65441 Fixed
1 parent d870d9d commit 91e9fbd

File tree

5 files changed

+42
-84
lines changed

5 files changed

+42
-84
lines changed

compiler/testData/diagnostics/tests/testsWithJava21/implementationsForSequencedCollection.kt

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
fun foo(ll: java.util.LinkedList<String>, al: ArrayList<String>, ad: ArrayDeque<String>, jad: java.util.ArrayDeque<String>) {
22
ll.addFirst("")
33
ll.addLast("")
4-
ll.<!DEPRECATION!>getFirst<!>()
5-
ll.<!DEPRECATION!>first<!> // synthetic property for getFirst()
4+
ll.getFirst()
5+
ll.first // synthetic property for getFirst()
66
ll.first() // stdlib extension on List
7-
ll.<!DEPRECATION!>getLast<!>()
8-
ll.<!DEPRECATION!>last<!>
7+
ll.getLast()
8+
ll.last
99
ll.last()
1010
ll.<!DEBUG_INFO_CALL("fqName: java.util.LinkedList.removeFirst; typeCall: function")!>removeFirst()<!>
1111
ll.<!DEBUG_INFO_CALL("fqName: java.util.LinkedList.removeLast; typeCall: function")!>removeLast()<!>
1212
ll.<!DEBUG_INFO_CALL("fqName: kotlin.collections.reversed; typeCall: extension function")!>reversed()<!>
1313

1414
al.addFirst("")
1515
al.addLast("")
16-
al.<!DEPRECATION!>getFirst<!>()
17-
al.<!DEPRECATION!>first<!>
16+
al.getFirst()
17+
al.first
1818
al.first()
19-
al.<!DEPRECATION!>getLast<!>()
20-
al.<!DEPRECATION!>last<!>
19+
al.getLast()
20+
al.last
2121
al.last()
2222
al.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeFirst; typeCall: function")!>removeFirst()<!>
2323
al.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeLast; typeCall: function")!>removeLast()<!>
2424
al.<!DEBUG_INFO_CALL("fqName: kotlin.collections.reversed; typeCall: extension function")!>reversed()<!>
2525

2626
ad.addFirst("")
2727
ad.addLast("")
28-
ad.<!DEPRECATION!>getFirst<!>()
29-
ad.<!DEPRECATION!>first<!>
28+
ad.<!UNRESOLVED_REFERENCE!>getFirst<!>()
29+
ad.<!DEPRECATION_ERROR!>first<!>
3030
ad.first()
31-
ad.<!DEPRECATION!>getLast<!>()
32-
ad.<!DEPRECATION!>last<!>
31+
ad.<!UNRESOLVED_REFERENCE!>getLast<!>()
32+
ad.<!DEPRECATION_ERROR!>last<!>
3333
ad.last()
3434
ad.<!DEBUG_INFO_CALL("fqName: kotlin.collections.ArrayDeque.removeFirst; typeCall: function")!>removeFirst()<!>
3535
ad.<!DEBUG_INFO_CALL("fqName: kotlin.collections.ArrayDeque.removeLast; typeCall: function")!>removeLast()<!>
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,12 @@
1-
/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
2-
override fun getFirst(): T = super.getFirst()
3-
^^^^^^^^
4-
/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
5-
override fun getFirst(): T = super.getFirst()
6-
^^^^^^^^
7-
/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
8-
override fun getLast(): T = super.getLast()
9-
^^^^^^^
10-
/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
11-
override fun getLast(): T = super.getLast()
12-
^^^^^^^
13-
/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
14-
fun superFirst2(): T = super.first
15-
^^^^^
16-
/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
17-
fun superLast2(): T = super.last
18-
^^^^
19-
/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
1+
/newListMethods.kt:30:7: error: unresolved reference: getFirst
202
x.getFirst()
213
^^^^^^^^
22-
/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
4+
/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
235
x.first // synthetic property for getFirst()
246
^^^^^
25-
/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
7+
/newListMethods.kt:33:7: error: unresolved reference: getLast
268
x.getLast()
279
^^^^^^^
28-
/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
10+
/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
2911
x.last
3012
^^^^
31-
/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
32-
y.getFirst()
33-
^^^^^^^^
34-
/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
35-
y.first
36-
^^^^^
37-
/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
38-
y.getLast()
39-
^^^^^^^
40-
/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
41-
y.last
42-
^^^^
43-
/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
44-
z.getFirst()
45-
^^^^^^^^
46-
/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
47-
z.first
48-
^^^^^
49-
/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
50-
z.getLast()
51-
^^^^^^^
52-
/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
53-
z.last
54-
^^^^
55-

compiler/testData/diagnostics/tests/testsWithJava21/newListMethods.kt

+16-16
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ class A<T> : ArrayList<T>() {
1212
super.addLast(t)
1313
}
1414

15-
override fun <!OVERRIDE_DEPRECATION!>getFirst<!>(): T = super.<!DEPRECATION!>getFirst<!>()
16-
override fun <!OVERRIDE_DEPRECATION!>getLast<!>(): T = super.<!DEPRECATION!>getLast<!>()
15+
override fun <!OVERRIDE_DEPRECATION!>getFirst<!>(): T = super.getFirst()
16+
override fun <!OVERRIDE_DEPRECATION!>getLast<!>(): T = super.getLast()
1717

18-
fun superFirst2(): T = super.<!DEPRECATION!>first<!>
19-
fun superLast2(): T = super.<!DEPRECATION!>last<!>
18+
fun superFirst2(): T = super.first
19+
fun superLast2(): T = super.last
2020

2121
override fun removeFirst(): T = super.removeFirst()
2222
override fun removeLast(): T = super.removeLast()
@@ -27,35 +27,35 @@ class A<T> : ArrayList<T>() {
2727
fun foo(x: MutableList<String>, y: ArrayList<String>, z: A<String>) {
2828
x.addFirst("")
2929
x.addLast("")
30-
x.<!DEPRECATION!>getFirst<!>()
31-
x.<!DEPRECATION!>first<!> // synthetic property for getFirst()
30+
x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
31+
x.<!DEPRECATION_ERROR!>first<!> // synthetic property for getFirst()
3232
x.first() // stdlib extension on List
33-
x.<!DEPRECATION!>getLast<!>()
34-
x.<!DEPRECATION!>last<!>
33+
x.<!UNRESOLVED_REFERENCE!>getLast<!>()
34+
x.<!DEPRECATION_ERROR!>last<!>
3535
x.last()
3636
x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.MutableList.removeFirst; typeCall: function")!>removeFirst()<!>
3737
x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.MutableList.removeLast; typeCall: function")!>removeLast()<!>
3838
x.<!DEBUG_INFO_CALL("fqName: kotlin.collections.reversed; typeCall: extension function")!>reversed()<!>
3939

4040
y.addFirst("")
4141
y.addLast("")
42-
y.<!DEPRECATION!>getFirst<!>()
43-
y.<!DEPRECATION!>first<!>
42+
y.getFirst()
43+
y.first
4444
y.first()
45-
y.<!DEPRECATION!>getLast<!>()
46-
y.<!DEPRECATION!>last<!>
45+
y.getLast()
46+
y.last
4747
y.last()
4848
y.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeFirst; typeCall: function")!>removeFirst()<!>
4949
y.<!DEBUG_INFO_CALL("fqName: java.util.ArrayList.removeLast; typeCall: function")!>removeLast()<!>
5050
y.<!DEBUG_INFO_CALL("fqName: kotlin.collections.reversed; typeCall: extension function")!>reversed()<!>
5151

5252
z.addFirst("")
5353
z.addLast("")
54-
z.<!DEPRECATION!>getFirst<!>()
55-
z.<!DEPRECATION!>first<!>
54+
z.getFirst()
55+
z.first
5656
z.first()
57-
z.<!DEPRECATION!>getLast<!>()
58-
z.<!DEPRECATION!>last<!>
57+
z.getLast()
58+
z.last
5959
z.last()
6060
z.<!DEBUG_INFO_CALL("fqName: A.removeFirst; typeCall: function")!>removeFirst()<!>
6161
z.<!DEBUG_INFO_CALL("fqName: A.removeLast; typeCall: function")!>removeLast()<!>

compiler/testData/diagnostics/tests/testsWithJava21/newListMethodsImmutable.kt

+8-8
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ fun bar(x: List<String>) {
55
x.<!UNRESOLVED_REFERENCE!>addLast<!>("")
66
x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeFirst<!>()
77
x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>removeLast<!>()
8-
x.<!DEPRECATION, JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>getFirst<!>()
9-
x.<!DEPRECATION, JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE!>getLast<!>()
10-
x.<!DEPRECATION!>first<!>
11-
x.<!DEPRECATION!>last<!>
8+
x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
9+
x.<!UNRESOLVED_REFERENCE!>getLast<!>()
10+
x.<!DEPRECATION_ERROR!>first<!>
11+
x.<!DEPRECATION_ERROR!>last<!>
1212
}
1313

1414
// Additional test for other SequenceCollection inheritor
@@ -17,10 +17,10 @@ fun baz(x: ArrayDeque<String>, y: LinkedHashSet<String>) {
1717
x.addLast("")
1818
x.removeFirst()
1919
x.removeLast()
20-
x.<!DEPRECATION!>getFirst<!>()
21-
x.<!DEPRECATION!>getLast<!>()
22-
x.<!DEPRECATION!>first<!>
23-
x.<!DEPRECATION!>last<!>
20+
x.<!UNRESOLVED_REFERENCE!>getFirst<!>()
21+
x.<!UNRESOLVED_REFERENCE!>getLast<!>()
22+
x.<!DEPRECATION_ERROR!>first<!>
23+
x.<!DEPRECATION_ERROR!>last<!>
2424

2525
y.addFirst("")
2626
y.addLast("")

core/descriptors.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsCustomizer.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ class JvmBuiltInsCustomizer(
7979
storageManager.createMemoizedFunction<Pair<String, String>, Annotations> { (methodName, extensionName) ->
8080
val annotation = moduleDescriptor.builtIns.createDeprecatedAnnotation(
8181
"'$methodName()' member of List is redundant in Kotlin and might be removed soon. Please use '$extensionName()' stdlib extension instead",
82-
forcePropagationDeprecationToOverrides = true,
82+
forcePropagationDeprecationToOverrides = false,
83+
level = "HIDDEN",
8384
replaceWith = "$extensionName()"
8485
)
8586
Annotations.create(listOf(annotation))

0 commit comments

Comments
 (0)