From bc0967c08ebb596270555f2b8076b028364fc985 Mon Sep 17 00:00:00 2001 From: odersky Date: Wed, 8 Oct 2025 13:36:23 +0200 Subject: [PATCH] Drop redundant `Pure` parent traits in stdlib --- library/src/scala/collection/IndexedSeq.scala | 3 +-- library/src/scala/collection/SeqMap.scala | 3 +-- library/src/scala/collection/immutable/ArraySeq.scala | 3 +-- library/src/scala/collection/immutable/Seq.scala | 3 +-- .../src/scala/collection/immutable/StrictOptimizedSeqOps.scala | 3 +-- library/src/scala/collection/immutable/WrappedString.scala | 3 +-- library/src/scala/collection/mutable/IndexedSeq.scala | 3 +-- 7 files changed, 7 insertions(+), 14 deletions(-) diff --git a/library/src/scala/collection/IndexedSeq.scala b/library/src/scala/collection/IndexedSeq.scala index fda8703f60a5..a2c9fcd1bd25 100644 --- a/library/src/scala/collection/IndexedSeq.scala +++ b/library/src/scala/collection/IndexedSeq.scala @@ -24,8 +24,7 @@ import scala.math.Ordering /** Base trait for indexed sequences that have efficient `apply` and `length` */ trait IndexedSeq[+A] extends Seq[A] with IndexedSeqOps[A, IndexedSeq, IndexedSeq[A]] - with IterableFactoryDefaults[A, IndexedSeq] - with caps.Pure { + with IterableFactoryDefaults[A, IndexedSeq] { @nowarn("""cat=deprecation&origin=scala\.collection\.Iterable\.stringPrefix""") override protected[this] def stringPrefix: String = "IndexedSeq" diff --git a/library/src/scala/collection/SeqMap.scala b/library/src/scala/collection/SeqMap.scala index 076ae34c9752..eaf7bcea6852 100644 --- a/library/src/scala/collection/SeqMap.scala +++ b/library/src/scala/collection/SeqMap.scala @@ -32,8 +32,7 @@ import scala.annotation.nowarn trait SeqMap[K, +V] extends Map[K, V] with MapOps[K, V, SeqMap, SeqMap[K, V]] - with MapFactoryDefaults[K, V, SeqMap, Iterable] - with caps.Pure { + with MapFactoryDefaults[K, V, SeqMap, Iterable] { @nowarn("""cat=deprecation&origin=scala\.collection\.Iterable\.stringPrefix""") override protected[this] def stringPrefix: String = "SeqMap" diff --git a/library/src/scala/collection/immutable/ArraySeq.scala b/library/src/scala/collection/immutable/ArraySeq.scala index d3e21515b95e..f0ca1bb2b3c9 100644 --- a/library/src/scala/collection/immutable/ArraySeq.scala +++ b/library/src/scala/collection/immutable/ArraySeq.scala @@ -41,8 +41,7 @@ sealed abstract class ArraySeq[+A] with IndexedSeqOps[A, ArraySeq, ArraySeq[A]] with StrictOptimizedSeqOps[A, ArraySeq, ArraySeq[A]] with EvidenceIterableFactoryDefaults[A, ArraySeq, ClassTag] - with Serializable - with caps.Pure { + with Serializable{ /** The tag of the element type. This does not have to be equal to the element type of this ArraySeq. A primitive * ArraySeq can be backed by an array of boxed values and a reference ArraySeq can be backed by an array of a supertype diff --git a/library/src/scala/collection/immutable/Seq.scala b/library/src/scala/collection/immutable/Seq.scala index cb6655c9b44c..f46b6770ac9b 100644 --- a/library/src/scala/collection/immutable/Seq.scala +++ b/library/src/scala/collection/immutable/Seq.scala @@ -122,8 +122,7 @@ object IndexedSeq extends SeqFactory.Delegate[IndexedSeq](Vector) { /** Base trait for immutable indexed Seq operations */ transparent trait IndexedSeqOps[+A, +CC[B] <: caps.Pure, +C] extends SeqOps[A, CC, C] - with collection.IndexedSeqOps[A, CC, C] - with caps.Pure { + with collection.IndexedSeqOps[A, CC, C] { override def slice(from: Int, until: Int): C = { // since we are immutable we can just share the same collection diff --git a/library/src/scala/collection/immutable/StrictOptimizedSeqOps.scala b/library/src/scala/collection/immutable/StrictOptimizedSeqOps.scala index c66c26ef1a05..6bd8130980d1 100644 --- a/library/src/scala/collection/immutable/StrictOptimizedSeqOps.scala +++ b/library/src/scala/collection/immutable/StrictOptimizedSeqOps.scala @@ -25,8 +25,7 @@ transparent trait StrictOptimizedSeqOps[+A, +CC[B] <: caps.Pure, +C] extends Any with SeqOps[A, CC, C] with collection.StrictOptimizedSeqOps[A, CC, C] - with StrictOptimizedIterableOps[A, CC, C] - with caps.Pure { + with StrictOptimizedIterableOps[A, CC, C] { override def distinctBy[B](f: A -> B): C = { if (lengthCompare(1) <= 0) coll diff --git a/library/src/scala/collection/immutable/WrappedString.scala b/library/src/scala/collection/immutable/WrappedString.scala index af2bdd6566e8..4ff83b8c47dd 100644 --- a/library/src/scala/collection/immutable/WrappedString.scala +++ b/library/src/scala/collection/immutable/WrappedString.scala @@ -37,8 +37,7 @@ import scala.collection.mutable.{Builder, StringBuilder} @SerialVersionUID(3L) final class WrappedString(private val self: String) extends AbstractSeq[Char] with IndexedSeq[Char] with IndexedSeqOps[Char, IndexedSeq, WrappedString] - with Serializable - with caps.Pure { + with Serializable { def apply(i: Int): Char = self.charAt(i) diff --git a/library/src/scala/collection/mutable/IndexedSeq.scala b/library/src/scala/collection/mutable/IndexedSeq.scala index 0f2c7b457613..46dfc7e85f60 100644 --- a/library/src/scala/collection/mutable/IndexedSeq.scala +++ b/library/src/scala/collection/mutable/IndexedSeq.scala @@ -29,8 +29,7 @@ object IndexedSeq extends SeqFactory.Delegate[IndexedSeq](ArrayBuffer) transparent trait IndexedSeqOps[A, +CC[_] <: caps.Pure, +C <: AnyRef] extends scala.collection.IndexedSeqOps[A, CC, C] - with SeqOps[A, CC, C] - with caps.Pure { + with SeqOps[A, CC, C] { /** Modifies this $coll by applying a function to all elements of this $coll. *