diff --git a/docs/docs/reference/metaprogramming/macros.md b/docs/docs/reference/metaprogramming/macros.md index a91767fc3fe6..830abac3e08d 100644 --- a/docs/docs/reference/metaprogramming/macros.md +++ b/docs/docs/reference/metaprogramming/macros.md @@ -742,12 +742,12 @@ extension (inline sc: StringContext) inline def showMe(inline args: Any*): String = ${ showMeExpr('sc, 'args) } private def showMeExpr(sc: Expr[StringContext], argsExpr: Expr[Seq[Any]])(using Quotes): Expr[String] = + import quotes.reflect.report argsExpr match case Varargs(argExprs) => val argShowedExprs = argExprs.map { case '{ $arg: tp } => - val showTp = Type.of[Show[tp]] - Expr.summon(using showTp) match + Expr.summon[Show[tp]] match case Some(showExpr) => '{ $showExpr.show($arg) } case None => diff --git a/tests/run-macros/string-context-implicits/Macro_1.scala b/tests/run-macros/string-context-implicits/Macro_1.scala index 0764e0d4ddad..a3a5af631b6e 100644 --- a/tests/run-macros/string-context-implicits/Macro_1.scala +++ b/tests/run-macros/string-context-implicits/Macro_1.scala @@ -3,26 +3,24 @@ import scala.quoted._ extension (sc: StringContext) inline def showMe(inline args: Any*): String = ${ showMeExpr('sc, 'args) } -private def showMeExpr(sc: Expr[StringContext], argsExpr: Expr[Seq[Any]])(using Quotes): Expr[String] = { +private def showMeExpr(sc: Expr[StringContext], argsExpr: Expr[Seq[Any]])(using Quotes): Expr[String] = import quotes.reflect.report - argsExpr match { + argsExpr match case Varargs(argExprs) => val argShowedExprs = argExprs.map { case '{ $arg: tp } => - val showTp = Type.of[Show[tp]] - Expr.summon(using showTp) match { - case Some(showExpr) => '{ $showExpr.show($arg) } - case None => report.error(s"could not find implicit for ${Type.show[Show[tp]]}", arg); '{???} - } + Expr.summon[Show[tp]] match + case Some(showExpr) => + '{ $showExpr.show($arg) } + case None => + report.error(s"could not find implicit for ${Type.show[Show[tp]]}", arg); '{???} } val newArgsExpr = Varargs(argShowedExprs) '{ $sc.s($newArgsExpr: _*) } case _ => // `new StringContext(...).showMeExpr(args: _*)` not an explicit `showMeExpr"..."` report.error(s"Args must be explicit", argsExpr) - '{???} - } -} + '{ ??? } trait Show[-T] { def show(x: T): String