Skip to content

Conversation

odersky
Copy link
Contributor

@odersky odersky commented Aug 4, 2025

We now use a blend of the new scheme and a backwards compatible special case if type variables as ClassTag arguments are constrained by further type variables.

Fixes #23611

We now use a blend of the new scheme and backwards compatible special case if type variables
as ClassTag arguments are constrained by further type variables.

Fixes scala#23611
@WojciechMazur
Copy link
Contributor

WojciechMazur commented Aug 5, 2025

I've tried it on community build, but the zio project is still failing - I've figured out that the reproducer was missing an important part - the CanFail[E] implicit evidence in refineToOrDie extension method. With this additional requirement it still fails:

[error] ./example.scala:52:7
[error] Found:    ZStream[Any, Throwable, java.io.File]
[error] Required: ZStream[Any, java.io.IOException, java.io.File]
Error compiling project (Scala 3.8.0-RC1-bin-20250805-2b604c5, JVM (21))

Below there's a full reproducer:

import java.io.{File, IOException}
import java.net.URI
import java.nio.file.{Path, Paths}
import scala.reflect.ClassTag

trait FileConnectors { 
  def listPath(path: => Path): ZStream[Any, IOException, Path]

  final def listFile(file: => File): ZStream[Any, IOException, File] =
    for {
      path <- null.asInstanceOf[ZStream[Any, IOException, Path]]
      r    <- listPath(path).mapZIO(a => ZIO.attempt(a.toFile).refineToOrDie)
    } yield r
}

sealed abstract class CanFail[-E]
object CanFail:
  given [E]: CanFail[E] = ???
  
sealed trait ZIO[-R, +E, +A]
extension [R, E <: Throwable, A](self: ZIO[R, E, A])
  def refineToOrDie[E1 <: E: ClassTag](using CanFail[E]): ZIO[R, E1, A] = ???

object ZIO:
  def attempt[A](code: => A): ZIO[Any, Throwable, A] = ???
  
sealed trait ZStream[-R, +E, +A]:
  def map[B](f: A => B): ZStream[R, E, B] = ???
  def flatMap[R1 <: R, E1 >: E, B](f: A => ZStream[R1, E1, B]): ZStream[R1, E1, B]
  def mapZIO[R1 <: R, E1 >: E, A1](f: A => ZIO[R1, E1, A1]): ZStream[R1, E1, A1]

@odersky
Copy link
Contributor Author

odersky commented Aug 6, 2025

The latest minimization also compiles now.

@odersky odersky assigned WojciechMazur and unassigned odersky Aug 6, 2025
Copy link
Contributor

@WojciechMazur WojciechMazur left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, fixes the zio-archive/zio-connect build, but does not resolve erikerlandson/coulomb issues yet

@WojciechMazur WojciechMazur merged commit cfaa5d3 into scala:main Aug 6, 2025
46 checks passed
odersky added a commit that referenced this pull request Aug 9, 2025
)

After an "implicit not found", we type additional arguments to get more
context which might
give a larger implicit scope to search. With this commit we do that only
if there is no
default argument for the implicit.

Based on #23659

This might fix #23610
@tgodzik tgodzik added the backport:nominated If we agree to backport this PR, replace this tag with "backport:accepted", otherwise delete it. label Aug 11, 2025
WojciechMazur pushed a commit that referenced this pull request Aug 11, 2025
We now use a blend of the new scheme and a backwards compatible special
case if type variables as ClassTag arguments are constrained by further
type variables.

Fixes #23611
[Cherry-picked cfaa5d3]
WojciechMazur added a commit that referenced this pull request Aug 12, 2025
Backports #23659 to the 3.7.3-RC1.

PR submitted by the release tooling.
[skip ci]
@WojciechMazur WojciechMazur added backport:done This PR was successfully backported. and removed backport:nominated If we agree to backport this PR, replace this tag with "backport:accepted", otherwise delete it. labels Aug 12, 2025
@WojciechMazur WojciechMazur added this to the 3.7.3 milestone Aug 12, 2025
tgodzik pushed a commit to scala/scala3-lts that referenced this pull request Aug 12, 2025
We now use a blend of the new scheme and a backwards compatible special
case if type variables as ClassTag arguments are constrained by further
type variables.

Fixes scala#23611
tgodzik added a commit to scala/scala3-lts that referenced this pull request Aug 12, 2025
We now use a blend of the new scheme and a backwards compatible special
case if type variables as ClassTag arguments are constrained by further
type variables.

Fixes scala#23611
[Cherry-picked cfaa5d3][modified]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport:done This PR was successfully backported.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Regression in typer for zio-archive/zio-connect
3 participants