diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-04 17:51:40 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-05 16:26:18 +0200 |
commit | b61b5fffb625a7db7bdd5d1c434971ecadc3791f (patch) | |
tree | 3c7703de3ed83ec25d9e91f5e8a7bba5f2dfea1a /test/files/pos | |
parent | 8234ba3905b588ea40e9a6bc0b1f83c464ddf191 (diff) | |
download | scala-b61b5fffb625a7db7bdd5d1c434971ecadc3791f.tar.gz scala-b61b5fffb625a7db7bdd5d1c434971ecadc3791f.tar.bz2 scala-b61b5fffb625a7db7bdd5d1c434971ecadc3791f.zip |
SI-6008 use static knowledge of success of type tests
augment the equality axioms to take into account that
a type test against the static type of a variable succeeds unless the variable is null
for exhaustivity we disregard null, so the type test always succeeds
during unreachability we model this knowledge as the obvious implication
Diffstat (limited to 'test/files/pos')
-rw-r--r-- | test/files/pos/t6008.flags | 1 | ||||
-rw-r--r-- | test/files/pos/t6008.scala | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/test/files/pos/t6008.flags b/test/files/pos/t6008.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/pos/t6008.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/t6008.scala b/test/files/pos/t6008.scala new file mode 100644 index 0000000000..84ae19b211 --- /dev/null +++ b/test/files/pos/t6008.scala @@ -0,0 +1,12 @@ +// none of these should complain about exhaustivity +class Test { + // It would fail on the following inputs: (_, false), (_, true) + def x(in: (Int, Boolean)) = in match { case (i: Int, b: Boolean) => 3 } + + // There is no warning if the Int is ignored or bound without an explicit type: + def y(in: (Int, Boolean)) = in match { case (_, b: Boolean) => 3 } + + // Keeping the explicit type for the Int but dropping the one for Boolean presents a spurious warning again: + // It would fail on the following input: (_, _) + def z(in: (Int, Boolean)) = in match { case (i: Int, b) => 3 } +}
\ No newline at end of file |