From baa13bc3d39bbf44418611efec2a8dd0711c4d21 Mon Sep 17 00:00:00 2001 From: Hamza Remmal Date: Mon, 17 Nov 2025 13:33:31 +0100 Subject: [PATCH 1/4] chore: port all `toString` method in the Scala 2 inherited stdlib to be nullary functions --- library/src/scala/Boolean.scala | 2 +- library/src/scala/Byte.scala | 2 +- library/src/scala/Char.scala | 2 +- library/src/scala/Double.scala | 2 +- library/src/scala/Float.scala | 2 +- library/src/scala/Int.scala | 2 +- library/src/scala/Long.scala | 2 +- library/src/scala/Predef.scala | 4 ++-- library/src/scala/Proxy.scala | 2 +- .../src/scala/ScalaReflectionException.scala | 2 +- library/src/scala/Short.scala | 2 +- .../src/scala/UninitializedFieldError.scala | 2 +- library/src/scala/Unit.scala | 2 +- library/src/scala/collection/ArrayOps.scala | 2 +- library/src/scala/collection/Iterable.scala | 2 +- library/src/scala/collection/Iterator.scala | 2 +- library/src/scala/collection/LazyZipOps.scala | 6 +++--- library/src/scala/collection/MapView.scala | 2 +- library/src/scala/collection/StringOps.scala | 4 ++-- library/src/scala/collection/View.scala | 2 +- .../scala/collection/concurrent/TrieMap.scala | 4 ++-- .../scala/collection/immutable/HashMap.scala | 4 ++-- .../scala/collection/immutable/HashSet.scala | 2 +- .../collection/immutable/NumericRange.scala | 2 +- .../scala/collection/immutable/Range.scala | 4 ++-- .../collection/immutable/RedBlackTree.scala | 2 +- .../scala/collection/immutable/Stream.scala | 2 +- .../collection/immutable/TreeSeqMap.scala | 2 +- .../scala/collection/immutable/Vector.scala | 6 +++--- .../collection/immutable/WrappedString.scala | 2 +- .../collection/mutable/ArrayBuilder.scala | 20 +++++++++---------- .../mutable/CollisionProofHashMap.scala | 4 ++-- .../scala/collection/mutable/HashMap.scala | 2 +- .../scala/collection/mutable/HashSet.scala | 2 +- .../collection/mutable/RedBlackTree.scala | 2 +- .../collection/mutable/StringBuilder.scala | 2 +- .../collection/mutable/UnrolledBuffer.scala | 2 +- library/src/scala/concurrent/Future.scala | 2 +- .../scala/concurrent/duration/Duration.scala | 8 ++++---- .../src/scala/concurrent/impl/Promise.scala | 4 ++-- library/src/scala/io/Codec.scala | 2 +- library/src/scala/math/BigDecimal.scala | 2 +- library/src/scala/package.scala | 2 +- library/src/scala/ref/Reference.scala | 2 +- library/src/scala/ref/ReferenceQueue.scala | 2 +- .../reflect/ClassManifestDeprecatedApis.scala | 4 ++-- library/src/scala/reflect/ClassTag.scala | 2 +- library/src/scala/reflect/Manifest.scala | 8 ++++---- library/src/scala/reflect/NoManifest.scala | 2 +- .../src/scala/runtime/ArrayCharSequence.scala | 2 +- library/src/scala/runtime/LazyRef.scala | 20 +++++++++---------- library/src/scala/runtime/Tuple2Zipped.scala | 2 +- library/src/scala/runtime/Tuple3Zipped.scala | 2 +- library/src/scala/sys/PropImpl.scala | 2 +- .../sys/process/ProcessBuilderImpl.scala | 4 ++-- library/src/scala/typeConstraints.scala | 2 +- library/src/scala/util/DynamicVariable.scala | 2 +- library/src/scala/util/matching/Regex.scala | 6 +++--- 58 files changed, 97 insertions(+), 97 deletions(-) diff --git a/library/src/scala/Boolean.scala b/library/src/scala/Boolean.scala index 5df9184b5e30..fcffb481b294 100644 --- a/library/src/scala/Boolean.scala +++ b/library/src/scala/Boolean.scala @@ -136,7 +136,7 @@ object Boolean extends AnyValCompanion { def unbox(x: java.lang.Object): Boolean = ??? /** The String representation of the scala.Boolean companion object. */ - override def toString = "object scala.Boolean" + override def toString() = "object scala.Boolean" } diff --git a/library/src/scala/Byte.scala b/library/src/scala/Byte.scala index c1f0e81f746b..4411af029fc2 100644 --- a/library/src/scala/Byte.scala +++ b/library/src/scala/Byte.scala @@ -477,7 +477,7 @@ object Byte extends AnyValCompanion { def unbox(x: java.lang.Object): Byte = ??? /** The String representation of the scala.Byte companion object. */ - override def toString = "object scala.Byte" + override def toString() = "object scala.Byte" /** Language mandated coercions from Byte to "wider" types. */ import scala.language.implicitConversions implicit def byte2short(x: Byte): Short = x.toShort diff --git a/library/src/scala/Char.scala b/library/src/scala/Char.scala index 06a6e186901b..2676676acf27 100644 --- a/library/src/scala/Char.scala +++ b/library/src/scala/Char.scala @@ -477,7 +477,7 @@ object Char extends AnyValCompanion { def unbox(x: java.lang.Object): Char = ??? /** The String representation of the scala.Char companion object. */ - override def toString = "object scala.Char" + override def toString() = "object scala.Char" /** Language mandated coercions from Char to "wider" types. */ import scala.language.implicitConversions implicit def char2int(x: Char): Int = x.toInt diff --git a/library/src/scala/Double.scala b/library/src/scala/Double.scala index 57e99999198b..ee814f97be16 100644 --- a/library/src/scala/Double.scala +++ b/library/src/scala/Double.scala @@ -252,6 +252,6 @@ object Double extends AnyValCompanion { def unbox(x: java.lang.Object): Double = ??? /** The String representation of the scala.Double companion object. */ - override def toString = "object scala.Double" + override def toString() = "object scala.Double" } diff --git a/library/src/scala/Float.scala b/library/src/scala/Float.scala index 1f8b00886258..fc6cced40b5d 100644 --- a/library/src/scala/Float.scala +++ b/library/src/scala/Float.scala @@ -252,7 +252,7 @@ object Float extends AnyValCompanion { def unbox(x: java.lang.Object): Float = ??? /** The String representation of the scala.Float companion object. */ - override def toString = "object scala.Float" + override def toString() = "object scala.Float" /** Language mandated coercions from Float to "wider" types. */ import scala.language.implicitConversions implicit def float2double(x: Float): Double = x.toDouble diff --git a/library/src/scala/Int.scala b/library/src/scala/Int.scala index a3fff7e991da..dcaa1d2ff828 100644 --- a/library/src/scala/Int.scala +++ b/library/src/scala/Int.scala @@ -477,7 +477,7 @@ object Int extends AnyValCompanion { def unbox(x: java.lang.Object): Int = ??? /** The String representation of the scala.Int companion object. */ - override def toString = "object scala.Int" + override def toString() = "object scala.Int" /** Language mandated coercions from Int to "wider" types. */ import scala.language.implicitConversions @deprecated("Implicit conversion from Int to Float is dangerous because it loses precision. Write `.toFloat` instead.", "2.13.1") diff --git a/library/src/scala/Long.scala b/library/src/scala/Long.scala index 2561c1ec74c2..7c0643b0b2f4 100644 --- a/library/src/scala/Long.scala +++ b/library/src/scala/Long.scala @@ -474,7 +474,7 @@ object Long extends AnyValCompanion { def unbox(x: java.lang.Object): Long = ??? /** The String representation of the scala.Long companion object. */ - override def toString = "object scala.Long" + override def toString() = "object scala.Long" /** Language mandated coercions from Long to "wider" types. */ import scala.language.implicitConversions @deprecated("Implicit conversion from Long to Float is dangerous because it loses precision. Write `.toFloat` instead.", "2.13.1") diff --git a/library/src/scala/Predef.scala b/library/src/scala/Predef.scala index 5cb4742bf168..3cad7f7f9b5f 100644 --- a/library/src/scala/Predef.scala +++ b/library/src/scala/Predef.scala @@ -442,7 +442,7 @@ object Predef extends LowPriorityImplicits { def length: Int = sequenceOfChars.length def charAt(index: Int): Char = sequenceOfChars(index) def subSequence(start: Int, end: Int): CharSequence = new SeqCharSequence(sequenceOfChars.slice(start, end)) - override def toString = sequenceOfChars.mkString + override def toString() = sequenceOfChars.mkString } /** @group char-sequence-wrappers */ @@ -453,7 +453,7 @@ object Predef extends LowPriorityImplicits { def length: Int = arrayOfChars.length def charAt(index: Int): Char = arrayOfChars(index) def subSequence(start: Int, end: Int): CharSequence = new runtime.ArrayCharSequence(arrayOfChars, start, end) - override def toString = arrayOfChars.mkString + override def toString() = arrayOfChars.mkString } /** @group char-sequence-wrappers */ diff --git a/library/src/scala/Proxy.scala b/library/src/scala/Proxy.scala index 5d70bc3bdd10..81f097a67c2e 100644 --- a/library/src/scala/Proxy.scala +++ b/library/src/scala/Proxy.scala @@ -36,7 +36,7 @@ trait Proxy extends Any { val x = that.asInstanceOf[AnyRef] (x eq this.asInstanceOf[AnyRef]) || (x eq self.asInstanceOf[AnyRef]) || (x.equals(self)) } - override def toString = "" + self + override def toString() = "" + self } @deprecated("All members of this object are deprecated.", "2.13.0") diff --git a/library/src/scala/ScalaReflectionException.scala b/library/src/scala/ScalaReflectionException.scala index 9a36ad305488..0626c79363fe 100644 --- a/library/src/scala/ScalaReflectionException.scala +++ b/library/src/scala/ScalaReflectionException.scala @@ -6,4 +6,4 @@ import scala.language.`2.13` case class ScalaReflectionException(msg: String) extends Exception(msg) object ScalaReflectionException extends scala.runtime.AbstractFunction1[String, ScalaReflectionException]: - override def toString: String = "ScalaReflectionException" + override def toString(): String = "ScalaReflectionException" diff --git a/library/src/scala/Short.scala b/library/src/scala/Short.scala index 03b0929ea5ce..ed94d655d656 100644 --- a/library/src/scala/Short.scala +++ b/library/src/scala/Short.scala @@ -477,7 +477,7 @@ object Short extends AnyValCompanion { def unbox(x: java.lang.Object): Short = ??? /** The String representation of the scala.Short companion object. */ - override def toString = "object scala.Short" + override def toString() = "object scala.Short" /** Language mandated coercions from Short to "wider" types. */ import scala.language.implicitConversions implicit def short2int(x: Short): Int = x.toInt diff --git a/library/src/scala/UninitializedFieldError.scala b/library/src/scala/UninitializedFieldError.scala index 8accced02391..d1530c6818f7 100644 --- a/library/src/scala/UninitializedFieldError.scala +++ b/library/src/scala/UninitializedFieldError.scala @@ -25,4 +25,4 @@ final case class UninitializedFieldError(msg: String) extends RuntimeException(m } object UninitializedFieldError extends scala.runtime.AbstractFunction1[String, UninitializedFieldError]: - override def toString: String = "UninitializedFieldError" + override def toString(): String = "UninitializedFieldError" diff --git a/library/src/scala/Unit.scala b/library/src/scala/Unit.scala index e7ad25073f50..ab5f1a9b4a3d 100644 --- a/library/src/scala/Unit.scala +++ b/library/src/scala/Unit.scala @@ -55,6 +55,6 @@ object Unit extends AnyValCompanion { def unbox(x: java.lang.Object): Unit = x.asInstanceOf[scala.runtime.BoxedUnit] /** The String representation of the scala.Unit companion object. */ - override def toString = "object scala.Unit" + override def toString() = "object scala.Unit" } diff --git a/library/src/scala/collection/ArrayOps.scala b/library/src/scala/collection/ArrayOps.scala index 11078a63bbbd..a8897b1d26fe 100644 --- a/library/src/scala/collection/ArrayOps.scala +++ b/library/src/scala/collection/ArrayOps.scala @@ -60,7 +60,7 @@ object ArrayOps { private class ArrayView[A](xs: Array[A]) extends AbstractIndexedSeqView[A] { def length = xs.length def apply(n: Int) = xs(n) - override def toString: String = immutable.ArraySeq.unsafeWrapArray(xs).mkString("ArrayView(", ", ", ")") + override def toString(): String = immutable.ArraySeq.unsafeWrapArray(xs).mkString("ArrayView(", ", ", ")") } /** A lazy filtered array. No filtering is applied until one of `foreach`, `map` or `flatMap` is called. */ diff --git a/library/src/scala/collection/Iterable.scala b/library/src/scala/collection/Iterable.scala index 1a1044839d33..1ab43667b871 100644 --- a/library/src/scala/collection/Iterable.scala +++ b/library/src/scala/collection/Iterable.scala @@ -78,7 +78,7 @@ trait Iterable[+A] extends IterableOnce[A] * string consists of the `className` of this $coll, followed * by all elements separated by commas and enclosed in parentheses. */ - override def toString = mkString(className + "(", ", ", ")") + override def toString() = mkString(className + "(", ", ", ")") /** Analogous to `zip` except that the elements in each collection are not consumed until a strict operation is * invoked on the returned `LazyZip2` decorator. diff --git a/library/src/scala/collection/Iterator.scala b/library/src/scala/collection/Iterator.scala index 55aaf5469729..6fc53c3d7470 100644 --- a/library/src/scala/collection/Iterator.scala +++ b/library/src/scala/collection/Iterator.scala @@ -977,7 +977,7 @@ trait Iterator[+A] extends IterableOnce[A] with IterableOnceOps[A, Iterator, Ite * @return `""` * @note Reuse: $preservesIterator */ - override def toString = "" + override def toString() = "" @deprecated("Iterator.seq always returns the iterator itself", "2.13.0") def seq: this.type = this diff --git a/library/src/scala/collection/LazyZipOps.scala b/library/src/scala/collection/LazyZipOps.scala index 899227167fee..c91155128833 100644 --- a/library/src/scala/collection/LazyZipOps.scala +++ b/library/src/scala/collection/LazyZipOps.scala @@ -133,7 +133,7 @@ final class LazyZip2[+El1, +El2, C1] private[collection](src: C1, coll1: Iterabl } } - override def toString = s"$coll1.lazyZip($coll2)" + override def toString() = s"$coll1.lazyZip($coll2)" } object LazyZip2 { @@ -273,7 +273,7 @@ final class LazyZip3[+El1, +El2, +El3, C1] private[collection](src: C1, } } - override def toString = s"$coll1.lazyZip($coll2).lazyZip($coll3)" + override def toString() = s"$coll1.lazyZip($coll2).lazyZip($coll3)" } object LazyZip3 { @@ -415,7 +415,7 @@ final class LazyZip4[+El1, +El2, +El3, +El4, C1] private[collection](src: C1, } } - override def toString = s"$coll1.lazyZip($coll2).lazyZip($coll3).lazyZip($coll4)" + override def toString() = s"$coll1.lazyZip($coll2).lazyZip($coll3).lazyZip($coll4)" } object LazyZip4 { diff --git a/library/src/scala/collection/MapView.scala b/library/src/scala/collection/MapView.scala index 4b021acd5c05..67e81eccf6cc 100644 --- a/library/src/scala/collection/MapView.scala +++ b/library/src/scala/collection/MapView.scala @@ -68,7 +68,7 @@ trait MapView[K, +V] override def withFilter(p: ((K, V)) => Boolean): MapOps.WithFilter[K, V, View, ({ type l[X, Y] = View[(X, Y)] })#l]^{this, p} = new MapOps.WithFilter(this, p) - override def toString: String = super[View].toString + override def toString(): String = super[View].toString @nowarn("""cat=deprecation&origin=scala\.collection\.Iterable\.stringPrefix""") override protected def stringPrefix: String = "MapView" diff --git a/library/src/scala/collection/StringOps.scala b/library/src/scala/collection/StringOps.scala index 4445b27e9d07..f72d4553b560 100644 --- a/library/src/scala/collection/StringOps.scala +++ b/library/src/scala/collection/StringOps.scala @@ -1649,8 +1649,8 @@ final case class StringView(s: String) extends AbstractIndexedSeqView[Char] { def length = s.length @throws[StringIndexOutOfBoundsException] def apply(n: Int) = s.charAt(n) - override def toString: String = s"StringView($s)" + override def toString(): String = s"StringView($s)" } object StringView extends scala.runtime.AbstractFunction1[String, StringView]: - override def toString: String = "StringView" + override def toString(): String = "StringView" diff --git a/library/src/scala/collection/View.scala b/library/src/scala/collection/View.scala index f55f2e07578f..b74e9e5f7362 100644 --- a/library/src/scala/collection/View.scala +++ b/library/src/scala/collection/View.scala @@ -35,7 +35,7 @@ trait View[+A] extends Iterable[A] with IterableOps[A, View, View[A]] with Itera override def empty: scala.collection.View[A] = iterableFactory.empty - override def toString: String = className + "()" + override def toString(): String = className + "()" @nowarn("""cat=deprecation&origin=scala\.collection\.Iterable\.stringPrefix""") override protected def stringPrefix: String = "View" diff --git a/library/src/scala/collection/concurrent/TrieMap.scala b/library/src/scala/collection/concurrent/TrieMap.scala index 98641bcc680d..56fe8b6a17ea 100644 --- a/library/src/scala/collection/concurrent/TrieMap.scala +++ b/library/src/scala/collection/concurrent/TrieMap.scala @@ -446,7 +446,7 @@ private[concurrent] final class FailedNode[K, V](p: MainNode[K, V]) extends Main def knownSize: Int = throw new UnsupportedOperationException - override def toString: String = "FailedNode(%s)".format(p) + override def toString(): String = "FailedNode(%s)".format(p) } @@ -643,7 +643,7 @@ private[collection] final class CNode[K, V](val bitmap: Int, val array: Array[Ba def string(lev: Int): String = "CNode %x\n%s".format(bitmap, array.map(_.string(lev + 1)).mkString("\n")) - override def toString = { + override def toString() = { def elems: Seq[String] = array.flatMap { case sn: SNode[K, V] @uc => Iterable.single(sn.kvPair._2.toString) case in: INode[K, V] @uc => Iterable.single(augmentString(in.toString).drop(14) + "(" + in.gen + ")") diff --git a/library/src/scala/collection/immutable/HashMap.scala b/library/src/scala/collection/immutable/HashMap.scala index f2d7b4bb45e7..b323357db2b7 100644 --- a/library/src/scala/collection/immutable/HashMap.scala +++ b/library/src/scala/collection/immutable/HashMap.scala @@ -1348,7 +1348,7 @@ private final class BitmapIndexedMapNode[K, +V]( override def hashCode(): Int = throw new UnsupportedOperationException("Trie nodes do not support hashing.") - override def toString = s"${getClass.getName}@${Integer.toHexString(System.identityHashCode(this))}" + override def toString() = s"${getClass.getName}@${Integer.toHexString(System.identityHashCode(this))}" override def concat[V1 >: V](that: MapNode[K, V1], shift: Int): BitmapIndexedMapNode[K, V1] = that match { case bm: BitmapIndexedMapNode[K, V] @unchecked => @@ -2095,7 +2095,7 @@ private final class HashCollisionMapNode[K, +V ]( override def hashCode(): Int = throw new UnsupportedOperationException("Trie nodes do not support hashing.") - override def toString = s"${getClass.getName}@${Integer.toHexString(System.identityHashCode(this))}" + override def toString() = s"${getClass.getName}@${Integer.toHexString(System.identityHashCode(this))}" override def cachedJavaKeySetHashCode: Int = size * hash diff --git a/library/src/scala/collection/immutable/HashSet.scala b/library/src/scala/collection/immutable/HashSet.scala index a042f6256c80..68162b655e77 100644 --- a/library/src/scala/collection/immutable/HashSet.scala +++ b/library/src/scala/collection/immutable/HashSet.scala @@ -1424,7 +1424,7 @@ private final class BitmapIndexedSetNode[A]( override def hashCode(): Int = throw new UnsupportedOperationException("Trie nodes do not support hashing.") - override def toString: String = f"BitmapIndexedSetNode(size=$size, dataMap=$dataMap%x, nodeMap=$nodeMap%x)" // content=${scala.runtime.ScalaRunTime.stringOf(content)} + override def toString(): String = f"BitmapIndexedSetNode(size=$size, dataMap=$dataMap%x, nodeMap=$nodeMap%x)" // content=${scala.runtime.ScalaRunTime.stringOf(content)} override def copy(): BitmapIndexedSetNode[A] = { val contentClone = content.clone() diff --git a/library/src/scala/collection/immutable/NumericRange.scala b/library/src/scala/collection/immutable/NumericRange.scala index f5c29028b820..9968c424ce04 100644 --- a/library/src/scala/collection/immutable/NumericRange.scala +++ b/library/src/scala/collection/immutable/NumericRange.scala @@ -362,7 +362,7 @@ sealed class NumericRange[T]( super.equals(other) } - override def toString: String = { + override def toString(): String = { val empty = if (isEmpty) "empty " else "" val preposition = if (isInclusive) "to" else "until" val stepped = if (step == 1) "" else s" by $step" diff --git a/library/src/scala/collection/immutable/Range.scala b/library/src/scala/collection/immutable/Range.scala index 612b551a5fd5..b85fc71f2772 100644 --- a/library/src/scala/collection/immutable/Range.scala +++ b/library/src/scala/collection/immutable/Range.scala @@ -531,7 +531,7 @@ sealed abstract class Range( if(length >= 2) MurmurHash3.rangeHash(start, step, lastElement) else super.hashCode - final override def toString: String = { + final override def toString(): String = { val preposition = if (isInclusive) "to" else "until" val stepped = if (step == 1) "" else s" by $step" @@ -674,7 +674,7 @@ object Range { // we offer a partially constructed object. class Partial[T, U](private val f: T => U) extends AnyVal { self: Partial[T, U]^ => def by(x: T): U = f(x) - override def toString = "Range requires step" + override def toString() = "Range requires step" } // Illustrating genericity with Int Range, which should have the same behavior diff --git a/library/src/scala/collection/immutable/RedBlackTree.scala b/library/src/scala/collection/immutable/RedBlackTree.scala index 8582ee0bb4fb..4bbba28b7ae5 100644 --- a/library/src/scala/collection/immutable/RedBlackTree.scala +++ b/library/src/scala/collection/immutable/RedBlackTree.scala @@ -582,7 +582,7 @@ private[collection] object RedBlackTree { //Note - only used in tests outside RedBlackTree @`inline` private[immutable] final def isRed = _count >= 0 - override def toString: String = s"${if(isRed) "RedTree" else "BlackTree"}($key, $value, $left, $right)" + override def toString(): String = s"${if(isRed) "RedTree" else "BlackTree"}($key, $value, $left, $right)" //mutable APIs private[RedBlackTree] def makeImmutable: this.type = { diff --git a/library/src/scala/collection/immutable/Stream.scala b/library/src/scala/collection/immutable/Stream.scala index 05e1bcaf087a..9d88d2449663 100644 --- a/library/src/scala/collection/immutable/Stream.scala +++ b/library/src/scala/collection/immutable/Stream.scala @@ -331,7 +331,7 @@ sealed abstract class Stream[+A] extends AbstractSeq[A] * - `"Stream(1, 2, 3, <cycle>)"`, an infinite stream that contains * a cycle at the fourth element. */ - override def toString = addStringNoForce(new JStringBuilder(className), "(", ", ", ")").toString + override def toString() = addStringNoForce(new JStringBuilder(className), "(", ", ", ")").toString @deprecated("Check .knownSize instead of .hasDefiniteSize for more actionable information (see scaladoc for details)", "2.13.0") override def hasDefiniteSize: Boolean = isEmpty || { diff --git a/library/src/scala/collection/immutable/TreeSeqMap.scala b/library/src/scala/collection/immutable/TreeSeqMap.scala index 3bb7c3d29f34..b5c00a7b7f74 100644 --- a/library/src/scala/collection/immutable/TreeSeqMap.scala +++ b/library/src/scala/collection/immutable/TreeSeqMap.scala @@ -473,7 +473,7 @@ object TreeSeqMap extends MapFactory[TreeSeqMap] { import scala.annotation.tailrec import scala.collection.generic.BitOperations.Int._ - override final def toString: String = format + override final def toString(): String = format final def format: String = { val sb = new StringBuilder format(sb, "", "") diff --git a/library/src/scala/collection/immutable/Vector.scala b/library/src/scala/collection/immutable/Vector.scala index 25e2270874dc..d4180908d782 100644 --- a/library/src/scala/collection/immutable/Vector.scala +++ b/library/src/scala/collection/immutable/Vector.scala @@ -1390,7 +1390,7 @@ private final class VectorSliceBuilder(lo: Int, hi: Int) { } } - override def toString: String = + override def toString(): String = s"VectorSliceBuilder(lo=$lo, hi=$hi, len=$len, pos=$pos, maxDim=$maxDim)" private[immutable] def getSlices: Array[Array[AnyRef] | Null] = slices @@ -1981,7 +1981,7 @@ final class VectorBuilder[A] extends ReusableBuilder[A, Vector[A]] { } } - override def toString: String = + override def toString(): String = s"VectorBuilder(len1=$len1, lenRest=$lenRest, offset=$offset, depth=$depth)" private[immutable] def getData: Array[Array[?]] = Array[Array[AnyRef]]( @@ -2257,7 +2257,7 @@ private final class NewVectorIterator[A](v: Vector[A], private var totalLength: private var sliceStart = 0 // absolute position private var sliceEnd = a1len // absolute position - //override def toString: String = + //override def toString(): String = // s"NewVectorIterator(v=$v, totalLength=$totalLength, sliceCount=$sliceCount): a1len=$a1len, len1=$len1, i1=$i1, sliceEnd=$sliceEnd" @inline override def knownSize = len1 - i1 diff --git a/library/src/scala/collection/immutable/WrappedString.scala b/library/src/scala/collection/immutable/WrappedString.scala index 38b2b0fc1e0d..0e59479ba940 100644 --- a/library/src/scala/collection/immutable/WrappedString.scala +++ b/library/src/scala/collection/immutable/WrappedString.scala @@ -54,7 +54,7 @@ final class WrappedString(private val self: String) extends AbstractSeq[Char] wi new WrappedString(self.substring(start, end)) } override def length = self.length - override def toString = self + override def toString() = self override def view: StringView = new StringView(self) override def stepper[S <: Stepper[?]](implicit shape: StepperShape[Char, S]): S & EfficientSplit = { diff --git a/library/src/scala/collection/mutable/ArrayBuilder.scala b/library/src/scala/collection/mutable/ArrayBuilder.scala index 1b27496e554a..1ac7d7454388 100644 --- a/library/src/scala/collection/mutable/ArrayBuilder.scala +++ b/library/src/scala/collection/mutable/ArrayBuilder.scala @@ -153,7 +153,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofRef" + override def toString() = "ArrayBuilder.ofRef" } /** A class for array builders for arrays of `byte`s. It can be reused. */ @@ -195,7 +195,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofByte" + override def toString() = "ArrayBuilder.ofByte" } /** A class for array builders for arrays of `short`s. It can be reused. */ @@ -237,7 +237,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofShort" + override def toString() = "ArrayBuilder.ofShort" } /** A class for array builders for arrays of `char`s. It can be reused. */ @@ -279,7 +279,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofChar" + override def toString() = "ArrayBuilder.ofChar" } /** A class for array builders for arrays of `int`s. It can be reused. */ @@ -321,7 +321,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofInt" + override def toString() = "ArrayBuilder.ofInt" } /** A class for array builders for arrays of `long`s. It can be reused. */ @@ -363,7 +363,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofLong" + override def toString() = "ArrayBuilder.ofLong" } /** A class for array builders for arrays of `float`s. It can be reused. */ @@ -405,7 +405,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofFloat" + override def toString() = "ArrayBuilder.ofFloat" } /** A class for array builders for arrays of `double`s. It can be reused. */ @@ -447,7 +447,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofDouble" + override def toString() = "ArrayBuilder.ofDouble" } /** A class for array builders for arrays of `boolean`s. It can be reused. */ @@ -490,7 +490,7 @@ object ArrayBuilder { case _ => false } - override def toString = "ArrayBuilder.ofBoolean" + override def toString() = "ArrayBuilder.ofBoolean" } /** A class for array builders for arrays of `Unit` type. It can be reused. */ @@ -534,6 +534,6 @@ object ArrayBuilder { protected def resize(size: Int): Unit = capacity = size - override def toString = "ArrayBuilder.ofUnit" + override def toString() = "ArrayBuilder.ofUnit" } } diff --git a/library/src/scala/collection/mutable/CollisionProofHashMap.scala b/library/src/scala/collection/mutable/CollisionProofHashMap.scala index e2fb03cf14a5..5ff7576a78d6 100644 --- a/library/src/scala/collection/mutable/CollisionProofHashMap.scala +++ b/library/src/scala/collection/mutable/CollisionProofHashMap.scala @@ -800,7 +800,7 @@ object CollisionProofHashMap extends SortedMapFactory[CollisionProofHashMap] { @annotation.stableNull var parent: RBNode[K, V] | Null ) extends Node { - override def toString: String = "RBNode(" + key + ", " + hash + ", " + value + ", " + red + ", " + left + ", " + right + ")" + override def toString(): String = "RBNode(" + key + ", " + hash + ", " + value + ", " + red + ", " + left + ", " + right + ")" @tailrec def getNode(k: K, h: Int)(implicit ord: Ordering[K]): RBNode[K, V] | Null = { val cmp = compare(k, h, this) @@ -870,7 +870,7 @@ object CollisionProofHashMap extends SortedMapFactory[CollisionProofHashMap] { /////////////////////////// Linked List Node private final class LLNode[K, V](var key: K, var hash: Int, var value: V, @annotation.stableNull var next: LLNode[K, V] | Null) extends Node { - override def toString = s"LLNode($key, $value, $hash) -> $next" + override def toString() = s"LLNode($key, $value, $hash) -> $next" private def eq(a: Any, b: Any): Boolean = if(a.asInstanceOf[AnyRef] eq null) b.asInstanceOf[AnyRef] eq null else a.asInstanceOf[AnyRef].equals(b) diff --git a/library/src/scala/collection/mutable/HashMap.scala b/library/src/scala/collection/mutable/HashMap.scala index e7451b02bede..d537921314af 100644 --- a/library/src/scala/collection/mutable/HashMap.scala +++ b/library/src/scala/collection/mutable/HashMap.scala @@ -655,7 +655,7 @@ object HashMap extends MapFactory[HashMap] { if(_next ne null) _next.foreachEntry(f) } - override def toString = s"Node($key, $value, $hash) -> $next" + override def toString() = s"Node($key, $value, $hash) -> $next" } } diff --git a/library/src/scala/collection/mutable/HashSet.scala b/library/src/scala/collection/mutable/HashSet.scala index 1db7a19b50c3..6c4a1b3a6c71 100644 --- a/library/src/scala/collection/mutable/HashSet.scala +++ b/library/src/scala/collection/mutable/HashSet.scala @@ -454,6 +454,6 @@ object HashSet extends IterableFactory[HashSet] { if(_next ne null) _next.foreach(f) } - override def toString = s"Node($key, $hash) -> $next" + override def toString() = s"Node($key, $hash) -> $next" } } diff --git a/library/src/scala/collection/mutable/RedBlackTree.scala b/library/src/scala/collection/mutable/RedBlackTree.scala index 9fdd27ebb00c..4df59dab4ff6 100644 --- a/library/src/scala/collection/mutable/RedBlackTree.scala +++ b/library/src/scala/collection/mutable/RedBlackTree.scala @@ -46,7 +46,7 @@ private[collection] object RedBlackTree { @annotation.stableNull var parent: Node[A, B] | Null ) { - override def toString: String = "Node(" + key + ", " + value + ", " + red + ", " + left + ", " + right + ")" + override def toString(): String = "Node(" + key + ", " + value + ", " + red + ", " + left + ", " + right + ")" } object Tree { diff --git a/library/src/scala/collection/mutable/StringBuilder.scala b/library/src/scala/collection/mutable/StringBuilder.scala index c283066eb64f..9d6077ebf604 100644 --- a/library/src/scala/collection/mutable/StringBuilder.scala +++ b/library/src/scala/collection/mutable/StringBuilder.scala @@ -109,7 +109,7 @@ final class StringBuilder(val underlying: java.lang.StringBuilder) extends Abstr def result() = underlying.toString - override def toString: String = result() + override def toString(): String = result() override def toArray[B >: Char](implicit ct: scala.reflect.ClassTag[B]) = ct.runtimeClass match { diff --git a/library/src/scala/collection/mutable/UnrolledBuffer.scala b/library/src/scala/collection/mutable/UnrolledBuffer.scala index bfc5582f5391..244f26fd8b6c 100644 --- a/library/src/scala/collection/mutable/UnrolledBuffer.scala +++ b/library/src/scala/collection/mutable/UnrolledBuffer.scala @@ -437,7 +437,7 @@ object UnrolledBuffer extends StrictOptimizedClassTagSeqFactory[UnrolledBuffer] tryMergeWithNext() } - override def toString: String = + override def toString(): String = array.take(size).mkString("Unrolled@%08x".format(System.identityHashCode(this)) + "[" + size + "/" + array.length + "](", ", ", ")") + " -> " + (if (next ne null) next.toString else "") } } diff --git a/library/src/scala/concurrent/Future.scala b/library/src/scala/concurrent/Future.scala index 7ca677721c28..1054b5834fab 100644 --- a/library/src/scala/concurrent/Future.scala +++ b/library/src/scala/concurrent/Future.scala @@ -640,7 +640,7 @@ object Future { override final def fallbackTo[U >: Nothing](that: Future[U]): Future[U] = this override final def mapTo[S](implicit tag: ClassTag[S]): Future[S] = this override final def andThen[U](pf: PartialFunction[Try[Nothing], U])(implicit executor: ExecutionContext): Future[Nothing] = this - override final def toString: String = "Future()" + override final def toString(): String = "Future()" } /** A Future which is completed with the Unit value. diff --git a/library/src/scala/concurrent/duration/Duration.scala b/library/src/scala/concurrent/duration/Duration.scala index 1757c74d02a3..29c62f88f0a6 100644 --- a/library/src/scala/concurrent/duration/Duration.scala +++ b/library/src/scala/concurrent/duration/Duration.scala @@ -177,7 +177,7 @@ object Duration { * '''''Use [[eq]] when checking an input of a method against this value.''''' */ val Undefined: Infinite = new Infinite { - override def toString = "Duration.Undefined" + override def toString() = "Duration.Undefined" override def equals(other: Any): Boolean = false override def +(other: Duration): Duration = this override def -(other: Duration): Duration = this @@ -237,7 +237,7 @@ object Duration { * matching its semantics in arithmetic operations. */ val Inf: Infinite = new Infinite { - override def toString: String = "Duration.Inf" + override def toString(): String = "Duration.Inf" def compare(other: Duration): Int = other match { case x if x eq Undefined => -1 // Undefined != Undefined case x if x eq this => 0 // `case Inf` will include null checks in the byte code @@ -254,7 +254,7 @@ object Duration { * matching its semantics in arithmetic operations. */ val MinusInf: Infinite = new Infinite { - override def toString: String = "Duration.MinusInf" + override def toString(): String = "Duration.MinusInf" def compare(other: Duration): Int = if (other eq this) 0 else -1 def unary_- : Duration = Inf def toUnit(unit: TimeUnit): Double = Double.NegativeInfinity @@ -604,7 +604,7 @@ final class FiniteDuration(val length: Long, val unit: TimeUnit) extends Duratio def fromNow: Deadline = Deadline.now + this private def unitString = timeUnitName(unit) + ( if (length == 1) "" else "s" ) - override def toString: String = "" + length + " " + unitString + override def toString(): String = "" + length + " " + unitString def compare(other: Duration): Int = other match { case x: FiniteDuration => toNanos compare x.toNanos diff --git a/library/src/scala/concurrent/impl/Promise.scala b/library/src/scala/concurrent/impl/Promise.scala index 181ce92b3480..6cb0f340a5c3 100644 --- a/library/src/scala/concurrent/impl/Promise.scala +++ b/library/src/scala/concurrent/impl/Promise.scala @@ -232,7 +232,7 @@ private[concurrent] object Promise { if (!get().isInstanceOf[Success[?]]) super.failed else Future.failedFailureFuture // Cached instance in case of already known success - @tailrec override final def toString: String = { + @tailrec override final def toString(): String = { val state = get() if (state.isInstanceOf[Try[?]]) "Future("+state+")" else if (state.isInstanceOf[Link[?]]) state.asInstanceOf[Link[T]].promise(this).toString @@ -433,7 +433,7 @@ private[concurrent] object Promise { sealed trait Callbacks[-T] final class ManyCallbacks[-T](final val first: Transformation[T, ?], final val rest: Callbacks[T]) extends Callbacks[T] { - override final def toString: String = "ManyCallbacks" + override final def toString(): String = "ManyCallbacks" } private final val Noop = new Transformation[Nothing, Nothing](Xform_noop, null: (Any => Any) | Null, ExecutionContext.parasitic) diff --git a/library/src/scala/io/Codec.scala b/library/src/scala/io/Codec.scala index f1151e74c7fe..21418892af6b 100644 --- a/library/src/scala/io/Codec.scala +++ b/library/src/scala/io/Codec.scala @@ -46,7 +46,7 @@ class Codec(val charSet: Charset) { private var _onCodingException: Handler = e => throw e /** The name of the Codec. */ - override def toString: String = name + override def toString(): String = name // these methods can be chained to configure the variables above def onMalformedInput(newAction: Action): this.type = { _onMalformedInput = newAction ; this } diff --git a/library/src/scala/math/BigDecimal.scala b/library/src/scala/math/BigDecimal.scala index 969829af8385..8f53190d4d2f 100644 --- a/library/src/scala/math/BigDecimal.scala +++ b/library/src/scala/math/BigDecimal.scala @@ -717,6 +717,6 @@ extends ScalaNumber with ScalaNumericConversions with Serializable with Ordered[ /** Returns the decimal String representation of this BigDecimal. */ - override def toString: String = this.bigDecimal.toString + override def toString(): String = this.bigDecimal.toString } diff --git a/library/src/scala/package.scala b/library/src/scala/package.scala index fe9ed612506e..ccf0187cb9ea 100644 --- a/library/src/scala/package.scala +++ b/library/src/scala/package.scala @@ -40,7 +40,7 @@ package object scala { // A dummy used by the specialization annotation. val AnyRef = new Specializable { - override def toString = "object AnyRef" + override def toString() = "object AnyRef" } @deprecated("Use IterableOnce instead of TraversableOnce", "2.13.0") diff --git a/library/src/scala/ref/Reference.scala b/library/src/scala/ref/Reference.scala index 549d23a162c1..bb13eede4f60 100644 --- a/library/src/scala/ref/Reference.scala +++ b/library/src/scala/ref/Reference.scala @@ -22,7 +22,7 @@ trait Reference[+T <: AnyRef] extends Function0[T] { def apply(): T /** return `Some` underlying if it hasn't been collected, otherwise `None` */ def get: Option[T] - override def toString: String = get.map(_.toString).getOrElse("") + override def toString(): String = get.map(_.toString).getOrElse("") def clear(): Unit def enqueue(): Boolean def isEnqueued: Boolean diff --git a/library/src/scala/ref/ReferenceQueue.scala b/library/src/scala/ref/ReferenceQueue.scala index 827f17d43595..05d3db0f90b9 100644 --- a/library/src/scala/ref/ReferenceQueue.scala +++ b/library/src/scala/ref/ReferenceQueue.scala @@ -17,7 +17,7 @@ import scala.language.`2.13` class ReferenceQueue[+T <: AnyRef] { private[ref] val underlying: java.lang.ref.ReferenceQueue[? <: T] = new java.lang.ref.ReferenceQueue[T] - override def toString: String = underlying.toString + override def toString(): String = underlying.toString protected def Wrapper(jref: java.lang.ref.Reference[?] | Null): Option[Reference[T]] = jref match { diff --git a/library/src/scala/reflect/ClassManifestDeprecatedApis.scala b/library/src/scala/reflect/ClassManifestDeprecatedApis.scala index 80d6c3b6b483..5fe52e7b4ba1 100644 --- a/library/src/scala/reflect/ClassManifestDeprecatedApis.scala +++ b/library/src/scala/reflect/ClassManifestDeprecatedApis.scala @@ -216,7 +216,7 @@ object ClassManifestFactory { private class AbstractTypeClassManifest[T](prefix: OptManifest[?], name: String, clazz: jClass[?], args: OptManifest[?]*) extends ClassManifest[T] { override def runtimeClass = clazz override val typeArguments = args.toList - override def toString = prefix.toString+"#"+name+argString + override def toString() = prefix.toString+"#"+name+argString } /** ClassManifest for the abstract type `prefix # name`. `upperBound` is not @@ -243,7 +243,7 @@ private class ClassTypeManifest[T]( val runtimeClass: jClass[?], override val typeArguments: List[OptManifest[?]]) extends ClassManifest[T] { - override def toString = + override def toString() = (if (prefix.isEmpty) "" else prefix.get.toString+"#") + (if (runtimeClass.isArray) "Array" else runtimeClass.getName) + argString diff --git a/library/src/scala/reflect/ClassTag.scala b/library/src/scala/reflect/ClassTag.scala index 80ffb869c447..c0cc6caecfa1 100644 --- a/library/src/scala/reflect/ClassTag.scala +++ b/library/src/scala/reflect/ClassTag.scala @@ -82,7 +82,7 @@ trait ClassTag[T] extends ClassManifestDeprecatedApis[T] with Equals with Serial override def canEqual(x: Any) = x.isInstanceOf[ClassTag[?]] override def equals(x: Any) = x.isInstanceOf[ClassTag[?]] && this.runtimeClass == x.asInstanceOf[ClassTag[?]].runtimeClass override def hashCode = runtimeClass.## - override def toString = { + override def toString() = { def prettyprint(clazz: jClass[?]): String = if (clazz.isArray) s"Array[${prettyprint(clazz.getComponentType)}]" else clazz.getName diff --git a/library/src/scala/reflect/Manifest.scala b/library/src/scala/reflect/Manifest.scala index d3492a2bfe5a..da8f9f0ea136 100644 --- a/library/src/scala/reflect/Manifest.scala +++ b/library/src/scala/reflect/Manifest.scala @@ -412,7 +412,7 @@ object ManifestFactory { private class ClassTypeManifest[T](prefix: Option[Manifest[?]], val runtimeClass: Predef.Class[?], override val typeArguments: List[Manifest[?]]) extends Manifest[T] { - override def toString = + override def toString() = (if (prefix.isEmpty) "" else prefix.get.toString+"#") + (if (runtimeClass.isArray) "Array" else runtimeClass.getName) + argString @@ -425,7 +425,7 @@ object ManifestFactory { private class AbstractTypeManifest[T](prefix: Manifest[?], name: String, upperBound: Predef.Class[?], args: scala.collection.Seq[Manifest[?]]) extends Manifest[T] { def runtimeClass = upperBound override val typeArguments = args.toList - override def toString = prefix.toString+"#"+name+argString + override def toString() = prefix.toString+"#"+name+argString } /** Manifest for the abstract type `prefix # name`. `upperBound` is not @@ -437,7 +437,7 @@ object ManifestFactory { @SerialVersionUID(1L) private class WildcardManifest[T](lowerBound: Manifest[?], upperBound: Manifest[?]) extends Manifest[T] { def runtimeClass = upperBound.runtimeClass - override def toString = + override def toString() = "_" + (if (lowerBound eq Nothing) "" else " >: "+lowerBound) + (if (upperBound eq Nothing) "" else " <: "+upperBound) @@ -453,7 +453,7 @@ object ManifestFactory { // We use an `Array` instead of a `Seq` for `parents` to avoid cyclic dependencies during deserialization // which can cause serialization proxies to leak and cause a ClassCastException. def runtimeClass = parents(0).runtimeClass - override def toString = parents.mkString(" with ") + override def toString() = parents.mkString(" with ") } /** Manifest for the intersection type `parents_0 with ... with parents_n`. */ diff --git a/library/src/scala/reflect/NoManifest.scala b/library/src/scala/reflect/NoManifest.scala index 69a2b5e898d3..278449585760 100644 --- a/library/src/scala/reflect/NoManifest.scala +++ b/library/src/scala/reflect/NoManifest.scala @@ -20,5 +20,5 @@ import scala.language.`2.13` // TODO undeprecated until Scala reflection becomes non-experimental // @deprecated("This notion doesn't have a corresponding concept in 2.10, because scala.reflect.runtime.universe.TypeTag can capture arbitrary types. Use type tags instead of manifests, and there will be no need in opt manifests.", "2.10.0") object NoManifest extends OptManifest[Nothing] with Serializable { - override def toString = "" + override def toString() = "" } diff --git a/library/src/scala/runtime/ArrayCharSequence.scala b/library/src/scala/runtime/ArrayCharSequence.scala index 2ec482915c86..554b212f38ec 100644 --- a/library/src/scala/runtime/ArrayCharSequence.scala +++ b/library/src/scala/runtime/ArrayCharSequence.scala @@ -40,7 +40,7 @@ final class ArrayCharSequence(val xs: Array[Char], start: Int, end: Int) extends new ArrayCharSequence(xs, start1, start1 + newlen) } } - override def toString = { + override def toString() = { val start = math.max(this.start, 0) val end = math.min(xs.length, start + length) diff --git a/library/src/scala/runtime/LazyRef.scala b/library/src/scala/runtime/LazyRef.scala index 89246b53eda2..0ce72941d6da 100644 --- a/library/src/scala/runtime/LazyRef.scala +++ b/library/src/scala/runtime/LazyRef.scala @@ -29,7 +29,7 @@ class LazyRef[T] extends Serializable { value } - override def toString = s"LazyRef ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyRef ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -45,7 +45,7 @@ class LazyBoolean extends Serializable { value } - override def toString = s"LazyBoolean ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyBoolean ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -63,7 +63,7 @@ class LazyByte extends Serializable { value } - override def toString = s"LazyByte ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyByte ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -79,7 +79,7 @@ class LazyChar extends Serializable { value } - override def toString = s"LazyChar ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyChar ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -95,7 +95,7 @@ class LazyShort extends Serializable { value } - override def toString = s"LazyShort ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyShort ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -111,7 +111,7 @@ class LazyInt extends Serializable { value } - override def toString = s"LazyInt ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyInt ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -127,7 +127,7 @@ class LazyLong extends Serializable { value } - override def toString = s"LazyLong ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyLong ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -143,7 +143,7 @@ class LazyFloat extends Serializable { value } - override def toString = s"LazyFloat ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyFloat ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -159,7 +159,7 @@ class LazyDouble extends Serializable { value } - override def toString = s"LazyDouble ${if (_initialized) s"of: ${_value}" else "thunk"}" + override def toString() = s"LazyDouble ${if (_initialized) s"of: ${_value}" else "thunk"}" } @SerialVersionUID(1L) @@ -169,5 +169,5 @@ class LazyUnit extends Serializable { def initialize(): Unit = _initialized = true - override def toString = s"LazyUnit${if (_initialized) "" else " thunk"}" + override def toString() = s"LazyUnit${if (_initialized) "" else " thunk"}" } diff --git a/library/src/scala/runtime/Tuple2Zipped.scala b/library/src/scala/runtime/Tuple2Zipped.scala index a32dc9f960e0..ff5f25122161 100644 --- a/library/src/scala/runtime/Tuple2Zipped.scala +++ b/library/src/scala/runtime/Tuple2Zipped.scala @@ -114,7 +114,7 @@ final class Tuple2Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2]](p } } - override def toString = s"($coll1, $coll2).zipped" + override def toString() = s"($coll1, $coll2).zipped" } @deprecated("Use scala.collection.LazyZip2.", since = "2.13.0") diff --git a/library/src/scala/runtime/Tuple3Zipped.scala b/library/src/scala/runtime/Tuple3Zipped.scala index 84d07fe61340..c997f6f756c5 100644 --- a/library/src/scala/runtime/Tuple3Zipped.scala +++ b/library/src/scala/runtime/Tuple3Zipped.scala @@ -123,7 +123,7 @@ final class Tuple3Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2], E } } - override def toString = s"($coll1, $coll2, $coll3).zipped" + override def toString() = s"($coll1, $coll2, $coll3).zipped" } @deprecated("Use scala.collection.LazyZip3.", since = "2.13.0") diff --git a/library/src/scala/sys/PropImpl.scala b/library/src/scala/sys/PropImpl.scala index 455fb65f9a18..98d316877ae8 100644 --- a/library/src/scala/sys/PropImpl.scala +++ b/library/src/scala/sys/PropImpl.scala @@ -44,7 +44,7 @@ private[sys] class PropImpl[+T](val key: String, valueFn: String => T) extends P protected def underlying: mutable.Map[String, String | Null] = scala.sys.props protected def zero: T = null.asInstanceOf[T] private def getString = if (isSet) "currently: " + get else "unset" - override def toString = "%s (%s)".format(key, getString) + override def toString() = "%s (%s)".format(key, getString) } private[sys] abstract class CreatorImpl[+T](f: String => T) extends Prop.Creator[T] { diff --git a/library/src/scala/sys/process/ProcessBuilderImpl.scala b/library/src/scala/sys/process/ProcessBuilderImpl.scala index 02857c067cf3..19475f7f2253 100644 --- a/library/src/scala/sys/process/ProcessBuilderImpl.scala +++ b/library/src/scala/sys/process/ProcessBuilderImpl.scala @@ -96,7 +96,7 @@ private[process] trait ProcessBuilderImpl { new SimpleProcess(process, inThread, outThread :: errorThread) } - override def toString = p.command.toString + override def toString() = p.command.toString override def canPipeTo = true } @@ -240,7 +240,7 @@ private[process] trait ProcessBuilderImpl { checkNotThis(a) checkNotThis(b) - override def toString = " ( " + a + " " + operatorString + " " + b + " ) " + override def toString() = " ( " + a + " " + operatorString + " " + b + " ) " } private[process] class PipedBuilder( diff --git a/library/src/scala/typeConstraints.scala b/library/src/scala/typeConstraints.scala index 3c7e15de67ca..fc549060cd13 100644 --- a/library/src/scala/typeConstraints.scala +++ b/library/src/scala/typeConstraints.scala @@ -160,7 +160,7 @@ object <:< { override def andThen[C](r: Any =:= C) = r override def liftCo [F[_]] = asInstanceOf[F[Any] =:= F[Any]] override def liftContra[F[_]] = asInstanceOf[F[Any] =:= F[Any]] - override def toString = "generalized constraint" + override def toString() = "generalized constraint" } /** `A =:= A` for all `A` (equality is reflexive). This also provides implicit views `A <:< B` diff --git a/library/src/scala/util/DynamicVariable.scala b/library/src/scala/util/DynamicVariable.scala index afe61cfb73ff..03022c9d7b71 100644 --- a/library/src/scala/util/DynamicVariable.scala +++ b/library/src/scala/util/DynamicVariable.scala @@ -66,5 +66,5 @@ class DynamicVariable[T](init: T) { */ def value_=(newval: T) = tl.set(newval) - override def toString: String = "DynamicVariable(" + value + ")" + override def toString(): String = "DynamicVariable(" + value + ")" } diff --git a/library/src/scala/util/matching/Regex.scala b/library/src/scala/util/matching/Regex.scala index f81d37d89e55..2ee22a960d19 100644 --- a/library/src/scala/util/matching/Regex.scala +++ b/library/src/scala/util/matching/Regex.scala @@ -596,7 +596,7 @@ class Regex private[matching](val pattern: Pattern, groupNames: String*) extends def regex: String = pattern.pattern /** The string defining the regular expression */ - override def toString: String = regex + override def toString(): String = regex } /** A [[Regex]] that finds the first match when used in a pattern match. @@ -719,7 +719,7 @@ object Regex { ) /** The matched string; equivalent to `matched.toString`. */ - override def toString: String = matched.nn + override def toString(): String = matched.nn } /** Provides information about a successful match. */ @@ -842,7 +842,7 @@ object Regex { } /** Report emptiness. */ - override def toString: String = super[AbstractIterator].toString + override def toString(): String = super[AbstractIterator].toString // ensure we're at a match private def ensure(): Unit = nextSeen match { From 45f2f40639f925ac8acee5f1709dc0688475a734 Mon Sep 17 00:00:00 2001 From: Hamza Remmal Date: Mon, 17 Nov 2025 13:38:09 +0100 Subject: [PATCH 2/4] chore: port all `hashCode` method in the Scala 2 inherited stdlib to be nullary functions --- library/src/scala/Enumeration.scala | 6 +++--- library/src/scala/Proxy.scala | 2 +- library/src/scala/Symbol.scala | 2 +- library/src/scala/collection/Iterator.scala | 2 +- .../convert/JavaCollectionWrappers.scala | 16 +++++++-------- .../scala/collection/immutable/ArraySeq.scala | 20 +++++++++---------- .../scala/collection/immutable/Range.scala | 2 +- .../scala/collection/mutable/ArraySeq.scala | 20 +++++++++---------- .../scala/collection/mutable/HashMap.scala | 4 ++-- .../scala/collection/mutable/HashSet.scala | 4 ++-- .../collection/mutable/LinkedHashMap.scala | 4 ++-- .../collection/mutable/LinkedHashSet.scala | 4 ++-- .../scala/concurrent/duration/Duration.scala | 2 +- library/src/scala/reflect/ClassTag.scala | 2 +- library/src/scala/reflect/Manifest.scala | 2 +- 15 files changed, 46 insertions(+), 46 deletions(-) diff --git a/library/src/scala/Enumeration.scala b/library/src/scala/Enumeration.scala index c5b7905573ad..3f1caaba2c8b 100644 --- a/library/src/scala/Enumeration.scala +++ b/library/src/scala/Enumeration.scala @@ -98,11 +98,11 @@ abstract class Enumeration (initial: Int) extends Serializable { /** The name of this enumeration. */ - override def toString: String = + override def toString(): String = getClass.getName .stripSuffix(MODULE_SUFFIX_STRING) .split('.') - .last + .last .split(Regex.quote(NAME_JOIN_STRING)) .last @@ -241,7 +241,7 @@ abstract class Enumeration (initial: Int) extends Serializable { case that: Enumeration#Value => (outerEnum eq that.outerEnum) && (id == that.id) case _ => false } - override def hashCode: Int = id.## + override def hashCode(): Int = id.## /** Create a ValueSet which contains this value and another one */ def + (v: Value): ValueSet = ValueSet(this, v) diff --git a/library/src/scala/Proxy.scala b/library/src/scala/Proxy.scala index 81f097a67c2e..f8d7462c34f6 100644 --- a/library/src/scala/Proxy.scala +++ b/library/src/scala/Proxy.scala @@ -29,7 +29,7 @@ import scala.language.`2.13` trait Proxy extends Any { def self: Any - override def hashCode: Int = self.hashCode + override def hashCode(): Int = self.hashCode override def equals(that: Any): Boolean = that match { case null => false case _ => diff --git a/library/src/scala/Symbol.scala b/library/src/scala/Symbol.scala index a61c366f4ae2..0890947c80fe 100644 --- a/library/src/scala/Symbol.scala +++ b/library/src/scala/Symbol.scala @@ -24,7 +24,7 @@ final class Symbol private (val name: String) extends Serializable { @throws(classOf[java.io.ObjectStreamException]) private def readResolve(): Any = Symbol.apply(name) - override def hashCode = name.hashCode() + override def hashCode() = name.hashCode() override def equals(other: Any) = this eq other.asInstanceOf[AnyRef] } diff --git a/library/src/scala/collection/Iterator.scala b/library/src/scala/collection/Iterator.scala index 6fc53c3d7470..319337aa1014 100644 --- a/library/src/scala/collection/Iterator.scala +++ b/library/src/scala/collection/Iterator.scala @@ -898,7 +898,7 @@ trait Iterator[+A] extends IterableOnce[A] with IterableOnceOps[A, Iterator, Ite // to verify partnerhood we use reference equality on gap because // type testing does not discriminate based on origin. private def compareGap(queue: scala.collection.mutable.Queue[A]) = gap eq queue - override def hashCode = gap.hashCode() + override def hashCode() = gap.hashCode() override def equals(other: Any) = other match { case x: Partner => x.compareGap(gap) && gap.isEmpty case _ => super.equals(other) diff --git a/library/src/scala/collection/convert/JavaCollectionWrappers.scala b/library/src/scala/collection/convert/JavaCollectionWrappers.scala index d54d639c5a4b..14827e454f19 100644 --- a/library/src/scala/collection/convert/JavaCollectionWrappers.scala +++ b/library/src/scala/collection/convert/JavaCollectionWrappers.scala @@ -41,7 +41,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { case that: IteratorWrapper[_] => this.underlying == that.underlying case _ => false } - override def hashCode: Int = underlying.hashCode() + override def hashCode(): Int = underlying.hashCode() } @SerialVersionUID(3L) @@ -52,7 +52,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { case that: JIteratorWrapper[_] => this.underlying == that.underlying case _ => false } - override def hashCode: Int = underlying.hashCode() + override def hashCode(): Int = underlying.hashCode() } @SerialVersionUID(3L) @@ -63,7 +63,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { case that: JEnumerationWrapper[_] => this.underlying == that.underlying case _ => false } - override def hashCode: Int = underlying.hashCode() + override def hashCode(): Int = underlying.hashCode() } trait IterableWrapperTrait[A] extends ju.AbstractCollection[A] { @@ -79,7 +79,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { case that: IterableWrapper[_] => this.underlying == that.underlying case _ => false } - override def hashCode: Int = underlying.hashCode() + override def hashCode(): Int = underlying.hashCode() } @SerialVersionUID(3L) @@ -94,7 +94,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { case that: JIterableWrapper[_] => this.underlying == that.underlying case _ => false } - override def hashCode: Int = underlying.hashCode() + override def hashCode(): Int = underlying.hashCode() } @SerialVersionUID(3L) @@ -111,7 +111,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { case that: JCollectionWrapper[_] => this.underlying == that.underlying case _ => false } - override def hashCode: Int = underlying.hashCode() + override def hashCode(): Int = underlying.hashCode() } @SerialVersionUID(3L) @@ -285,7 +285,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { // specified in the javadocs of java.util.Map.Entry.hashCode // // See https://github.com/scala/bug/issues/10663 - override def hashCode = { + override def hashCode() = { (if (k == null) 0 else k.hashCode()) ^ (if (v == null) 0 else v.hashCode()) } @@ -552,7 +552,7 @@ private[collection] object JavaCollectionWrappers extends Serializable { case _ => false } - override def hashCode: Int = underlying.hashCode() + override def hashCode(): Int = underlying.hashCode() } @SerialVersionUID(3L) diff --git a/library/src/scala/collection/immutable/ArraySeq.scala b/library/src/scala/collection/immutable/ArraySeq.scala index e657cf8eda71..51a4f302fb16 100644 --- a/library/src/scala/collection/immutable/ArraySeq.scala +++ b/library/src/scala/collection/immutable/ArraySeq.scala @@ -332,7 +332,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): T = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any): Boolean = that match { case that: ofRef[_] => Array.equals( @@ -363,7 +363,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Byte = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofByte => Arrays.equals(unsafeArray, that.unsafeArray) case _ => super.equals(that) @@ -405,7 +405,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Short = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofShort => Arrays.equals(unsafeArray, that.unsafeArray) case _ => super.equals(that) @@ -447,7 +447,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Char = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofChar => Arrays.equals(unsafeArray, that.unsafeArray) case _ => super.equals(that) @@ -492,7 +492,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Int = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofInt => Arrays.equals(unsafeArray, that.unsafeArray) case _ => super.equals(that) @@ -534,7 +534,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Long = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofLong => Arrays.equals(unsafeArray, that.unsafeArray) case _ => super.equals(that) @@ -576,7 +576,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Float = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofFloat => val array = unsafeArray @@ -618,7 +618,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Double = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofDouble => val array = unsafeArray @@ -660,7 +660,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Boolean = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofBoolean => Arrays.equals(unsafeArray, that.unsafeArray) case _ => super.equals(that) @@ -699,7 +699,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = unsafeArray.length @throws[ArrayIndexOutOfBoundsException] def apply(i: Int): Unit = unsafeArray(i) - override def hashCode = MurmurHash3.arraySeqHash(unsafeArray) + override def hashCode() = MurmurHash3.arraySeqHash(unsafeArray) override def equals(that: Any) = that match { case that: ofUnit => unsafeArray.length == that.unsafeArray.length case _ => super.equals(that) diff --git a/library/src/scala/collection/immutable/Range.scala b/library/src/scala/collection/immutable/Range.scala index b85fc71f2772..e62ce0c78a45 100644 --- a/library/src/scala/collection/immutable/Range.scala +++ b/library/src/scala/collection/immutable/Range.scala @@ -527,7 +527,7 @@ sealed abstract class Range( super.equals(other) } - final override def hashCode: Int = + final override def hashCode(): Int = if(length >= 2) MurmurHash3.rangeHash(start, step, lastElement) else super.hashCode diff --git a/library/src/scala/collection/mutable/ArraySeq.scala b/library/src/scala/collection/mutable/ArraySeq.scala index fe2c9d18ecad..f71ced69ecc3 100644 --- a/library/src/scala/collection/mutable/ArraySeq.scala +++ b/library/src/scala/collection/mutable/ArraySeq.scala @@ -143,7 +143,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): T = array(index) def update(index: Int, elem: T): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofRef[_] => Array.equals( @@ -166,7 +166,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Byte = array(index) def update(index: Int, elem: Byte): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofByte => Arrays.equals(array, that.array) case _ => super.equals(that) @@ -186,7 +186,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Short = array(index) def update(index: Int, elem: Short): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofShort => Arrays.equals(array, that.array) case _ => super.equals(that) @@ -206,7 +206,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Char = array(index) def update(index: Int, elem: Char): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofChar => Arrays.equals(array, that.array) case _ => super.equals(that) @@ -247,7 +247,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Int = array(index) def update(index: Int, elem: Int): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofInt => Arrays.equals(array, that.array) case _ => super.equals(that) @@ -267,7 +267,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Long = array(index) def update(index: Int, elem: Long): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofLong => Arrays.equals(array, that.array) case _ => super.equals(that) @@ -287,7 +287,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Float = array(index) def update(index: Int, elem: Float): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofFloat => val thatArray = that.array @@ -313,7 +313,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Double = array(index) def update(index: Int, elem: Double): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofDouble => val thatArray = that.array @@ -339,7 +339,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Boolean = array(index) def update(index: Int, elem: Boolean): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofBoolean => Arrays.equals(array, that.array) case _ => super.equals(that) @@ -356,7 +356,7 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self => def length: Int = array.length def apply(index: Int): Unit = array(index) def update(index: Int, elem: Unit): Unit = { array(index) = elem } - override def hashCode = MurmurHash3.arraySeqHash(array) + override def hashCode() = MurmurHash3.arraySeqHash(array) override def equals(that: Any) = that match { case that: ofUnit => array.length == that.array.length case _ => super.equals(that) diff --git a/library/src/scala/collection/mutable/HashMap.scala b/library/src/scala/collection/mutable/HashMap.scala index d537921314af..9c557d88356b 100644 --- a/library/src/scala/collection/mutable/HashMap.scala +++ b/library/src/scala/collection/mutable/HashMap.scala @@ -578,12 +578,12 @@ class HashMap[K, V](initialCapacity: Int, loadFactor: Double) @nowarn("""cat=deprecation&origin=scala\.collection\.Iterable\.stringPrefix""") override protected def stringPrefix = "HashMap" - override def hashCode: Int = { + override def hashCode(): Int = { if (isEmpty) MurmurHash3.emptyMapHash else { val tupleHashIterator = new HashMapIterator[Any] { var hash: Int = 0 - override def hashCode: Int = hash + override def hashCode(): Int = hash override protected def extract(nd: Node[K, V]): Any = { hash = MurmurHash3.tuple2Hash(unimproveHash(nd.hash), nd.value.##) this diff --git a/library/src/scala/collection/mutable/HashSet.scala b/library/src/scala/collection/mutable/HashSet.scala index 6c4a1b3a6c71..d4ee0e4f8ca1 100644 --- a/library/src/scala/collection/mutable/HashSet.scala +++ b/library/src/scala/collection/mutable/HashSet.scala @@ -385,13 +385,13 @@ final class HashSet[A](initialCapacity: Int, loadFactor: Double) override protected def className = "HashSet" - override def hashCode: Int = { + override def hashCode(): Int = { val setIterator = this.iterator val hashIterator: Iterator[Any] = if (setIterator.isEmpty) setIterator else new HashSetIterator[Any] { var hash: Int = 0 - override def hashCode: Int = hash + override def hashCode(): Int = hash override protected def extract(nd: Node[A]): Any = { hash = unimproveHash(nd.hash) this diff --git a/library/src/scala/collection/mutable/LinkedHashMap.scala b/library/src/scala/collection/mutable/LinkedHashMap.scala index eda7ea733bcd..d3ce49179fad 100644 --- a/library/src/scala/collection/mutable/LinkedHashMap.scala +++ b/library/src/scala/collection/mutable/LinkedHashMap.scala @@ -455,12 +455,12 @@ class LinkedHashMap[K, V] } } - override def hashCode: Int = { + override def hashCode(): Int = { if (isEmpty) MurmurHash3.emptyMapHash else { val tupleHashIterator = new LinkedHashMapIterator[Any] { var hash: Int = 0 - override def hashCode: Int = hash + override def hashCode(): Int = hash override def extract(nd: Entry): Any = { hash = MurmurHash3.tuple2Hash(unimproveHash(nd.hash), nd.value.##) this diff --git a/library/src/scala/collection/mutable/LinkedHashSet.scala b/library/src/scala/collection/mutable/LinkedHashSet.scala index 803af05c54c5..c424dd05a2ca 100644 --- a/library/src/scala/collection/mutable/LinkedHashSet.scala +++ b/library/src/scala/collection/mutable/LinkedHashSet.scala @@ -291,13 +291,13 @@ class LinkedHashSet[A] } } - override def hashCode: Int = { + override def hashCode(): Int = { val setHashIterator = if (isEmpty) this.iterator else { new LinkedHashSetIterator[Any] { var hash: Int = 0 - override def hashCode: Int = hash + override def hashCode(): Int = hash override def extract(nd: Entry): Any = { hash = unimproveHash(nd.hash) this diff --git a/library/src/scala/concurrent/duration/Duration.scala b/library/src/scala/concurrent/duration/Duration.scala index 29c62f88f0a6..958388df3a79 100644 --- a/library/src/scala/concurrent/duration/Duration.scala +++ b/library/src/scala/concurrent/duration/Duration.scala @@ -739,5 +739,5 @@ final class FiniteDuration(val length: Long, val unit: TimeUnit) extends Duratio case x: FiniteDuration => toNanos == x.toNanos case _ => super.equals(other) } - override def hashCode: Int = toNanos.toInt + override def hashCode(): Int = toNanos.toInt } diff --git a/library/src/scala/reflect/ClassTag.scala b/library/src/scala/reflect/ClassTag.scala index c0cc6caecfa1..1ebe2ed41196 100644 --- a/library/src/scala/reflect/ClassTag.scala +++ b/library/src/scala/reflect/ClassTag.scala @@ -81,7 +81,7 @@ trait ClassTag[T] extends ClassManifestDeprecatedApis[T] with Equals with Serial // case class accessories override def canEqual(x: Any) = x.isInstanceOf[ClassTag[?]] override def equals(x: Any) = x.isInstanceOf[ClassTag[?]] && this.runtimeClass == x.asInstanceOf[ClassTag[?]].runtimeClass - override def hashCode = runtimeClass.## + override def hashCode() = runtimeClass.## override def toString() = { def prettyprint(clazz: jClass[?]): String = if (clazz.isArray) s"Array[${prettyprint(clazz.getComponentType)}]" else diff --git a/library/src/scala/reflect/Manifest.scala b/library/src/scala/reflect/Manifest.scala index da8f9f0ea136..b1a23c8e4af0 100644 --- a/library/src/scala/reflect/Manifest.scala +++ b/library/src/scala/reflect/Manifest.scala @@ -65,7 +65,7 @@ trait Manifest[T] extends ClassManifest[T] with Equals { case m: Manifest[_] => (m canEqual this) && (this.runtimeClass == m.runtimeClass) && (this <:< m) && (m <:< this) case _ => false } - override def hashCode = this.runtimeClass.## + override def hashCode() = this.runtimeClass.## } /** The object `Manifest` defines factory methods for manifests. From 1f7c1aa2ddd7d4079e700cf72eaf63cf8bbe2cc7 Mon Sep 17 00:00:00 2001 From: Hamza Remmal Date: Mon, 17 Nov 2025 13:45:33 +0100 Subject: [PATCH 3/4] chore: add regression test for #19616 --- tests/pos/i19616.scala | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 tests/pos/i19616.scala diff --git a/tests/pos/i19616.scala b/tests/pos/i19616.scala new file mode 100644 index 000000000000..ff0da9e4cebf --- /dev/null +++ b/tests/pos/i19616.scala @@ -0,0 +1,6 @@ +def Test: Unit = + val sb = new StringBuilder + var key = "" + var map = Map.empty[String, String] + map += key -> sb.toString() + map += key -> sb.toString From 8617d686a41ff6fc2759ce520c4d897f0aab7cfd Mon Sep 17 00:00:00 2001 From: Hamza Remmal Date: Wed, 19 Nov 2025 18:08:44 +0100 Subject: [PATCH 4/4] add explanation in `TupleXXL` for `toString and `hashCode` --- library/src/scala/runtime/TupleXXL.scala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/scala/runtime/TupleXXL.scala b/library/src/scala/runtime/TupleXXL.scala index 2da0cbb15396..a6d9ed4317a7 100644 --- a/library/src/scala/runtime/TupleXXL.scala +++ b/library/src/scala/runtime/TupleXXL.scala @@ -9,9 +9,13 @@ final class TupleXXL private (es: IArray[Object]) extends Product { def productArity: Int = es.length override def productPrefix: String = "Tuple" + // NOTE: For historical reasons, we cannot change this method + // to `def toString(): String`. See #24461 for more informations. override def toString: String = elems.asInstanceOf[Array[Object]].mkString("(", ",", ")") + // NOTE: For historical reasons, we cannot change this method + // to `def hashCode(): Int`. See #24461 for more informations. override def hashCode: Int = scala.runtime.ScalaRunTime._hashCode(this)