@@ -40,7 +40,7 @@ class SignatureHelpTest {
4040 | case s @ Even( ${m1}) => println(s"s has an even number of characters")
4141 | case s => println(s"s has an odd number of characters")
4242 """
43- .signatureHelp(m1, Nil , Some (0 ), 0 )
43+ .signatureHelp(m1, Nil , Some (0 ), - 1 )
4444 }
4545
4646 @ Test def unapplyCustomClass : Unit = {
@@ -78,6 +78,46 @@ class SignatureHelpTest {
7878 .signatureHelp(m2, List (signature), Some (0 ), 1 )
7979 }
8080
81+ @ Test def nestedUnapplySignature : Unit = {
82+ val signatureOneTwo = S (" " , Nil , List (List (P (" a" , " One" ), P (" b" , " Two" ))), None )
83+ val signatureOne = S (" " , Nil , List (List (P (" c" , " Int" ))), None )
84+ val signatureTwo = S (" " , Nil , List (List (P (" d" , " Int" ))), None )
85+
86+ code """ case class One(c: Int)
87+ |case class Two(d: Int)
88+ |case class OneTwo[A, B](a: A, b: B)
89+ |
90+ |object Main {
91+ | val tp = new OneTwo(One(1), Two(5))
92+ | tp match {
93+ | case OneTwo(x ${m1}, ${m2}) =>
94+ | case OneTwo(One(x ${m4}) ${m3}, T ${m5}wo( ${m6}) ${m8}) ${m7} =>
95+ | }
96+ |} """
97+ .signatureHelp(m1, List (signatureOneTwo), Some (0 ), 0 )
98+ .signatureHelp(m2, List (signatureOneTwo), Some (0 ), 1 )
99+ .signatureHelp(m3, List (signatureOneTwo), Some (0 ), 0 )
100+ .signatureHelp(m4, List (signatureOne), Some (0 ), 0 )
101+ .signatureHelp(m5, List (signatureOneTwo), Some (0 ), 1 )
102+ .signatureHelp(m6, List (signatureTwo), Some (0 ), 0 )
103+ }
104+
105+ @ Test def properParameterIndexTest : Unit = {
106+ val signature = S (" " , Nil , List (List (P (" a" , " Int" ), P (" b" , " String" ))), None )
107+ code """ case class Two(a: Int, b: String)
108+ |
109+ |object Main {
110+ | val tp = new Two(1, "")
111+ | tp match {
112+ | case Two(x ${m1}, y ${m2}, d ${m3}) ${m4} =>
113+ | }
114+ |} """
115+ .signatureHelp(m1, List (signature), Some (0 ), 0 )
116+ .signatureHelp(m2, List (signature), Some (0 ), - 1 )
117+ .signatureHelp(m3, List (signature), Some (0 ), - 1 )
118+ .signatureHelp(m4, Nil , Some (0 ), 0 )
119+ }
120+
81121 @ Test def unapplyClass : Unit = {
82122 val signature = S (" " , Nil , List (List (P (" " , " Int" ), P (" " , " String" ))), None )
83123
0 commit comments