Testsuite wibbles from constraint-solver improvements
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 10 Dec 2014 14:35:54 +0000 (14:35 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 10 Dec 2014 16:01:18 +0000 (16:01 +0000)
testsuite/tests/indexed-types/should_fail/T4179.stderr
testsuite/tests/indexed-types/should_fail/T7729.stderr
testsuite/tests/indexed-types/should_fail/T7729a.stderr
testsuite/tests/indexed-types/should_fail/T9662.stderr
testsuite/tests/perf/compiler/T5837.stderr
testsuite/tests/perf/compiler/all.T
testsuite/tests/typecheck/should_compile/T9708.hs
testsuite/tests/typecheck/should_compile/T9708.stderr
testsuite/tests/typecheck/should_compile/all.T
testsuite/tests/typecheck/should_fail/ContextStack2.stderr
testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr

index f9bb6bb..d2d6243 100644 (file)
@@ -1,8 +1,8 @@
 
 T4179.hs:26:16:
-    Couldn't match type ‘A2 (x (A2 (FCon x) -> A3 (FCon x)))’
-                  with ‘A2 (FCon x)’
-    NB: ‘A2’ is a type function, and may not be injective
+    Couldn't match type ‘A3 (x (A2 (FCon x) -> A3 (FCon x)))’
+                  with ‘A3 (FCon x)’
+    NB: ‘A3’ is a type function, and may not be injective
     Expected type: x (A2 (FCon x) -> A3 (FCon x))
                    -> A2 (FCon x) -> A3 (FCon x)
       Actual type: x (A2 (FCon x) -> A3 (FCon x))
index 1e93e40..053d54e 100644 (file)
@@ -1,12 +1,11 @@
-\r
-T7729.hs:36:14:\r
-    Couldn't match type ‘BasePrimMonad (Rand m)’\r
-                  with ‘t0 (BasePrimMonad (Rand m))’\r
-    The type variable ‘t0’ is ambiguous\r
-    Expected type: t0 (BasePrimMonad (Rand m)) a -> Rand m a\r
-      Actual type: BasePrimMonad (Rand m) a -> Rand m a\r
-    Relevant bindings include\r
-      liftPrim :: BasePrimMonad (Rand m) a -> Rand m a\r
-        (bound at T7729.hs:36:3)\r
-    In the first argument of ‘(.)’, namely ‘liftPrim’\r
-    In the expression: liftPrim . lift\r
+
+T7729.hs:36:14:
+    Couldn't match type ‘t0 (BasePrimMonad m)’ with ‘BasePrimMonad m’
+    The type variable ‘t0’ is ambiguous
+    Expected type: t0 (BasePrimMonad m) a -> Rand m a
+      Actual type: BasePrimMonad (Rand m) a -> Rand m a
+    Relevant bindings include
+      liftPrim :: BasePrimMonad (Rand m) a -> Rand m a
+        (bound at T7729.hs:36:3)
+    In the first argument of ‘(.)’, namely ‘liftPrim’
+    In the expression: liftPrim . lift
index 9314200..8bd5a24 100644 (file)
@@ -1,10 +1,9 @@
 
 T7729a.hs:36:26:
-    Couldn't match type ‘BasePrimMonad (Rand m)’
-                  with ‘t0 (BasePrimMonad (Rand m))’
+    Couldn't match type ‘BasePrimMonad m’ with ‘t0 (BasePrimMonad m)’
     The type variable ‘t0’ is ambiguous
     Expected type: BasePrimMonad (Rand m) a
-      Actual type: t0 (BasePrimMonad (Rand m)) a
+      Actual type: t0 (BasePrimMonad m) a
     Relevant bindings include
       x :: BasePrimMonad (Rand m) a (bound at T7729a.hs:36:12)
       liftPrim :: BasePrimMonad (Rand m) a -> Rand m a
index 984a2ea..3e84e4a 100644 (file)
@@ -1,25 +1,25 @@
 
-T9662.hs:47:8:
-    Couldn't match type ‘k’ with ‘Int
+T9662.hs:49:7:
+    Couldn't match type ‘k’ with ‘n
       ‘k’ is a rigid type variable bound by
           the type signature for
             test :: Shape (((sh :. k) :. m) :. n)
                     -> Shape (((sh :. m) :. n) :. k)
           at T9662.hs:44:9
-    Expected type: Exp (((sh :. k) :. m) :. n)
-                   -> Exp (((sh :. m) :. n) :. k)
-      Actual type: Exp
-                     (Tuple (((Atom a0 :. Atom Int) :. Atom Int) :. Atom Int))
-                   -> Exp
-                        (Plain (((Unlifted (Atom a0) :. Exp Int) :. Exp Int) :. Exp Int))
+      ‘n’ is a rigid type variable bound by
+          the type signature for
+            test :: Shape (((sh :. k) :. m) :. n)
+                    -> Shape (((sh :. m) :. n) :. k)
+          at T9662.hs:44:9
+    Expected type: Exp (((sh :. m) :. n) :. k)
+                   -> Exp (((sh :. k) :. m) :. n)
+      Actual type: Exp (((sh :. k) :. m) :. n)
+                   -> Exp (((sh :. k) :. m) :. n)
     Relevant bindings include
       test :: Shape (((sh :. k) :. m) :. n)
               -> Shape (((sh :. m) :. n) :. k)
         (bound at T9662.hs:45:1)
-    In the first argument of ‘backpermute’, namely
-      ‘(modify
-          (atom :. atom :. atom :. atom)
-          (\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))’
+    In the second argument of ‘backpermute’, namely ‘id’
     In the expression:
       backpermute
         (modify
@@ -27,27 +27,27 @@ T9662.hs:47:8:
            (\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))
         id
 
-T9662.hs:47:8:
-    Couldn't match type ‘m’ with ‘Int
+T9662.hs:49:7:
+    Couldn't match type ‘m’ with ‘k
       ‘m’ is a rigid type variable bound by
           the type signature for
             test :: Shape (((sh :. k) :. m) :. n)
                     -> Shape (((sh :. m) :. n) :. k)
           at T9662.hs:44:9
-    Expected type: Exp (((sh :. k) :. m) :. n)
-                   -> Exp (((sh :. m) :. n) :. k)
-      Actual type: Exp
-                     (Tuple (((Atom a0 :. Atom Int) :. Atom Int) :. Atom Int))
-                   -> Exp
-                        (Plain (((Unlifted (Atom a0) :. Exp Int) :. Exp Int) :. Exp Int))
+      ‘k’ is a rigid type variable bound by
+          the type signature for
+            test :: Shape (((sh :. k) :. m) :. n)
+                    -> Shape (((sh :. m) :. n) :. k)
+          at T9662.hs:44:9
+    Expected type: Exp (((sh :. m) :. n) :. k)
+                   -> Exp (((sh :. k) :. m) :. n)
+      Actual type: Exp (((sh :. k) :. m) :. n)
+                   -> Exp (((sh :. k) :. m) :. n)
     Relevant bindings include
       test :: Shape (((sh :. k) :. m) :. n)
               -> Shape (((sh :. m) :. n) :. k)
         (bound at T9662.hs:45:1)
-    In the first argument of ‘backpermute’, namely
-      ‘(modify
-          (atom :. atom :. atom :. atom)
-          (\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))’
+    In the second argument of ‘backpermute’, namely ‘id’
     In the expression:
       backpermute
         (modify
@@ -55,27 +55,27 @@ T9662.hs:47:8:
            (\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))
         id
 
-T9662.hs:47:8:
-    Couldn't match type ‘n’ with ‘Int
+T9662.hs:49:7:
+    Couldn't match type ‘n’ with ‘m
       ‘n’ is a rigid type variable bound by
           the type signature for
             test :: Shape (((sh :. k) :. m) :. n)
                     -> Shape (((sh :. m) :. n) :. k)
           at T9662.hs:44:9
-    Expected type: Exp (((sh :. k) :. m) :. n)
-                   -> Exp (((sh :. m) :. n) :. k)
-      Actual type: Exp
-                     (Tuple (((Atom a0 :. Atom Int) :. Atom Int) :. Atom Int))
-                   -> Exp
-                        (Plain (((Unlifted (Atom a0) :. Exp Int) :. Exp Int) :. Exp Int))
+      ‘m’ is a rigid type variable bound by
+          the type signature for
+            test :: Shape (((sh :. k) :. m) :. n)
+                    -> Shape (((sh :. m) :. n) :. k)
+          at T9662.hs:44:9
+    Expected type: Exp (((sh :. m) :. n) :. k)
+                   -> Exp (((sh :. k) :. m) :. n)
+      Actual type: Exp (((sh :. k) :. m) :. n)
+                   -> Exp (((sh :. k) :. m) :. n)
     Relevant bindings include
       test :: Shape (((sh :. k) :. m) :. n)
               -> Shape (((sh :. m) :. n) :. k)
         (bound at T9662.hs:45:1)
-    In the first argument of ‘backpermute’, namely
-      ‘(modify
-          (atom :. atom :. atom :. atom)
-          (\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))’
+    In the second argument of ‘backpermute’, namely ‘id’
     In the expression:
       backpermute
         (modify
index f3ee82c..df4fbef 100644 (file)
@@ -52,7 +52,8 @@ T5837.hs:8:6:
                                                                                                                                                   (TF
                                                                                                                                                      (TF
                                                                                                                                                         (TF
-                                                                                                                                                           a)))))))))))))))))))))))))))))))))))))))))))))))))
+                                                                                                                                                           (TF
+                                                                                                                                                              a))))))))))))))))))))))))))))))))))))))))))))))))))
       ~ (TF
            (TF
               (TF
@@ -104,7 +105,8 @@ T5837.hs:8:6:
                                                                                                                                                         (TF
                                                                                                                                                            (TF
                                                                                                                                                               (TF
-                                                                                                                                                                 a)))))))))))))))))))))))))))))))))))))))))))))))))),
+                                                                                                                                                                 (TF
+                                                                                                                                                                    a))))))))))))))))))))))))))))))))))))))))))))))))))),
          TF
            (TF
               (TF
@@ -156,7 +158,8 @@ T5837.hs:8:6:
                                                                                                                                                         (TF
                                                                                                                                                            (TF
                                                                                                                                                               (TF
-                                                                                                                                                                 Int)))))))))))))))))))))))))))))))))))))))))))))))))))
+                                                                                                                                                                 (TF
+                                                                                                                                                                    Int))))))))))))))))))))))))))))))))))))))))))))))))))))
     In the ambiguity check for the type signature for ‘t’:
       t :: forall a. (a ~ TF (a, Int)) => Int
     In the type signature for ‘t’: t :: (a ~ TF (a, Int)) => Int
