Skip to content

Commit 9e0eb8e

Browse files
committed
presentation compiler: remove synthetic decorations for script wrapper
1 parent b474209 commit 9e0eb8e

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

presentation-compiler/src/main/dotty/tools/pc/PcSyntheticDecorationProvider.scala

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ final class PcSyntheticDecorationsProvider(
4646

4747
def provide(): List[SyntheticDecoration] =
4848
val deepFolder = DeepFolder[Synthetics](collectDecorations)
49-
deepFolder(Synthetics.empty, tpdTree).decorations
49+
deepFolder(Synthetics.empty, tpdTree).result()
5050

5151
def collectDecorations(
5252
decorations: Synthetics,
@@ -256,11 +256,23 @@ case class Synthetics(
256256
def containsDef(offset: Int) = definitions(offset)
257257
def add(decoration: Decoration, offset: Int) =
258258
copy(
259-
decorations = decoration :: decorations,
259+
decorations = addDecoration(decoration),
260260
definitions = definitions + offset,
261261
)
262262
def add(decoration: Decoration) =
263-
copy(decorations = decoration :: decorations)
263+
copy (
264+
decorations = addDecoration(decoration)
265+
)
266+
267+
// If method has both type parameter and implicit parameter, we want the type parameter decoration to be displayed first,
268+
// but it's added second. This method adds the decoration to the right position in the list.
269+
private def addDecoration(decoration: Decoration): List[Decoration] =
270+
val atSamePos =
271+
decorations.takeWhile(_.range.getStart() == decoration.range.getStart())
272+
(atSamePos :+ decoration) ++ decorations.drop(atSamePos.size)
273+
274+
def result(): List[Decoration] = decorations.reverse
275+
end Synthetics
264276

265277
object Synthetics:
266278
def empty: Synthetics = Synthetics(Nil, Set.empty)

presentation-compiler/test/dotty/tools/pc/tests/decorations/SyntheticDecorationsSuite.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,4 +483,18 @@ class SyntheticDecorationsSuite extends BaseSyntheticDecorationsSuite:
483483
|}
484484
|""".stripMargin
485485
)
486+
487+
@Test def `ord` =
488+
check(
489+
"""
490+
|object Main {
491+
| val ordered = "acb".sorted
492+
|}
493+
|""".stripMargin,
494+
"""
495+
|object Main {
496+
| val ordered: String = augmentString("acb").sorted[Char](Char)
497+
|}
498+
|""".stripMargin
499+
)
486500

0 commit comments

Comments
 (0)