From 69557da5539a5a5132100fdab931e69f82139e15 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Mon, 21 Oct 2013 22:50:58 +0200 Subject: SI-7020 Deterministic warnings for pattern matcher, take 2 The previous swing at determinism, ebb01e05cbe4, made decent contact but apparently didn't hit it out of the park. The test wavered every hundred or so runs, as witnessed occasionally in nightly builds or pull request validation. I setup a test to run neg/7020.scala a few hundred times, and could trigger the failure reliably. I then swept through the pattern matcher in search of HashMap and HashSet creation, and changed them all to the Linked variety. The results of that are published in retronym#ticket/7020-3 [1]. This commit represents the careful whittling down of that patch to the minimal change required to exhibit determinism. [1] https://github.com/retronym/scala/compare/ticket/7020-3 --- test/disabled/neg/t7020.check | 19 ------------------- test/disabled/neg/t7020.flags | 1 - test/disabled/neg/t7020.scala | 30 ------------------------------ 3 files changed, 50 deletions(-) delete mode 100644 test/disabled/neg/t7020.check delete mode 100644 test/disabled/neg/t7020.flags delete mode 100644 test/disabled/neg/t7020.scala (limited to 'test/disabled') diff --git a/test/disabled/neg/t7020.check b/test/disabled/neg/t7020.check deleted file mode 100644 index f9600ca7fc..0000000000 --- a/test/disabled/neg/t7020.check +++ /dev/null @@ -1,19 +0,0 @@ -t7020.scala:3: warning: match may not be exhaustive. -It would fail on the following inputs: List((x: Int forSome x not in (1, 2, 4, 5, 6, 7))), List((x: Int forSome x not in (1, 2, 4, 5, 6, 7)), _), List(1, _), List(2, _), List(4, _), List(5, _), List(6, _), List(7, _), List(??, _), List(_, _) - List(5) match { - ^ -t7020.scala:10: warning: match may not be exhaustive. -It would fail on the following inputs: List((x: Int forSome x not in (1, 2, 4, 5, 6, 7))), List((x: Int forSome x not in (1, 2, 4, 5, 6, 7)), _), List(1, _), List(2, _), List(4, _), List(5, _), List(6, _), List(7, _), List(??, _), List(_, _) - List(5) match { - ^ -t7020.scala:17: warning: match may not be exhaustive. -It would fail on the following inputs: List((x: Int forSome x not in (1, 2, 4, 5, 6, 7))), List((x: Int forSome x not in (1, 2, 4, 5, 6, 7)), _), List(1, _), List(2, _), List(4, _), List(5, _), List(6, _), List(7, _), List(??, _), List(_, _) - List(5) match { - ^ -t7020.scala:24: warning: match may not be exhaustive. -It would fail on the following inputs: List((x: Int forSome x not in (1, 2, 4, 5, 6, 7))), List((x: Int forSome x not in (1, 2, 4, 5, 6, 7)), _), List(1, _), List(2, _), List(4, _), List(5, _), List(6, _), List(7, _), List(??, _), List(_, _) - List(5) match { - ^ -error: No warnings can be incurred under -Xfatal-warnings. -four warnings found -one error found diff --git a/test/disabled/neg/t7020.flags b/test/disabled/neg/t7020.flags deleted file mode 100644 index e8fb65d50c..0000000000 --- a/test/disabled/neg/t7020.flags +++ /dev/null @@ -1 +0,0 @@ --Xfatal-warnings \ No newline at end of file diff --git a/test/disabled/neg/t7020.scala b/test/disabled/neg/t7020.scala deleted file mode 100644 index cc5421bab1..0000000000 --- a/test/disabled/neg/t7020.scala +++ /dev/null @@ -1,30 +0,0 @@ -object Test { - // warning was non-deterministic - List(5) match { - case 1 :: Nil | 2 :: Nil => - case (x@(4 | 5 | 6)) :: Nil => - case 7 :: Nil => - case Nil => - } - - List(5) match { - case 1 :: Nil | 2 :: Nil => - case (x@(4 | 5 | 6)) :: Nil => - case 7 :: Nil => - case Nil => - } - - List(5) match { - case 1 :: Nil | 2 :: Nil => - case (x@(4 | 5 | 6)) :: Nil => - case 7 :: Nil => - case Nil => - } - - List(5) match { - case 1 :: Nil | 2 :: Nil => - case (x@(4 | 5 | 6)) :: Nil => - case 7 :: Nil => - case Nil => - } -} -- cgit v1.2.3