index 5eda5a2..03ff0c3 100644 (file)
@@ -259,19 +259,20 @@ test('T3064',
             # 2014-01-22: 162457940 (x86/Linux)
             # 2014-12-01: 162457940 (Windows)
 
-           (wordsize(64), 385145080, 5)]),
+           (wordsize(64), 363103840, 5)]),
             # (amd64/Linux) (28/06/2011):  73259544
             # (amd64/Linux) (07/02/2013): 224798696
             # (amd64/Linux) (02/08/2013): 236404384, increase from roles
             # (amd64/Linux) (11/09/2013): 290165632, increase from AMP warnings
             # (amd64/Linux) (22/11/2013): 308300448, GND via Coercible and counters for constraints solving
-                # (amd64/Linux) (02/12/2013): 329795912, Coercible refactor
+            # (amd64/Linux) (02/12/2013): 329795912, Coercible refactor
             # (amd64/Linux) (11/02/2014): 308422280, optimize Coercions in simpleOptExpr
             # (amd64/Linux) (23/05/2014): 324022680, unknown cause
             # (amd64/Linux) (2014-07-17): 332702112, general round of updates
             # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
             # (amd64/Linux) (09/09/2014): 407416464, AMP changes (larger interfaces, more loading)
             # (amd64/Linux) (14/09/2014): 385145080, BPP changes (more NoImplicitPrelude in base)
