diff --git a/compiler/src/dotty/tools/dotc/typer/Typer.scala b/compiler/src/dotty/tools/dotc/typer/Typer.scala index 8883b492e2d9..2d0d4e9a8b6e 100644 --- a/compiler/src/dotty/tools/dotc/typer/Typer.scala +++ b/compiler/src/dotty/tools/dotc/typer/Typer.scala @@ -1144,7 +1144,7 @@ class Typer extends Namer case _ => mapOver(t) } - val pt1 = pt.stripTypeVar.dealias + val pt1 = pt.stripTypeVar.dealias.normalized if (pt1 ne pt1.dropDependentRefinement) && defn.isContextFunctionType(pt1.nonPrivateMember(nme.apply).info.finalResultType) then diff --git a/tests/pos/i13526.scala b/tests/pos/i13526.scala new file mode 100644 index 000000000000..3b3c29ca3830 --- /dev/null +++ b/tests/pos/i13526.scala @@ -0,0 +1,15 @@ +type ~>[Args <: Tuple, Return] = Args match { + case (arg1, arg2) => ((arg1, arg2) => Return) +} + +trait Builder[Args <: NonEmptyTuple] { + def apply(f: Args ~> String): String +} + +class BuilderImpl[Args <: NonEmptyTuple] extends Builder[Args] { + override def apply(f: Args ~> String): String = ??? +} + +val builder = BuilderImpl[Int *: String *: EmptyTuple]() +// builder { (i: Int, s: String) => "test" } // This line compiles +val _ = builder { (i, s) => "test" } // Does not compile \ No newline at end of file