From f65054be0144ac80d09215e643d5a8039fe9e0b8 Mon Sep 17 00:00:00 2001 From: odersky Date: Wed, 3 Dec 2025 15:31:50 +0100 Subject: [PATCH] Make Predef capture checked (#24643) This was forgotten before when we added capture-checked checked stdlib. Maybe it was impossible before due to bootstrap problems? But now it is possible. [Cherry-picked 8067622cfb9024c62113e171ecff2ab72fd1f205] --- library/src/scala/Array.scala | 6 +++--- library/src/scala/Predef.scala | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/library/src/scala/Array.scala b/library/src/scala/Array.scala index e40d82b0ed17..4cf59c808f98 100644 --- a/library/src/scala/Array.scala +++ b/library/src/scala/Array.scala @@ -77,9 +77,9 @@ object Array { case _ => it.iterator.toArray[A] } - private def slowcopy(src : AnyRef, + private def slowcopy(src : AnyRef^, srcPos : Int, - dest : AnyRef, + dest : AnyRef^, destPos : Int, length : Int): Unit = { var i = srcPos @@ -107,7 +107,7 @@ object Array { * * @see `java.lang.System#arraycopy` */ - def copy(src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int): Unit = { + def copy(src: AnyRef^, srcPos: Int, dest: AnyRef^, destPos: Int, length: Int): Unit = { val srcClass = src.getClass val destClass = dest.getClass if (srcClass.isArray && ((destClass eq srcClass) || diff --git a/library/src/scala/Predef.scala b/library/src/scala/Predef.scala index 3cad7f7f9b5f..6625a3546dad 100644 --- a/library/src/scala/Predef.scala +++ b/library/src/scala/Predef.scala @@ -13,8 +13,8 @@ package scala import scala.language.`2.13` +import language.experimental.captureChecking import scala.language.implicitConversions - import scala.collection.{mutable, immutable, ArrayOps, StringOps}, immutable.WrappedString import scala.annotation.{elidable, experimental, implicitNotFound, publicInBinary, targetName }, elidable.ASSERTION import scala.annotation.meta.{ companionClass, companionMethod } @@ -564,7 +564,7 @@ object Predef extends LowPriorityImplicits { * `(A => A) <: (A => B)`. */ // $ to avoid accidental shadowing (e.g. scala/bug#7788) - implicit def $conforms[A]: A => A = <:<.refl + implicit def $conforms[A]: A -> A = <:<.refl // Extension methods for working with explicit nulls