+            # (amd64/Linux) (10/12/2014): 363103840, improvements in constraint solver
 
 ###################################
 # deactivated for now, as this metric became too volatile recently
@@ -314,7 +315,7 @@ test('T5030',
            # previous:    196457520
            # 2012-10-08:  259547660 (x86/Linux, new codegen)
            # 2013-11-21:  198573456 (x86 Windows, 64 bit machine)
-           (wordsize(64), 340969128, 10)]),
+           (wordsize(64), 449042120, 10)]),
              # Previously 530000000 (+/- 10%)
              # 17/1/13:   602993184  (x86_64/Linux)
              #            (new demand analyser)
@@ -328,6 +329,8 @@ test('T5030',
              # general round of updates
              # 2014-09-10 385152728  post-AMP-cleanup
              # 2014-12-08 340969128  constraint solver perf improvements (esp kick-out)
+             # 2014-12-10 449042120  constraint solver got worse again; more agressive solving
+             #                          of family-applications leads to less sharing, I think
 
        only_ways(['normal'])
       ],
@@ -399,7 +402,7 @@ test('T5321Fun',
              # 2012-10-08: 344416344 x86/Linux
              #  (increase due to new codegen)
              # 2014-09-03: 299656164     (specialisation and inlining)
-            (wordsize(64), 541287000, 10)])
+            (wordsize(64), 408110888, 10)])
              # prev:       585521080
              # 29/08/2012: 713385808     #  (increase due to new codegen)
              # 15/05/2013: 628341952     #  (reason for decrease unknown)
