diff options
author | liu fengyun <liufengyunchina@gmail.com> | 2016-07-21 10:45:14 +0200 |
---|---|---|
committer | liu fengyun <liufengyunchina@gmail.com> | 2016-08-24 10:26:59 +0200 |
commit | cc02243fbe8b7290265e1bdf540e4c2f256df199 (patch) | |
tree | bd83dcabb8de09fa48b9373b9431ef8c481da5ed /tests/patmat/exhaustive_heuristics.scala | |
parent | 1a7618f32c6d8060c3a87ce633645440d500aa7a (diff) | |
download | dotty-cc02243fbe8b7290265e1bdf540e4c2f256df199.tar.gz dotty-cc02243fbe8b7290265e1bdf540e4c2f256df199.tar.bz2 dotty-cc02243fbe8b7290265e1bdf540e4c2f256df199.zip |
add test set for exhaustivity and redundancy check
Diffstat (limited to 'tests/patmat/exhaustive_heuristics.scala')
-rw-r--r-- | tests/patmat/exhaustive_heuristics.scala | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/patmat/exhaustive_heuristics.scala b/tests/patmat/exhaustive_heuristics.scala new file mode 100644 index 000000000..7d682f6aa --- /dev/null +++ b/tests/patmat/exhaustive_heuristics.scala @@ -0,0 +1,26 @@ +// tests exhaustivity doesn't give warnings (due to its heuristic rewrites kicking in or it backing off) +object Test { + // List() => Nil + List(1) match { + case List() => + case x :: xs => + } + + // we don't look into guards + val turnOffChecks = true + List(1) match { + case _ if turnOffChecks => + } + + // we back off when there are any user-defined extractors + // in fact this is exhaustive, but we pretend we don't know since List's unapplySeq is not special to the compiler + // to compensate our ignorance, we back off + // well, in truth, we do rewrite List() to Nil, but otherwise we do nothing + // the full rewrite List(a, b) to a :: b :: Nil, for example is planned (but not sure it's a good idea) + List(true, false) match { + case List(_, _, _:_*) => + case List(node, _:_*) => + case Nil => + } + +}
\ No newline at end of file |