summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2014-12-10 14:35:54 +0000
committerSimon Peyton Jones <simonpj@microsoft.com>2014-12-10 16:01:18 +0000
commit37b3646c9da4da62ae95aa3a9152335e485b261e (patch)
tree1e999649a37be0e6b9d95b008a9f3fbfeadf7887
parent832f8db2ee13120d5914149bd86f81df7e377b75 (diff)
downloadhaskell-37b3646c9da4da62ae95aa3a9152335e485b261e.tar.gz
Testsuite wibbles from constraint-solver improvements
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4179.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729.stderr23
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729a.stderr5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T9662.stderr72
-rw-r--r--testsuite/tests/perf/compiler/T5837.stderr9
-rw-r--r--testsuite/tests/perf/compiler/all.T16
-rw-r--r--testsuite/tests/typecheck/should_compile/T9708.hs3
-rw-r--r--testsuite/tests/typecheck/should_compile/T9708.stderr17
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T2
-rw-r--r--testsuite/tests/typecheck/should_fail/ContextStack2.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr106
11 files changed, 129 insertions, 136 deletions
diff --git a/testsuite/tests/indexed-types/should_fail/T4179.stderr b/testsuite/tests/indexed-types/should_fail/T4179.stderr
index f9bb6bb2ad..d2d62439f3 100644
--- a/testsuite/tests/indexed-types/should_fail/T4179.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4179.stderr
@@ -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))
diff --git a/testsuite/tests/indexed-types/should_fail/T7729.stderr b/testsuite/tests/indexed-types/should_fail/T7729.stderr
index 1e93e4017c..053d54e264 100644
--- a/testsuite/tests/indexed-types/should_fail/T7729.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7729.stderr
@@ -1,12 +1,11 @@
-
-T7729.hs:36:14:
- Couldn't match type ‘BasePrimMonad (Rand m)’
- with ‘t0 (BasePrimMonad (Rand m))’
- The type variable ‘t0’ is ambiguous
- Expected type: t0 (BasePrimMonad (Rand 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
+
+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
diff --git a/testsuite/tests/indexed-types/should_fail/T7729a.stderr b/testsuite/tests/indexed-types/should_fail/T7729a.stderr
index 93142006ed..8bd5a24d68 100644
--- a/testsuite/tests/indexed-types/should_fail/T7729a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7729a.stderr
@@ -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
diff --git a/testsuite/tests/indexed-types/should_fail/T9662.stderr b/testsuite/tests/indexed-types/should_fail/T9662.stderr
index 984a2ea4b7..3e84e4ac4a 100644
--- a/testsuite/tests/indexed-types/should_fail/T9662.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T9662.stderr
@@ -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
diff --git a/testsuite/tests/perf/compiler/T5837.stderr b/testsuite/tests/perf/compiler/T5837.stderr
index f3ee82ca66..df4fbefb77 100644
--- a/testsuite/tests/perf/compiler/T5837.stderr
+++ b/testsuite/tests/perf/compiler/T5837.stderr
@@ -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
diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T
index 5eda5a20af..03ff0c3825 100644
--- a/testsuite/tests/perf/compiler/all.T
+++ b/testsuite/tests/perf/compiler/all.T
@@ -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'])
diff --git a/testsuite/tests/typecheck/should_compile/T9708.hs b/testsuite/tests/typecheck/should_compile/T9708.hs
index fa6deb2cdf..b170ef3b6d 100644
--- a/testsuite/tests/typecheck/should_compile/T9708.hs
+++ b/testsuite/tests/typecheck/should_compile/T9708.hs
@@ -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 _ _ = ()
diff --git a/testsuite/tests/typecheck/should_compile/T9708.stderr b/testsuite/tests/typecheck/should_compile/T9708.stderr
index fb8a6a7ef9..e69de29bb2 100644
--- a/testsuite/tests/typecheck/should_compile/T9708.stderr
+++ b/testsuite/tests/typecheck/should_compile/T9708.stderr
@@ -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 -> ()
diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T
index 4a28032523..72c2e6688e 100644
--- a/testsuite/tests/typecheck/should_compile/all.T
+++ b/testsuite/tests/typecheck/should_compile/all.T
@@ -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, [''])
diff --git a/testsuite/tests/typecheck/should_fail/ContextStack2.stderr b/testsuite/tests/typecheck/should_fail/ContextStack2.stderr
index 90e728551b..8da1c39cfb 100644
--- a/testsuite/tests/typecheck/should_fail/ContextStack2.stderr
+++ b/testsuite/tests/typecheck/should_fail/ContextStack2.stderr
@@ -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
diff --git a/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr b/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr
index bebaf0d571..1261408eb8 100644
--- a/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr
+++ b/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr
@@ -1,53 +1,53 @@
-
-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)
+
+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)