@@ -407,6 +410,7 @@ test('T5321Fun',
              # 12/05/2014: 614409344     #  (specialisation and inlining changes)
              # 10/09/2014: 601629032     #  post-AMP-cleanup
              # 06/11/2014: 541287000     #  Simon's flat-skol changes to the constraint solver
+             # 10/12/2014: 408110888     #  Improvements in constraint solver
       ],
       compile,[''])
 
@@ -443,7 +447,8 @@ test('T5642',
                      # sample from x86/Linux
             # prev:        650000000
             # 2014-09-03:  753045568 
-            (wordsize(64), 1536924976, 10)])
+
+            (wordsize(64), 1282916024, 10)])
             # prev:        1300000000
             # 2014-07-17:  1358833928 (general round of updates)
             # 2014-08-07:  1402242360 (caused by 1fc60ea)
@@ -453,6 +458,7 @@ test('T5642',
             #                          are ultimately discarded by trimAutoRules
             #                          It's a bizarre program with LOTS of data types)
             # 2014-09-10:  1536924976 post-AMP-cleanup
+            # 2014-12-10:  1282916024 Improvements in constraints solver
       ],
       compile,['-O'])
 
index fa6deb2..b170ef3 100644 (file)
@@ -6,5 +6,8 @@ import Data.Proxy
 
 type family SomeFun (n :: Nat)
 
+-- See the Trac ticket; whether this suceeds or fails is distintly random
+-- Currently it succeeds
+
 ti7 :: (x <= y, y <= x) => Proxy (SomeFun x) -> Proxy y -> ()
 ti7 _ _ = ()
