From aa21d2f5572a2fa7738c068dfc675b09ec09b93a Mon Sep 17 00:00:00 2001 From: Katarzyna Marek Date: Wed, 10 Sep 2025 18:53:02 +0200 Subject: [PATCH] fix: make vals created in desugaring of n-ary lambdas non-synthetic --- 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 8184f18a8733..45c4b8b7ec08 100644 --- a/compiler/src/dotty/tools/dotc/ast/Desugar.scala +++ b/compiler/src/dotty/tools/dotc/ast/Desugar.scala @@ -1964,7 +1964,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 2ca50107c36b..ca5f336b7bcd 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 c483dc289b0e..76500fa82cc4 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 {