summaryrefslogtreecommitdiff
path: root/test/files/pos/t1133.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-05-12 15:19:08 +0200
committerJason Zaugg <jzaugg@gmail.com>2012-05-12 15:19:08 +0200
commitba123f081f05c46475248a1309df406a2c766dce (patch)
tree9bebac7c1b4b3e338cb905a76624a06cafd87229 /test/files/pos/t1133.scala
parent3511e5960d510eafcb67c388ec0b5b60aafdd8f3 (diff)
downloadscala-ba123f081f05c46475248a1309df406a2c766dce.tar.gz
scala-ba123f081f05c46475248a1309df406a2c766dce.tar.bz2
scala-ba123f081f05c46475248a1309df406a2c766dce.zip
Confirm extractor based pattern matches don't explode exponentially.
Closes SI-1133, thanks virtpatmat.
Diffstat (limited to 'test/files/pos/t1133.scala')
-rw-r--r--test/files/pos/t1133.scala32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/files/pos/t1133.scala b/test/files/pos/t1133.scala
new file mode 100644
index 0000000000..4538de5f5f
--- /dev/null
+++ b/test/files/pos/t1133.scala
@@ -0,0 +1,32 @@
+object Match
+{
+ def main(args: Array[String]) = {
+ args(0) match {
+ case Extractor1(Extractor2(Extractor3("dog", "dog", "dog"), x2, x3), b, c, Extractor3("b", "b", f), e) => println(e)
+ case Extractor3(Extractor2(Extractor1("a", "aa", "aaa", "aa", "a"), Extractor2("a", "aa", "aaa"), e), y, z) => println(e)
+ case Extractor2(Extractor3("a", "a", x), Extractor3("b", "b", y), Extractor3("c", "c", z)) => println(z)
+ case _ => println("fail")
+ }
+ }
+
+ object Extractor1 {
+ def unapply(x: Any) = x match {
+ case x: String => Some(x, x+x, x+x+x, x+x, x)
+ case _ => None
+ }
+ }
+
+ object Extractor2 {
+ def unapply(x: Any) = x match {
+ case x: String => Some(x, x+x, x+x+x)
+ case _ => None
+ }
+ }
+
+ object Extractor3 {
+ def unapply(x: Any) = x match {
+ case x: String => Some(x, x, x)
+ case _ => None
+ }
+ }
+}