index fb8a6a7..e69de29 100644 (file)
@@ -1,17 +0,0 @@
-
-T9708.hs:9:8:
-    Could not deduce (SomeFun y ~ SomeFun x)
-    from the context (x <= y, y <= x)
-      bound by the type signature for
-                 ti7 :: (x <= y, y <= x) => Proxy (SomeFun x) -> Proxy y -> ()
-      at T9708.hs:9:8-61
-    NB: ‘SomeFun’ is a type function, and may not be injective
-    Expected type: Proxy (SomeFun x) -> Proxy y -> ()
-      Actual type: Proxy (SomeFun y) -> Proxy y -> ()
-    In the ambiguity check for the type signature for ‘ti7’:
-      ti7 :: forall (x :: Nat) (y :: Nat).
-             (x <= y, y <= x) =>
-             Proxy (SomeFun x) -> Proxy y -> ()
-    To defer the ambiguity check to use sites, enable AllowAmbiguousTypes
-    In the type signature for ‘ti7’:
-      ti7 :: (x <= y, y <= x) => Proxy (SomeFun x) -> Proxy y -> ()
index 4a28032..72c2e66 100644 (file)
@@ -424,7 +424,7 @@ test('T8856', normal, compile, [''])
 test('T9569a', normal, compile, [''])
 test('T9117', normal, compile, [''])
 test('T9117_2', expect_broken('9117'), compile, [''])
-test('T9708', normal, compile_fail, [''])
+test('T9708', normal, compile, [''])
 test('T9404', normal, compile, [''])
 test('T9404b', normal, compile, [''])
 test('T7220', normal, compile, [''])
index 90e7285..8da1c39 100644 (file)
@@ -2,9 +2,9 @@
 ContextStack2.hs:8:6:
     Type function application stack overflow; size = 11
     Use -ftype-function-depth=N to increase stack size to N
-      TF (TF (TF (TF (TF (TF (TF (TF (TF (TF a)))))))))
-      ~ (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF a)))))))))),
-         TF (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF Int)))))))))))
+      TF (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF a))))))))))
+      ~ (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF a))))))))))),
+         TF (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF (TF Int))))))))))))
     In the ambiguity check for the type signature for ‘t’:
       t :: forall a. (a ~ TF (a, Int)) => Int
     In the type signature for ‘t’: t :: (a ~ TF (a, Int)) => Int
