Skip to content

Regression in ist-dsi/scala-neutron-client - incorrect subtyping test in implicit resolution #19404

Closed
@jchyb

Description

@jchyb

Compiler version

Based on a regression found in community build: https://github.com/VirtusLab/community-build3/actions/runs/7427557714/job/20237028592
Appears since 3.4.0-RC1-bin-20240104-2746ee8-NIGHTLY

Minimized code

given ipEncoder[IP <: IpAddress]: Encoder[IP] = Encoder[String].contramap(_.toString)

class Encoder[A] {
  final def contramap[B](f: B => A): Encoder[B] = new Encoder[B]
}

object Encoder {
  final def apply[A](implicit instance: Encoder[A]): Encoder[A] = instance
  implicit final val encodeString: Encoder[String] = new Encoder[String]
}

trait Json
trait IpAddress

Output

[error] ./regression.scala:2:64
[error] No given instance of type Encoder[String] was found for parameter instance of method apply in object Encoder.
[error] I found:
[error] 
[error]     ipEncoder[IP]
[error] 
[error] But given instance ipEncoder does not match type Encoder[String].
[error] given ipEncoder[IP <: IpAddress]: Encoder[IP] = Encoder[String].contramap(_.toString)
[error]                                                                ^

Expectation

No error, like in 3.3.1 (and pre 3.4.0-RC1-bin-20240104-2746ee8-NIGHTLY nightlies)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions