diff --git a/compiler/src/dotty/tools/dotc/typer/Inliner.scala b/compiler/src/dotty/tools/dotc/typer/Inliner.scala index c99ccbd24428..0bae47ceff0a 100644 --- a/compiler/src/dotty/tools/dotc/typer/Inliner.scala +++ b/compiler/src/dotty/tools/dotc/typer/Inliner.scala @@ -849,13 +849,15 @@ class Inliner(call: tpd.Tree, rhsToInline: tpd.Tree)(using Context) { def searchImplicit(tpt: Tree) = val evTyper = new Typer(ctx.nestingLevel + 1) val evCtx = ctx.fresh.setTyper(evTyper) - val evidence = evTyper.inferImplicitArg(tpt.tpe, tpt.span)(using evCtx) - evidence.tpe match - case fail: Implicits.SearchFailureType => - val msg = evTyper.missingArgMsg(evidence, tpt.tpe, "") - errorTree(call, em"$msg") - case _ => - evidence + inContext(evCtx) { + val evidence = evTyper.inferImplicitArg(tpt.tpe, tpt.span) + evidence.tpe match + case fail: Implicits.SearchFailureType => + val msg = evTyper.missingArgMsg(evidence, tpt.tpe, "") + errorTree(call, em"$msg") + case _ => + evidence + } return searchImplicit(callTypeArgs.head) } diff --git a/tests/neg-macros/i13406/Qux_1.scala b/tests/neg-macros/i13406/Qux_1.scala new file mode 100644 index 000000000000..f68c92de6612 --- /dev/null +++ b/tests/neg-macros/i13406/Qux_1.scala @@ -0,0 +1,4 @@ +// Qux_1.scala +sealed trait Qux[T] // anonymous mirror because no companion +object QuxImpl: + case class Foo[A](a: A) extends Qux[A] diff --git a/tests/neg-macros/i13406/Test_2.scala b/tests/neg-macros/i13406/Test_2.scala new file mode 100644 index 000000000000..f2cb0a3f05ee --- /dev/null +++ b/tests/neg-macros/i13406/Test_2.scala @@ -0,0 +1,8 @@ +// Test_2.scala +trait Bar + +inline given derivedReducible(using scala.deriving.Mirror.SumOf[Qux[_]]): Bar = + scala.compiletime.summonInline[Bar] + ??? + +def test = derivedReducible // error