index bebaf0d..1261408 100644 (file)
@@ -1,53 +1,53 @@
-\r
-FrozenErrorTests.hs:12:12:\r
-    Couldn't match type ‘Int’ with ‘Bool’\r
-    Inaccessible code in\r
-      a pattern with constructor\r
-        MkT3 :: forall a. (a ~ Bool) => T a,\r
-      in a case alternative\r
-    In the pattern: MkT3\r
-    In a case alternative: MkT3 -> ()\r
-    In the expression: case x of { MkT3 -> () }\r
-\r
-FrozenErrorTests.hs:26:9:\r
-    Occurs check: cannot construct the infinite type: a ~ [a]\r
-    Expected type: [a]\r
-      Actual type: F a Bool\r
-    Relevant bindings include\r
-      test1 :: a (bound at FrozenErrorTests.hs:26:1)\r
-    In the expression: goo1 False undefined\r
-    In an equation for ‘test1’: test1 = goo1 False undefined\r
-\r
-FrozenErrorTests.hs:29:15:\r
-    Couldn't match type ‘Int’ with ‘[Int]’\r
-    Expected type: [[Int]]\r
-      Actual type: F [Int] Bool\r
-    In the first argument of ‘goo2’, namely ‘(goo1 False undefined)’\r
-    In the expression: goo2 (goo1 False undefined)\r
-    In an equation for ‘test2’: test2 = goo2 (goo1 False undefined)\r
-\r
-FrozenErrorTests.hs:30:9:\r
-    Couldn't match type ‘[Int]’ with ‘Int’\r
-    Expected type: [[Int]]\r
-      Actual type: F [Int] Bool\r
-    In the expression: goo1 False (goo2 undefined)\r
-    In an equation for ‘test3’: test3 = goo1 False (goo2 undefined)\r
-\r
-FrozenErrorTests.hs:45:15:\r
-    Couldn't match type ‘T2 c c’ with ‘M (T2 (T2 c c) c)’\r
-    Expected type: T2 (M (T2 (T2 c c) c)) (T2 (T2 c c) c)\r
-      Actual type: F (T2 (T2 c c) c) Bool\r
-    Relevant bindings include\r
-      test4 :: T2 (T2 c c) c (bound at FrozenErrorTests.hs:45:1)\r
-    In the first argument of ‘goo4’, namely ‘(goo3 False undefined)’\r
-    In the expression: goo4 (goo3 False undefined)\r
-    In an equation for ‘test4’: test4 = goo4 (goo3 False undefined)\r
-\r
-FrozenErrorTests.hs:46:9:\r
-    Couldn't match type ‘T2 c c’ with ‘M (T2 (T2 c c) c)’\r
-    Expected type: T2 (M (T2 (T2 c c) c)) (T2 (T2 c c) c)\r
-      Actual type: F (T2 (T2 c c) c) Bool\r
-    Relevant bindings include\r
-      test5 :: T2 (T2 c c) c (bound at FrozenErrorTests.hs:46:1)\r
-    In the expression: goo3 False (goo4 undefined)\r
-    In an equation for ‘test5’: test5 = goo3 False (goo4 undefined)\r
+
+FrozenErrorTests.hs:12:12:
+    Couldn't match type ‘Int’ with ‘Bool’
+    Inaccessible code in
+      a pattern with constructor
+        MkT3 :: forall a. (a ~ Bool) => T a,
+      in a case alternative
+    In the pattern: MkT3
+    In a case alternative: MkT3 -> ()
+    In the expression: case x of { MkT3 -> () }
+
+FrozenErrorTests.hs:26:9:
+    Occurs check: cannot construct the infinite type: a ~ [a]
+    Expected type: [a]
+      Actual type: F a Bool
+    Relevant bindings include
+      test1 :: a (bound at FrozenErrorTests.hs:26:1)
+    In the expression: goo1 False undefined
+    In an equation for ‘test1’: test1 = goo1 False undefined
+
+FrozenErrorTests.hs:29:15:
+    Couldn't match type ‘[Int]’ with ‘Int’
+    Expected type: [[Int]]
+      Actual type: F [Int] Bool
+    In the first argument of ‘goo2’, namely ‘(goo1 False undefined)’
+    In the expression: goo2 (goo1 False undefined)
+    In an equation for ‘test2’: test2 = goo2 (goo1 False undefined)
+
+FrozenErrorTests.hs:30:9:
+    Couldn't match type ‘[Int]’ with ‘Int’
+    Expected type: [[Int]]
+      Actual type: F [Int] Bool
+    In the expression: goo1 False (goo2 undefined)
+    In an equation for ‘test3’: test3 = goo1 False (goo2 undefined)
+
+FrozenErrorTests.hs:45:15:
+    Couldn't match type ‘T2 c c’ with ‘M (T2 (T2 c c) c)’
+    Expected type: T2 (M (T2 (T2 c c) c)) (T2 (T2 c c) c)
+      Actual type: F (T2 (T2 c c) c) Bool
+    Relevant bindings include
+      test4 :: T2 (T2 c c) c (bound at FrozenErrorTests.hs:45:1)
+    In the first argument of ‘goo4’, namely ‘(goo3 False undefined)’
+    In the expression: goo4 (goo3 False undefined)
+    In an equation for ‘test4’: test4 = goo4 (goo3 False undefined)
+
+FrozenErrorTests.hs:46:9:
+    Couldn't match type ‘T2 c c’ with ‘M (T2 (T2 c c) c)’
+    Expected type: T2 (M (T2 (T2 c c) c)) (T2 (T2 c c) c)
+      Actual type: F (T2 (T2 c c) c) Bool
+    Relevant bindings include
+      test5 :: T2 (T2 c c) c (bound at FrozenErrorTests.hs:46:1)
+    In the expression: goo3 False (goo4 undefined)
+    In an equation for ‘test5’: test5 = goo3 False (goo4 undefined)