Skip to content

Commit 128eeb1

Browse files
committed
Fix #9088: Fix problematic code in productMirror
1 parent 8d4b2a6 commit 128eeb1

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

compiler/src/dotty/tools/dotc/typer/Synthesizer.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
279279
case mirroredType: HKTypeLambda =>
280280
val elems =
281281
mirroredType.derivedLambdaType(
282-
resType = TypeOps.nestedPairs(accessors.map(mirroredType.memberInfo(_).widenExpr))
282+
resType = TypeOps.nestedPairs(accessors.map(_.info))
283283
)
284284
(mkMirroredMonoType(mirroredType), elems)
285285
case _ =>

tests/run/poly-kinded-derives.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ object Test extends App {
2727
given t2 [T] as Functor[[U] =>> (T, U)] {}
2828
given t3 [T, U] as Functor[[V] =>> (T, U, V)] {}
2929

30-
def derived[F[_]](using m: Mirror { type MirroredType = F ; type MirroredElemTypes[_] }, r: Functor[m.MirroredElemTypes]): Functor[F] = new Functor[F] {}
30+
def derived[F[_]](using m: Mirror { type MirroredType[X] = F[X] ; type MirroredElemTypes[_] }, r: Functor[m.MirroredElemTypes]): Functor[F] = new Functor[F] {}
3131
}
3232

3333
case class Mono(i: Int) derives Functor
@@ -43,7 +43,7 @@ object Test extends App {
4343
given [C] as FunctorK[[F[_]] =>> C] {}
4444
given [T] as FunctorK[[F[_]] =>> Tuple1[F[T]]]
4545

46-
def derived[F[_[_]]](using m: Mirror { type MirroredType = F ; type MirroredElemTypes[_[_]] }, r: FunctorK[m.MirroredElemTypes]): FunctorK[F] = new FunctorK[F] {}
46+
def derived[F[_[_]]](using m: Mirror { type MirroredType[X[_]] = F[X] ; type MirroredElemTypes[_[_]] }, r: FunctorK[m.MirroredElemTypes]): FunctorK[F] = new FunctorK[F] {}
4747
}
4848

4949
case class Mono(i: Int) derives FunctorK
@@ -61,7 +61,7 @@ object Test extends App {
6161
given t2 as Bifunctor[[T, U] =>> (T, U)] {}
6262
given t3 [T] as Bifunctor[[U, V] =>> (T, U, V)] {}
6363

64-
def derived[F[_, _]](using m: Mirror { type MirroredType = F ; type MirroredElemTypes[_, _] }, r: Bifunctor[m.MirroredElemTypes]): Bifunctor[F] = ???
64+
def derived[F[_, _]](using m: Mirror { type MirroredType[X, Y] = F[X, Y] ; type MirroredElemTypes[_, _] }, r: Bifunctor[m.MirroredElemTypes]): Bifunctor[F] = ???
6565
}
6666

6767
case class Mono(i: Int) derives Bifunctor

0 commit comments

Comments
 (0)