From fffe3a25adab41d44943ed1be0191cf570d3e154 Mon Sep 17 00:00:00 2001 From: Bartosz Nitka Date: Tue, 17 May 2016 05:45:43 -0700 Subject: Make inert_model and inert_eqs deterministic sets The order inert_model and intert_eqs fold affects the order that the typechecker looks at things. I've been able to experimentally confirm that the order of equalities and the order of the model matter for determinism. This is just a straigthforward replacement of nondeterministic VarEnv for deterministic DVarEnv. Test Plan: ./validate Reviewers: simonpj, goldfire, austin, bgamari, simonmar Reviewed By: simonmar Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2232 GHC Trac Issues: #4012 --- testsuite/tests/indexed-types/should_fail/T3330a.stderr | 5 +++-- testsuite/tests/indexed-types/should_fail/T4174.stderr | 4 ++-- testsuite/tests/indexed-types/should_fail/T4179.stderr | 6 +++--- testsuite/tests/indexed-types/should_fail/T9662.stderr | 4 ++-- testsuite/tests/polykinds/T9017.stderr | 4 ++-- testsuite/tests/typecheck/should_fail/T7869.stderr | 8 +++----- 6 files changed, 15 insertions(+), 16 deletions(-) (limited to 'testsuite') diff --git a/testsuite/tests/indexed-types/should_fail/T3330a.stderr b/testsuite/tests/indexed-types/should_fail/T3330a.stderr index c90ea43c9c..0950875229 100644 --- a/testsuite/tests/indexed-types/should_fail/T3330a.stderr +++ b/testsuite/tests/indexed-types/should_fail/T3330a.stderr @@ -1,7 +1,8 @@ T3330a.hs:19:34: error: - • Couldn't match type ‘s’ with ‘(->) (s0 ix0 -> ix1)’ - ‘s’ is a rigid type variable bound by + • Couldn't match type ‘ix’ + with ‘r ix1 -> Writer [AnyF s] (r'0 ix1)’ + ‘ix’ is a rigid type variable bound by the type signature for: children :: forall (s :: * -> *) ix (r :: * -> *). s ix -> PF s r ix -> [AnyF s] diff --git a/testsuite/tests/indexed-types/should_fail/T4174.stderr b/testsuite/tests/indexed-types/should_fail/T4174.stderr index 2b0524fa2f..c932530e5a 100644 --- a/testsuite/tests/indexed-types/should_fail/T4174.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4174.stderr @@ -1,7 +1,7 @@ T4174.hs:42:12: error: - • Couldn't match type ‘a’ with ‘SmStep’ - ‘a’ is a rigid type variable bound by + • Couldn't match type ‘b’ with ‘RtsSpinLock’ + ‘b’ is a rigid type variable bound by the type signature for: testcase :: forall (m :: * -> *) minor n t p a b. Monad m => diff --git a/testsuite/tests/indexed-types/should_fail/T4179.stderr b/testsuite/tests/indexed-types/should_fail/T4179.stderr index 516bdf3802..91244c4ce7 100644 --- a/testsuite/tests/indexed-types/should_fail/T4179.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4179.stderr @@ -1,13 +1,13 @@ T4179.hs:26:16: error: - • Couldn't match type ‘A2 (x (A2 (FCon x) -> A3 (FCon x)))’ - with ‘A2 (FCon x)’ + • Couldn't match type ‘A3 (x (A2 (FCon x) -> A3 (FCon x)))’ + with ‘A3 (FCon x)’ Expected type: x (A2 (FCon x) -> A3 (FCon x)) -> A2 (FCon x) -> A3 (FCon x) Actual type: x (A2 (FCon x) -> A3 (FCon x)) -> A2 (x (A2 (FCon x) -> A3 (FCon x))) -> A3 (x (A2 (FCon x) -> A3 (FCon x))) - NB: ‘A2’ is a type function, and may not be injective + NB: ‘A3’ is a type function, and may not be injective • In the first argument of ‘foldDoC’, namely ‘op’ In the expression: foldDoC op In an equation for ‘fCon’: fCon = foldDoC op diff --git a/testsuite/tests/indexed-types/should_fail/T9662.stderr b/testsuite/tests/indexed-types/should_fail/T9662.stderr index efa3a73bf5..04ba4f4dba 100644 --- a/testsuite/tests/indexed-types/should_fail/T9662.stderr +++ b/testsuite/tests/indexed-types/should_fail/T9662.stderr @@ -1,7 +1,7 @@ T9662.hs:47:8: error: - • Couldn't match type ‘k’ with ‘Int’ - ‘k’ is a rigid type variable bound by + • Couldn't match type ‘n’ with ‘Int’ + ‘n’ is a rigid type variable bound by the type signature for: test :: forall sh k m n. Shape (((sh :. k) :. m) :. n) -> Shape (((sh :. m) :. n) :. k) diff --git a/testsuite/tests/polykinds/T9017.stderr b/testsuite/tests/polykinds/T9017.stderr index 4a2473ab51..b52000e7a1 100644 --- a/testsuite/tests/polykinds/T9017.stderr +++ b/testsuite/tests/polykinds/T9017.stderr @@ -1,7 +1,7 @@ T9017.hs:8:7: error: - • Couldn't match kind ‘k’ with ‘*’ - ‘k’ is a rigid type variable bound by + • Couldn't match kind ‘k1’ with ‘*’ + ‘k1’ is a rigid type variable bound by the type signature for: foo :: forall k k1 (a :: k1 -> k -> *) (b :: k1) (m :: k1 -> k). a b (m b) diff --git a/testsuite/tests/typecheck/should_fail/T7869.stderr b/testsuite/tests/typecheck/should_fail/T7869.stderr index f906a95e3e..44902922a6 100644 --- a/testsuite/tests/typecheck/should_fail/T7869.stderr +++ b/testsuite/tests/typecheck/should_fail/T7869.stderr @@ -1,7 +1,7 @@ T7869.hs:3:12: error: - • Couldn't match type ‘a’ with ‘a1’ - because type variable ‘a1’ would escape its scope + • Couldn't match type ‘b’ with ‘b1’ + because type variable ‘b1’ would escape its scope This (rigid, skolem) type variable is bound by an expression type signature: [a1] -> b1 @@ -11,6 +11,4 @@ T7869.hs:3:12: error: • In the expression: f x In the expression: (\ x -> f x) :: [a] -> b In an equation for ‘f’: f = (\ x -> f x) :: [a] -> b - • Relevant bindings include - x :: [a1] (bound at T7869.hs:3:7) - f :: [a] -> b (bound at T7869.hs:3:1) + • Relevant bindings include f :: [a] -> b (bound at T7869.hs:3:1) -- cgit v1.2.1