diff --git a/tests/pos/i19633.scala b/tests/pos/i19633.scala new file mode 100644 index 000000000000..d0c6a45b5f0a --- /dev/null +++ b/tests/pos/i19633.scala @@ -0,0 +1,24 @@ +object Repro { + trait Responsive { + type Response + } + + object Responsive { + type Aux[R] = Responsive {type Response = R} + type Response[R] = R match {case Aux[r] => r} + } + + case class StringRequest(name: String) extends Responsive { + type Response = String + } + + def withImplicit[R <: Responsive](request: R)(implicit ct: scala.reflect.ClassTag[Responsive.Response[R]]): Responsive.Response[R] = ??? + + def withFunction[R <: Responsive](request: R)(call: R => Responsive.Response[R]): Responsive.Response[R] = ??? + + def stringWithFunction(req: StringRequest): String = withFunction(req)(_.getClass.getSimpleName) + + def stringWithImplicit(req: StringRequest): String = withImplicit(req) + + def main(args: Array[String]): Unit = {} +}