From fe9b1551fb045720c72c032c117c654765b9797d Mon Sep 17 00:00:00 2001 From: Katarzyna Marek Date: Wed, 17 Sep 2025 12:28:57 +0200 Subject: [PATCH] fix: make vals created in desugaring of n-ary lambdas non-synthetic (#23896) resolves: https://github.com/scala/scala3/issues/16110 resolves: https://github.com/scalameta/metals/issues/7594 [Cherry-picked 5f470ea60b75da792d86cb71db644035c04cec73] --- compiler/src/dotty/tools/dotc/ast/Desugar.scala | 1 - .../tools/pc/PcConvertToNamedLambdaParameters.scala | 2 +- .../dotty/tools/pc/tests/hover/HoverTermSuite.scala | 12 ++++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/ast/Desugar.scala b/compiler/src/dotty/tools/dotc/ast/Desugar.scala index 6406035d0678..0938a57edd36 100644 --- a/compiler/src/dotty/tools/dotc/ast/Desugar.scala +++ b/compiler/src/dotty/tools/dotc/ast/Desugar.scala @@ -1526,7 +1526,6 @@ object desugar { ValDef(param.name, param.tpt, selector(idx)) .withSpan(param.span) .withAttachment(UntupledParam, ()) - .withFlags(Synthetic) } Function(param :: Nil, Block(vdefs, body)) } diff --git a/presentation-compiler/src/main/dotty/tools/pc/PcConvertToNamedLambdaParameters.scala b/presentation-compiler/src/main/dotty/tools/pc/PcConvertToNamedLambdaParameters.scala index 5479a223bcce..883a9ee4391c 100644 --- a/presentation-compiler/src/main/dotty/tools/pc/PcConvertToNamedLambdaParameters.scala +++ b/presentation-compiler/src/main/dotty/tools/pc/PcConvertToNamedLambdaParameters.scala @@ -120,7 +120,7 @@ object PcConvertToNamedLambdaParameters: } def isWildcardParam(param: tpd.ValDef)(using Context): Boolean = - param.name.toString.startsWith("_$") && param.symbol.is(Flags.Synthetic) + param.name.toString.startsWith("_$") def findParamReferencePosition(param: tpd.ValDef, lambda: tpd.Tree)(using Context): Option[SourcePosition] = var pos: Option[SourcePosition] = None diff --git a/presentation-compiler/test/dotty/tools/pc/tests/hover/HoverTermSuite.scala b/presentation-compiler/test/dotty/tools/pc/tests/hover/HoverTermSuite.scala index 6cefe387a950..801d67da272c 100644 --- a/presentation-compiler/test/dotty/tools/pc/tests/hover/HoverTermSuite.scala +++ b/presentation-compiler/test/dotty/tools/pc/tests/hover/HoverTermSuite.scala @@ -6,6 +6,18 @@ import org.junit.Test class HoverTermSuite extends BaseHoverSuite: + @Test def `n-ary lamba` = + check( + """|object testRepor { + | val listOfTuples = List(1 -> 1, 2 -> 2, 3 -> 3) + | + | listOfTuples.map((k@@ey, value) => key + value) + |} + |""".stripMargin, + """|val key: Int + |""".stripMargin.hover + ) + @Test def `map` = check( """object a {