summaryrefslogblamecommitdiff
path: root/test/files/neg/t7623.scala
blob: 5334cc5f6966332fdc02696cfb8a4dcdb8e45e9e (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                                       
                                                            
 
                                                            






                                                                                         
                                                            
 
                                                            














                                                                
case class C(s: String, xs: Int*)

object X { def unapplySeq(a: Any): Option[(String, Seq[Int])] = Some("", List(1,2,3)) }

// for case classes with varargs, avoid misaligned patterns
trait Ctest {
  def f = C("") match { case C(s) => }

  def g = C("") match { case C(s, t) => }            // warn

  def h = C("") match { case C(s, t, u @ _*) => }    // warn

  def ok = C("") match { case C(s, u @ _*) => }
}
// for extractors that unapplySeq: Option[(Something, Seq[_])], avoid misaligned patterns
trait Xtest {
  def f = "" match { case X(s) => }

  def g = "" match { case X(s, t) => }               // warn

  def h = "" match { case X(s, t, u @ _*) => }       // warn

  def ok = "" match { case X(s, u @ _*) => }
}
// for extractors that unapplySeq: Option[Seq[_]], anything goes
trait Rtest {
  val r = "(a+)".r

  def f = "" match { case r(s) => }

  def g = "" match { case r(s, t) => }

  def h = "" match { case r(s, t, u @ _*) => }

  def whatever = "" match { case r(u @ _*) => }
}