diff options
author | Bartosz Nitka <niteria@gmail.com> | 2016-05-17 05:45:43 -0700 |
---|---|---|
committer | Bartosz Nitka <niteria@gmail.com> | 2016-05-18 05:44:20 -0700 |
commit | fffe3a25adab41d44943ed1be0191cf570d3e154 (patch) | |
tree | 7ce7d796d044e78c6030fe517d2837e4debc6d4b /testsuite | |
parent | 77ee3a92a4012530cbd0b63c7b10b544eae50754 (diff) | |
download | haskell-fffe3a25adab41d44943ed1be0191cf570d3e154.tar.gz |
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
Diffstat (limited to 'testsuite')
6 files changed, 15 insertions, 16 deletions
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) |