@@ -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
265277object Synthetics :
266278 def empty : Synthetics = Synthetics (Nil , Set .empty)
0 commit comments