Skip to content

Commit 8e42c37

Browse files
committed
SI-4763 Deprecated the cloneable annotation
1 parent bbd4886 commit 8e42c37

File tree

12 files changed

+24
-14
lines changed

12 files changed

+24
-14
lines changed

src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1322,7 +1322,7 @@ abstract class GenASM extends SubComponent with BytecodeWriters {
13221322
// Additional interface parents based on annotations and other cues
13231323
def newParentForAttr(attr: Symbol): Option[Symbol] = attr match {
13241324
case SerializableAttr => Some(SerializableClass)
1325-
case CloneableAttr => Some(JavaCloneableClass)
1325+
case CloneableAttr => Some(CloneableClass)
13261326
case RemoteAttr => Some(RemoteInterfaceClass)
13271327
case _ => None
13281328
}

src/library/scala/Cloneable.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/* __ *\
2+
** ________ ___ / / ___ Scala API **
3+
** / __/ __// _ | / / / _ | (c) 2002-2011, LAMP/EPFL **
4+
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
5+
** /____/\___/_/ |_/____/_/ | | **
6+
** |/ **
7+
\* */
8+
9+
package scala
10+
11+
/**
12+
* Classes extending this trait are cloneable across platforms (Java, .NET).
13+
*/
14+
trait Cloneable extends java.lang.Cloneable

src/library/scala/annotation/cloneable.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
** |/ **
77
\* */
88

9-
10-
119
package scala.annotation
1210

1311
/**
1412
* An annotation that designates the class to which it is applied as cloneable
1513
*/
14+
@deprecated("instead of `@cloneable class C`, use `class C extends Cloneable`", "2.10.0")
1615
class cloneable extends annotation.StaticAnnotation

src/library/scala/collection/mutable/ArrayStack.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ object ArrayStack extends SeqFactory[ArrayStack] {
5959
* @define mayNotTerminateInf
6060
* @define willNotTerminateInf
6161
*/
62-
@cloneable @SerialVersionUID(8565219180626620510L)
62+
@SerialVersionUID(8565219180626620510L)
6363
class ArrayStack[T] private(private var table : Array[AnyRef],
6464
private var index : Int)
6565
extends AbstractSeq[T]

src/library/scala/collection/mutable/Buffer.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ import generic._
2828
* @define Coll `Buffer`
2929
* @define coll buffer
3030
*/
31-
@cloneable
3231
trait Buffer[A] extends Seq[A]
3332
with GenericTraversableTemplate[A, Buffer]
34-
with BufferLike[A, Buffer[A]] {
33+
with BufferLike[A, Buffer[A]]
34+
with scala.Cloneable {
3535
override def companion: GenericCompanion[Buffer] = Buffer
3636
}
3737

src/library/scala/collection/mutable/BufferLike.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ import annotation.{migration, bridge}
5858
* mutates the collection in place, unlike similar but
5959
* undeprecated methods throughout the collections hierarchy.
6060
*/
61-
@cloneable
6261
trait BufferLike[A, +This <: BufferLike[A, This] with Buffer[A]]
6362
extends Growable[A]
6463
with Shrinkable[A]
6564
with Scriptable[A]
6665
with Subtractable[A, This]
6766
with SeqLike[A, This]
67+
with scala.Cloneable
6868
{ self : This =>
6969

7070
// Abstract methods from Seq:

src/library/scala/collection/mutable/Cloneable.scala

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ package mutable
1717
*
1818
* @tparam A Type of the elements contained in the collection, covariant and with reference types as upperbound.
1919
*/
20-
@cloneable
21-
trait Cloneable[+A <: AnyRef] {
22-
// !!! why doesn't this extend java.lang.Cloneable?
23-
// because neither did @serializable, then we changed it to Serializable
20+
trait Cloneable[+A <: AnyRef] extends scala.Cloneable {
2421
override def clone: A = super.clone().asInstanceOf[A]
2522
}

src/library/scala/collection/mutable/PriorityQueue.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import generic._
3131
* @define mayNotTerminateInf
3232
* @define willNotTerminateInf
3333
*/
34-
@cloneable
3534
class PriorityQueue[A](implicit val ord: Ordering[A])
3635
extends AbstractIterable[A]
3736
with Iterable[A]
@@ -40,6 +39,7 @@ class PriorityQueue[A](implicit val ord: Ordering[A])
4039
with Growable[A]
4140
with Builder[A, PriorityQueue[A]]
4241
with Serializable
42+
with scala.Cloneable
4343
{
4444
import ord._
4545

src/library/scala/collection/mutable/Queue.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import generic._
3030
* @define mayNotTerminateInf
3131
* @define willNotTerminateInf
3232
*/
33-
@cloneable
3433
class Queue[A]
3534
extends MutableList[A]
3635
with GenericTraversableTemplate[A, Queue]

src/library/scala/collection/mutable/Stack.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ object Stack extends SeqFactory[Stack] {
5353
* @define mayNotTerminateInf
5454
* @define willNotTerminateInf
5555
*/
56-
@cloneable
5756
class Stack[A] private (var elems: List[A])
5857
extends AbstractSeq[A]
5958
with Seq[A]

0 commit comments

Comments
 (0)