From 653ddfee1ecedf71d307a176e8c4892e9206e268 Mon Sep 17 00:00:00 2001 From: odersky Date: Tue, 2 Dec 2025 18:14:45 +0100 Subject: [PATCH 1/2] Make Predef capture checked 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. --- library/src/scala/Predef.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/src/scala/Predef.scala b/library/src/scala/Predef.scala index c97b2c761229..46b000714187 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.{experimental, implicitNotFound, publicInBinary, targetName, nowarn } import scala.annotation.meta.{ companionClass, companionMethod } @@ -552,7 +552,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 From 38a0b6da626639f39112b14e08fc71dd20c553ba Mon Sep 17 00:00:00 2001 From: odersky Date: Tue, 2 Dec 2025 15:44:42 +0100 Subject: [PATCH 2/2] Make Array.copy work for capturing types --- library/src/scala/Array.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 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) ||