diff --git a/tests/patmat/t12237.check b/tests/patmat/t12237.check new file mode 100644 index 000000000000..139ef5ea3a19 --- /dev/null +++ b/tests/patmat/t12237.check @@ -0,0 +1 @@ +21: Pattern Match Exhaustivity: Root, PathAndQuery./(_, _), PathAndQuery.===(_, _), PathAndQuery.:&(_, PathAndQuery.===(_, _)), PathAndQuery.+?(_, PathAndQuery.===(_, _)) diff --git a/tests/patmat/t12237.scala b/tests/patmat/t12237.scala new file mode 100644 index 000000000000..26fa962c509d --- /dev/null +++ b/tests/patmat/t12237.scala @@ -0,0 +1,26 @@ +sealed trait PathAndQuery +sealed trait Path extends PathAndQuery +sealed trait Query extends PathAndQuery + +object PathAndQuery { + case object Root extends Path + case class /(prev: Path, value: String) extends Path + case class ===(k: String, v: String) extends Query + case class :&(prev: Query, next:(===)) extends Query + case class +?(path: Path, next:(===)) extends Query +} + +import PathAndQuery._ + +class Test { + val path = /(/(Root, "page"), "1") + val q1 = ===("k1", "v1") + val q2 = ===("k2", "v2") + val pq = :&(+?(path, q1), q2) + + (pq: PathAndQuery) match { + case Root / "page" / "1" => println("match 1") + case Root / "page" / "1" +? ("k1" === "v1") => println("match 2") + case Root / "page" / "1" +? ("k1" === "v1") :& ("k2" === "v2") => println("match 3") + } +}