Introduce Common protected property AbstractMutableList.modCount #KT-57150
This commit is contained in:
committed by
Space Team
parent
1626057f75
commit
5f16fb2e4d
@@ -11,6 +11,20 @@ package kotlin.collections
|
||||
* @param E the type of elements contained in the list. The list is invariant in its element type.
|
||||
*/
|
||||
public expect abstract class AbstractMutableList<E> : MutableList<E> {
|
||||
/**
|
||||
* The number of times this list is structurally modified.
|
||||
*
|
||||
* A modification is considered to be structural if it changes the list size,
|
||||
* or otherwise changes it in a way that iterations in progress may return incorrect results.
|
||||
*
|
||||
* This value can be used by iterators returned by [iterator] and [listIterator]
|
||||
* to provide fail-fast behavoir when a concurrent modification is detected during iteration.
|
||||
* [ConcurrentModificationException] will be thrown in this case.
|
||||
*/
|
||||
// TODO: Should be @SinceKotlin("2.0"), see KT-64904
|
||||
@SinceKotlin("1.9")
|
||||
protected var modCount: Int
|
||||
|
||||
protected constructor()
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,7 +18,17 @@ package kotlin.collections
|
||||
* @param E the type of elements contained in the list. The list is invariant in its element type.
|
||||
*/
|
||||
public actual abstract class AbstractMutableList<E> protected actual constructor() : AbstractMutableCollection<E>(), MutableList<E> {
|
||||
protected var modCount: Int = 0
|
||||
/**
|
||||
* The number of times this list is structurally modified.
|
||||
*
|
||||
* A modification is considered to be structural if it changes the list size,
|
||||
* or otherwise changes it in a way that iterations in progress may return incorrect results.
|
||||
*
|
||||
* This value can be used by iterators returned by [iterator] and [listIterator]
|
||||
* to provide fail-fast behavoir when a concurrent modification is detected during iteration.
|
||||
* [ConcurrentModificationException] will be thrown in this case.
|
||||
*/
|
||||
protected actual var modCount: Int = 0
|
||||
|
||||
abstract override fun add(index: Int, element: E): Unit
|
||||
abstract override fun removeAt(index: Int): E
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.util.AbstractList
|
||||
* @param E the type of elements contained in the list. The list is invariant in its element type.
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
// removeRange: Kotlin `protected` visibility is different from Java
|
||||
// removeRange, modCount: Kotlin `protected` visibility is different from Java
|
||||
@Suppress("NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS")
|
||||
public actual abstract class AbstractMutableList<E> protected actual constructor() : MutableList<E>, AbstractList<E>() {
|
||||
/**
|
||||
|
||||
@@ -28,7 +28,7 @@ public actual abstract class AbstractMutableList<E> protected actual constructor
|
||||
* to provide fail-fast behavoir when a concurrent modification is detected during iteration.
|
||||
* [ConcurrentModificationException] will be thrown in this case.
|
||||
*/
|
||||
protected var modCount: Int = 0
|
||||
protected actual var modCount: Int = 0
|
||||
|
||||
abstract override fun add(index: Int, element: E): Unit
|
||||
abstract override fun removeAt(index: Int): E
|
||||
|
||||
Reference in New Issue
Block a user