diff --git a/tests/bench/string-interpolation-macro/Macro.scala b/tests/bench/string-interpolation-macro/Macro.scala new file mode 100644 index 000000000000..92d9a2cbe6fa --- /dev/null +++ b/tests/bench/string-interpolation-macro/Macro.scala @@ -0,0 +1,18 @@ +import scala.quoted._ + +object Macro { + + extension (inline sc: StringContext): + inline def x(inline args: Int*): String = ${ code('sc, 'args) } + + def code(strCtxExpr: Expr[StringContext], argsExpr: Expr[Seq[Int]])(using QuoteContext): Expr[String] = + var res: Expr[String] = null + for _ <- 0 to 5_000 do + (strCtxExpr, argsExpr) match { + case ('{ StringContext(${Varargs(Consts(parts))}: _*) }, Varargs(Consts(args))) => + res = Expr(StringContext(parts: _*).s(args: _*)) + case _ => ??? + } + res + +} diff --git a/tests/bench/string-interpolation-macro/Test.scala b/tests/bench/string-interpolation-macro/Test.scala new file mode 100644 index 000000000000..e32eeea2fef7 --- /dev/null +++ b/tests/bench/string-interpolation-macro/Test.scala @@ -0,0 +1,4 @@ +import Macro._ + +class Test: + def test: String = x"a${1}b${2}c${3}d${4}e${5}f"