diff --git a/build.sbt b/build.sbt index a2bba02..01a8fc3 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,6 @@ import com.typesafe.tools.mima.core.* -val scala3Version = "3.3.8" +val scala3Version = "3.9.0-RC3" ThisBuild / organization := "org.typelevel" ThisBuild / tlBaseVersion := "3.6" @@ -110,7 +110,9 @@ lazy val typeable = crossProject(JSPlatform, JVMPlatform, NativePlatform) mimaBinaryIssueFilters ++= Seq( // Ops was replaced by extension methods in https://github.com/typelevel/shapeless-3/pull/1 ProblemFilters.exclude[DirectMissingMethodProblem]("shapeless3.typeable.syntax#typeable.Ops"), - ProblemFilters.exclude[MissingClassProblem]("shapeless3.typeable.syntax$typeable$Ops") + ProblemFilters.exclude[MissingClassProblem]("shapeless3.typeable.syntax$typeable$Ops"), + // Changed on upgrade to Scala 3.9 + ProblemFilters.exclude[DirectMissingMethodProblem]("shapeless3.typeable.Typeable.") ) ) diff --git a/modules/deriving/src/test/scala/shapeless3/deriving/deriving.scala b/modules/deriving/src/test/scala/shapeless3/deriving/deriving.scala index 455ae0c..b1e8701 100644 --- a/modules/deriving/src/test/scala/shapeless3/deriving/deriving.scala +++ b/modules/deriving/src/test/scala/shapeless3/deriving/deriving.scala @@ -424,7 +424,7 @@ class DerivationTests: assert(v5.show == "Order(item: String, quantity: Int)") val v6 = ShowType[Order[Option]] - assert(v6.show == "Order(item: None | Some(value: String), quantity: None | Some(value: Int))") + assert(v6.show == "Order(item: Some(value: String) | None, quantity: Some(value: Int) | None)") @Test def read(): Unit = diff --git a/modules/deriving/src/test/scala/shapeless3/deriving/kinds.scala b/modules/deriving/src/test/scala/shapeless3/deriving/kinds.scala index 5192b72..56d86bd 100644 --- a/modules/deriving/src/test/scala/shapeless3/deriving/kinds.scala +++ b/modules/deriving/src/test/scala/shapeless3/deriving/kinds.scala @@ -81,11 +81,10 @@ object K21 ): R = inst.erasedFold2f(x, y)(g.asInstanceOf)(f.asInstanceOf).asInstanceOf -type IdRef[T <: AnyRef] = T type HeadRef[T] <: AnyRef = T match - case IdRef[h] *: _ => h + case AnyRef *: _ => Tuple.Head[T] & AnyRef -object K1Ref extends Kind[AnyRef, Tuple, IdRef, HeadRef, Kinds.Tail]: +object K1Ref extends Kind[AnyRef, Tuple, Id, HeadRef, Kinds.Tail]: extension [F[_ <: AnyRef], T <: AnyRef](inst: ProductInstances[F, T]) inline def foldLeft2[Acc](x: T, y: T)(i: Acc)(f: [t <: AnyRef] => (Acc, F[t], t, t) => CompleteOr[Acc]): Acc = inst.erasedFoldLeft2(x, y)(i)(f.asInstanceOf).asInstanceOf diff --git a/modules/typeable/src/test/scala/shapeless3/typeable/typeable.scala b/modules/typeable/src/test/scala/shapeless3/typeable/typeable.scala index 8ebebcb..f589cca 100644 --- a/modules/typeable/src/test/scala/shapeless3/typeable/typeable.scala +++ b/modules/typeable/src/test/scala/shapeless3/typeable/typeable.scala @@ -16,6 +16,8 @@ package shapeless3.typeable +import scala.compiletime.uninitialized + class TypeableTests: import TypeableTests.* import org.junit.Assert.* @@ -389,7 +391,7 @@ class TypeableTests: trait Tc[A] case class Gen2[A: Tc](i: Int) case class Gen3[A](i: Int): - var a: A = _ + var a: A = uninitialized abstract class Abs[A](a: A): val x: A = a case class Gen4[A](i: Int)(a: A) extends Abs[A](a) @@ -493,7 +495,7 @@ class TypeableTests: val bi: Bar[Int] = Bar(23) assertEquals("Typeable[Bar[Int]]", typeableString(bi)) - val i1: A with B = new C + val i1: A & B = new C assertEquals("Typeable[A & B]", typeableString(i1)) assertEquals("Typeable[A]", typeableString(new A {})) assertEquals("Typeable[A]", Typeable[A].toString) @@ -593,7 +595,7 @@ class TypeableTests: object X: case class A() case class B(a: A): - private[this] val aa = a + private val aa = a object Test: Typeable[X.B]