diff --git a/compiler/src/dotty/tools/dotc/typer/Applications.scala b/compiler/src/dotty/tools/dotc/typer/Applications.scala index 008b96a4d174..9a83f9da4f02 100644 --- a/compiler/src/dotty/tools/dotc/typer/Applications.scala +++ b/compiler/src/dotty/tools/dotc/typer/Applications.scala @@ -744,7 +744,10 @@ trait Applications extends Compatibility { typedArgBuf += seqToRepeated(SeqLiteral(args, elemtpt)) } - def harmonizeArgs(args: List[TypedArg]): List[Tree] = harmonize(args) + def harmonizeArgs(args: List[TypedArg]): List[Tree] = + // harmonize args only if resType depends on parameter types + if (isFullyDefined(methodType.resType, ForceDegree.none)) args + else harmonize(args) override def appPos: SrcPos = app.srcPos diff --git a/tests/run-macros/f-interpolator-tests.check b/tests/run-macros/f-interpolator-tests.check index be5091b8ef39..4f2464fadae7 100644 --- a/tests/run-macros/f-interpolator-tests.check +++ b/tests/run-macros/f-interpolator-tests.check @@ -1,6 +1,7 @@ integer: 5 string: l 5, 6, hello +3.14 rounds to 3 5 6 Bob is 1 years old diff --git a/tests/run-macros/f-interpolator-tests.scala b/tests/run-macros/f-interpolator-tests.scala index ad712948a0d7..a50d22a4c022 100755 --- a/tests/run-macros/f-interpolator-tests.scala +++ b/tests/run-macros/f-interpolator-tests.scala @@ -10,6 +10,7 @@ object Test { println(f"integer: ${5}%d") println(f"string: ${"l"}%s") println(f"${5}%s, ${6}%d, ${"hello"}%s") + println(f"${3.14}%.2f rounds to ${3}%d") val x = 5 println(f"$x%d") diff --git a/tests/run/i9939.check b/tests/run/i9939.check new file mode 100644 index 000000000000..7040250edc75 --- /dev/null +++ b/tests/run/i9939.check @@ -0,0 +1,2 @@ +[3.0, 42] +[3.0, 42.0] diff --git a/tests/run/i9939.scala b/tests/run/i9939.scala new file mode 100644 index 000000000000..84ae5c2723c8 --- /dev/null +++ b/tests/run/i9939.scala @@ -0,0 +1,6 @@ +def nonHarmonized[A >: Any](args: A*): String = args.mkString("[", ", ", "]") +def harmonized[A >: Any](args: A*): List[A] = args.toList + +@main def Test = + println(nonHarmonized(3.0, 42)) + println(harmonized(3.0, 42).mkString("[", ", ", "]"))