diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-05-12 15:19:08 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-05-12 15:19:08 +0200 |
commit | ba123f081f05c46475248a1309df406a2c766dce (patch) | |
tree | 9bebac7c1b4b3e338cb905a76624a06cafd87229 /test/files/pos/t1133.scala | |
parent | 3511e5960d510eafcb67c388ec0b5b60aafdd8f3 (diff) | |
download | scala-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.scala | 32 |
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 + } + } +} |