summaryrefslogtreecommitdiff
path: root/testsuite/tests/indexed-types
diff options
context:
space:
mode:
authorEvan Laforge <qdunkan@gmail.com>2015-11-24 12:43:18 +0100
committerBen Gamari <ben@smart-cactus.org>2015-11-24 14:02:58 +0100
commitc05fdddec71f9dc8ebe62d751ccf03367128072a (patch)
tree4afadb128af4af0f99dfb92fdbb9607bbeb64f04 /testsuite/tests/indexed-types
parentf09f2470a76bb08b7f51d2f5663daa672b86f618 (diff)
downloadhaskell-c05fdddec71f9dc8ebe62d751ccf03367128072a.tar.gz
Rearrange error msgs and add section markers (Trac #11014).
This puts the "Relevant bindings" section at the end. It uses a TcErrors.Report Monoid to divide messages by importance and then mappends them together. This is not the most efficient way since there are various intermediate Reports and list appends, but it probably doesn't matter since error messages shouldn't get that large, and are usually prepended. In practice, everything is `important` except `relevantBindings`, which is `supplementary`. ErrMsg's errMsgShortDoc and errMsgExtraInfo were extracted into ErrDoc, which has important, context, and suppelementary fields. Each of those three sections is marked with a bullet character, '•' on unicode terminals and '*' on ascii terminals. Since this breaks tons of tests, I also modified testlib.normalise_errmsg to strip out '•'s. --- Additional notes: To avoid prepending * to an empty doc, I needed to filter empty docs. This seemed less error-prone than trying to modify everyone who produces SDoc to instead produce Maybe SDoc. So I added `Outputable.isEmpty`. Unfortunately it needs a DynFlags, which is kind of bogus, but otherwise I think I'd need another Empty case for SDoc, and then it couldn't be a newtype any more. ErrMsg's errMsgShortString is only used by the Show instance, which is in turn only used by Show HscTypes.SourceError, which is in turn only needed for the Exception instance. So it's probably possible to get rid of errMsgShortString, but that would a be an unrelated cleanup. Fixes #11014. Test Plan: see above Reviewers: austin, simonpj, thomie, bgamari Reviewed By: thomie, bgamari Subscribers: simonpj, nomeata, thomie Differential Revision: https://phabricator.haskell.org/D1427 GHC Trac Issues: #11014
Diffstat (limited to 'testsuite/tests/indexed-types')
-rw-r--r--testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr10
-rw-r--r--testsuite/tests/indexed-types/should_compile/T3208b.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr12
-rw-r--r--testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/Overlap10.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/Overlap11.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/Overlap15.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/Overlap6.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/Overlap9.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2544.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2664.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2693.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330a.stderr12
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330c.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3440.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4093a.stderr2
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4093b.stderr18
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4099.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4174.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4179.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4272.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/T5439.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T6123.stderr2
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7194.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7354.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7354a.stderr2
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729a.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7786.stderr18
-rw-r--r--testsuite/tests/indexed-types/should_fail/T8129.stdout2
-rw-r--r--testsuite/tests/indexed-types/should_fail/T8227.stderr10
-rw-r--r--testsuite/tests/indexed-types/should_fail/T8518.stderr16
-rw-r--r--testsuite/tests/indexed-types/should_fail/T9662.stderr24
35 files changed, 119 insertions, 119 deletions
diff --git a/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr b/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr
index b76aef8fd4..66b24174ae 100644
--- a/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr
+++ b/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr
@@ -5,19 +5,16 @@ PushedInAsGivens.hs:10:31:
This (rigid, skolem) type variable is bound by
the type signature for: foo :: (F Int ~ [a1]) => a1 -> Int
at PushedInAsGivens.hs:9:20-44
+ In the expression: y
+ In the first argument of ‘length’, namely ‘[x, y]’
Relevant bindings include
x :: a1 (bound at PushedInAsGivens.hs:10:17)
foo :: a1 -> Int (bound at PushedInAsGivens.hs:10:13)
y :: a (bound at PushedInAsGivens.hs:9:5)
bar :: a -> (a, Int) (bound at PushedInAsGivens.hs:9:1)
- In the expression: y
- In the first argument of ‘length’, namely ‘[x, y]’
PushedInAsGivens.hs:11:15:
Couldn't match expected type ‘[a]’ with actual type ‘F Int’
- Relevant bindings include
- y :: a (bound at PushedInAsGivens.hs:9:5)
- bar :: a -> (a, Int) (bound at PushedInAsGivens.hs:9:1)
In the expression: foo y
In the expression: (y, foo y)
In the expression:
@@ -25,3 +22,6 @@ PushedInAsGivens.hs:11:15:
foo :: (F Int ~ [a]) => a -> Int
foo x = length [...]
in (y, foo y)
+ Relevant bindings include
+ y :: a (bound at PushedInAsGivens.hs:9:5)
+ bar :: a -> (a, Int) (bound at PushedInAsGivens.hs:9:1)
diff --git a/testsuite/tests/indexed-types/should_compile/T3208b.stderr b/testsuite/tests/indexed-types/should_compile/T3208b.stderr
index 282aa2f886..10f3d2a26d 100644
--- a/testsuite/tests/indexed-types/should_compile/T3208b.stderr
+++ b/testsuite/tests/indexed-types/should_compile/T3208b.stderr
@@ -16,9 +16,9 @@ T3208b.hs:15:15:
fce' :: (OTerm a ~ STerm a, OBJECT a, SUBST a) => a -> c
at T3208b.hs:14:9-56
The type variable ‘o0’ is ambiguous
- Relevant bindings include
- f :: a (bound at T3208b.hs:15:6)
- fce' :: a -> c (bound at T3208b.hs:15:1)
In the first argument of ‘fce’, namely ‘(apply f)’
In the expression: fce (apply f)
In an equation for ‘fce'’: fce' f = fce (apply f)
+ Relevant bindings include
+ f :: a (bound at T3208b.hs:15:6)
+ fce' :: a -> c (bound at T3208b.hs:15:1)
diff --git a/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr b/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr
index b551f39d4c..f8cd07d0f7 100644
--- a/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr
+++ b/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr
@@ -1,18 +1,18 @@
ExtraTcsUntch.hs:23:18: error:
Couldn't match expected type ‘F Int’ with actual type ‘[[t]]’
- Relevant bindings include
- x :: [t] (bound at ExtraTcsUntch.hs:21:3)
- f :: [t] -> ((), ((), ())) (bound at ExtraTcsUntch.hs:21:1)
In the first argument of ‘h’, namely ‘[x]’
In the expression: h [x]
In an equation for ‘g1’: g1 _ = h [x]
-
-ExtraTcsUntch.hs:25:38: error:
- Couldn't match expected type ‘F Int’ with actual type ‘[[t]]’
Relevant bindings include
x :: [t] (bound at ExtraTcsUntch.hs:21:3)
f :: [t] -> ((), ((), ())) (bound at ExtraTcsUntch.hs:21:1)
+
+ExtraTcsUntch.hs:25:38: error:
+ Couldn't match expected type ‘F Int’ with actual type ‘[[t]]’
In the first argument of ‘h’, namely ‘[[undefined]]’
In the expression: h [[undefined]]
In the expression: (h [[undefined]], op x [y])
+ Relevant bindings include
+ x :: [t] (bound at ExtraTcsUntch.hs:21:3)
+ f :: [t] -> ((), ((), ())) (bound at ExtraTcsUntch.hs:21:1)
diff --git a/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr b/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr
index 2f2d3bff65..694a7832ad 100644
--- a/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr
+++ b/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr
@@ -7,8 +7,8 @@ GADTwrong1.hs:12:21:
at GADTwrong1.hs:12:14
‘b’ is a rigid type variable bound by
the type signature for: coerce :: a -> b at GADTwrong1.hs:10:20
+ In the expression: y
+ In a case alternative: T y -> y
Relevant bindings include
y :: c (bound at GADTwrong1.hs:12:16)
coerce :: a -> b (bound at GADTwrong1.hs:11:1)
- In the expression: y
- In a case alternative: T y -> y
diff --git a/testsuite/tests/indexed-types/should_fail/Overlap10.stderr b/testsuite/tests/indexed-types/should_fail/Overlap10.stderr
index 5a53870eff..b6ad5772fe 100644
--- a/testsuite/tests/indexed-types/should_fail/Overlap10.stderr
+++ b/testsuite/tests/indexed-types/should_fail/Overlap10.stderr
@@ -1,8 +1,8 @@
Overlap10.hs:10:7:
Couldn't match expected type ‘F a Bool’ with actual type ‘Bool’
+ In the expression: False
+ In an equation for ‘g’: g x = False
Relevant bindings include
x :: a (bound at Overlap10.hs:10:3)
g :: a -> F a Bool (bound at Overlap10.hs:10:1)
- In the expression: False
- In an equation for ‘g’: g x = False
diff --git a/testsuite/tests/indexed-types/should_fail/Overlap11.stderr b/testsuite/tests/indexed-types/should_fail/Overlap11.stderr
index 6e3286eb27..36af24fbd1 100644
--- a/testsuite/tests/indexed-types/should_fail/Overlap11.stderr
+++ b/testsuite/tests/indexed-types/should_fail/Overlap11.stderr
@@ -1,8 +1,8 @@
Overlap11.hs:10:8:
Couldn't match expected type ‘F a Int’ with actual type ‘Int’
+ In the expression: (5 :: Int)
+ In an equation for ‘g’: g x = (5 :: Int)
Relevant bindings include
x :: a (bound at Overlap11.hs:10:3)
g :: a -> F a Int (bound at Overlap11.hs:10:1)
- In the expression: (5 :: Int)
- In an equation for ‘g’: g x = (5 :: Int)
diff --git a/testsuite/tests/indexed-types/should_fail/Overlap15.stderr b/testsuite/tests/indexed-types/should_fail/Overlap15.stderr
index a24504caa4..673a90798d 100644
--- a/testsuite/tests/indexed-types/should_fail/Overlap15.stderr
+++ b/testsuite/tests/indexed-types/should_fail/Overlap15.stderr
@@ -1,7 +1,7 @@
Overlap15.hs:16:9:
Couldn't match expected type ‘F b [b] Bool’ with actual type ‘Bool’
- Relevant bindings include
- foo :: Proxy b -> F b [b] Bool (bound at Overlap15.hs:16:1)
In the expression: False
In an equation for ‘foo’: foo _ = False
+ Relevant bindings include
+ foo :: Proxy b -> F b [b] Bool (bound at Overlap15.hs:16:1)
diff --git a/testsuite/tests/indexed-types/should_fail/Overlap6.stderr b/testsuite/tests/indexed-types/should_fail/Overlap6.stderr
index 1b406e48f1..b2dc99251f 100644
--- a/testsuite/tests/indexed-types/should_fail/Overlap6.stderr
+++ b/testsuite/tests/indexed-types/should_fail/Overlap6.stderr
@@ -6,8 +6,8 @@ Overlap6.hs:15:7:
at Overlap6.hs:14:6
Expected type: Proxy (And x 'True)
Actual type: Proxy x
+ In the expression: x
+ In an equation for ‘g’: g x = x
Relevant bindings include
x :: Proxy x (bound at Overlap6.hs:15:3)
g :: Proxy x -> Proxy (And x 'True) (bound at Overlap6.hs:15:1)
- In the expression: x
- In an equation for ‘g’: g x = x
diff --git a/testsuite/tests/indexed-types/should_fail/Overlap9.stderr b/testsuite/tests/indexed-types/should_fail/Overlap9.stderr
index 9dd542f4c8..11b73c52f9 100644
--- a/testsuite/tests/indexed-types/should_fail/Overlap9.stderr
+++ b/testsuite/tests/indexed-types/should_fail/Overlap9.stderr
@@ -1,8 +1,8 @@
Overlap9.hs:10:7:
Couldn't match expected type ‘F a’ with actual type ‘Int’
+ In the expression: length (show x)
+ In an equation for ‘g’: g x = length (show x)
Relevant bindings include
x :: a (bound at Overlap9.hs:10:3)
g :: a -> F a (bound at Overlap9.hs:10:1)
- In the expression: length (show x)
- In an equation for ‘g’: g x = length (show x)
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr
index 0d663a6497..74db7b1dcf 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr
@@ -2,8 +2,8 @@
SimpleFail16.hs:10:12:
Couldn't match expected type ‘p0 a0’ with actual type ‘F ()’
The type variables ‘p0’, ‘a0’ are ambiguous
- Relevant bindings include
- bar :: p0 a0 (bound at SimpleFail16.hs:10:1)
In the first argument of ‘foo’, namely ‘(undefined :: F ())’
In the expression: foo (undefined :: F ())
In an equation for ‘bar’: bar = foo (undefined :: F ())
+ Relevant bindings include
+ bar :: p0 a0 (bound at SimpleFail16.hs:10:1)
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr
index 09df4c2510..8288d30619 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr
@@ -6,7 +6,7 @@ SimpleFail5a.hs:31:11:
at SimpleFail5a.hs:30:14
Expected type: S3 a
Actual type: S3 Int
- Relevant bindings include
- bar3wrong :: S3 a -> a (bound at SimpleFail5a.hs:31:1)
In the pattern: D3Int
In an equation for ‘bar3wrong’: bar3wrong D3Int = 1
+ Relevant bindings include
+ bar3wrong :: S3 a -> a (bound at SimpleFail5a.hs:31:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T2544.stderr b/testsuite/tests/indexed-types/should_fail/T2544.stderr
index 0245cb7b6a..e60cdab2a5 100644
--- a/testsuite/tests/indexed-types/should_fail/T2544.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2544.stderr
@@ -5,10 +5,10 @@ T2544.hs:17:18: error:
The type variable ‘i0’ is ambiguous
Expected type: IxMap l [Int]
Actual type: IxMap i0 [Int]
- Relevant bindings include
- empty :: IxMap (l :|: r) [Int] (bound at T2544.hs:17:4)
In the first argument of ‘BiApp’, namely ‘empty’
In the expression: BiApp empty empty
+ Relevant bindings include
+ empty :: IxMap (l :|: r) [Int] (bound at T2544.hs:17:4)
T2544.hs:17:24: error:
Couldn't match type ‘IxMap i1’ with ‘IxMap r’
@@ -16,7 +16,7 @@ T2544.hs:17:24: error:
The type variable ‘i1’ is ambiguous
Expected type: IxMap r [Int]
Actual type: IxMap i1 [Int]
- Relevant bindings include
- empty :: IxMap (l :|: r) [Int] (bound at T2544.hs:17:4)
In the second argument of ‘BiApp’, namely ‘empty’
In the expression: BiApp empty empty
+ Relevant bindings include
+ empty :: IxMap (l :|: r) [Int] (bound at T2544.hs:17:4)
diff --git a/testsuite/tests/indexed-types/should_fail/T2664.stderr b/testsuite/tests/indexed-types/should_fail/T2664.stderr
index fb28764c80..d2dd0dff60 100644
--- a/testsuite/tests/indexed-types/should_fail/T2664.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2664.stderr
@@ -12,10 +12,10 @@ T2664.hs:31:52:
the instance declaration at T2664.hs:22:10
Expected type: Dual (Dual a)
Actual type: b
- Relevant bindings include
- v :: MVar (Either (PChan a) (PChan b)) (bound at T2664.hs:24:9)
- newPChan :: IO (PChan (a :*: b), PChan c) (bound at T2664.hs:23:5)
In the third argument of ‘pchoose’, namely ‘newPChan’
In the first argument of ‘E’, namely ‘(pchoose Right v newPChan)’
In the expression:
E (pchoose Right v newPChan) (pchoose Left v newPChan)
+ Relevant bindings include
+ v :: MVar (Either (PChan a) (PChan b)) (bound at T2664.hs:24:9)
+ newPChan :: IO (PChan (a :*: b), PChan c) (bound at T2664.hs:23:5)
diff --git a/testsuite/tests/indexed-types/should_fail/T2693.stderr b/testsuite/tests/indexed-types/should_fail/T2693.stderr
index 0c6ea152a7..182bbde8ed 100644
--- a/testsuite/tests/indexed-types/should_fail/T2693.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2693.stderr
@@ -18,16 +18,16 @@ T2693.hs:11:7:
T2693.hs:19:15:
Couldn't match expected type ‘(a5, b0)’ with actual type ‘TFn a2’
The type variables ‘b0’, ‘a2’, ‘a5’ are ambiguous
- Relevant bindings include n :: a5 (bound at T2693.hs:19:7)
In the first argument of ‘fst’, namely ‘x’
In the first argument of ‘(+)’, namely ‘fst x’
+ Relevant bindings include n :: a5 (bound at T2693.hs:19:7)
T2693.hs:19:23:
Couldn't match expected type ‘(a3, a5)’ with actual type ‘TFn a4’
The type variables ‘a3’, ‘a4’, ‘a5’ are ambiguous
- Relevant bindings include n :: a5 (bound at T2693.hs:19:7)
In the first argument of ‘snd’, namely ‘x’
In the second argument of ‘(+)’, namely ‘snd x’
+ Relevant bindings include n :: a5 (bound at T2693.hs:19:7)
T2693.hs:29:20:
Couldn't match type ‘TFn a0’ with ‘PVR a1’
diff --git a/testsuite/tests/indexed-types/should_fail/T3330a.stderr b/testsuite/tests/indexed-types/should_fail/T3330a.stderr
index 9adb5ad462..a114158938 100644
--- a/testsuite/tests/indexed-types/should_fail/T3330a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3330a.stderr
@@ -7,12 +7,12 @@ T3330a.hs:19:34:
Expected type: (s0 ix0 -> ix1)
-> r ix1 -> Writer [AnyF s] (r'0 ix1)
Actual type: s ix
+ In the first argument of ‘hmapM’, namely ‘p’
+ In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’
Relevant bindings include
x :: PF s r ix (bound at T3330a.hs:19:12)
p :: s ix (bound at T3330a.hs:19:10)
children :: s ix -> PF s r ix -> [AnyF s] (bound at T3330a.hs:19:1)
- In the first argument of ‘hmapM’, namely ‘p’
- In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’
T3330a.hs:19:34:
Couldn't match type ‘ix’ with ‘r ix1 -> Writer [AnyF s] (r'0 ix1)’
@@ -22,12 +22,12 @@ T3330a.hs:19:34:
Expected type: (s0 ix0 -> ix1)
-> r ix1 -> Writer [AnyF s] (r'0 ix1)
Actual type: s ix
+ In the first argument of ‘hmapM’, namely ‘p’
+ In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’
Relevant bindings include
x :: PF s r ix (bound at T3330a.hs:19:12)
p :: s ix (bound at T3330a.hs:19:10)
children :: s ix -> PF s r ix -> [AnyF s] (bound at T3330a.hs:19:1)
- In the first argument of ‘hmapM’, namely ‘p’
- In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’
T3330a.hs:19:44:
Couldn't match type ‘ix’ with ‘r0 ix0 -> Writer [AnyF s0] (r0 ix0)’
@@ -36,9 +36,9 @@ T3330a.hs:19:44:
at T3330a.hs:18:13
Expected type: PF s r (r0 ix0 -> Writer [AnyF s0] (r0 ix0))
Actual type: PF s r ix
+ In the third argument of ‘hmapM’, namely ‘x’
+ In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’
Relevant bindings include
x :: PF s r ix (bound at T3330a.hs:19:12)
p :: s ix (bound at T3330a.hs:19:10)
children :: s ix -> PF s r ix -> [AnyF s] (bound at T3330a.hs:19:1)
- In the third argument of ‘hmapM’, namely ‘x’
- In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’
diff --git a/testsuite/tests/indexed-types/should_fail/T3330c.stderr b/testsuite/tests/indexed-types/should_fail/T3330c.stderr
index 61881d340f..d0a8320384 100644
--- a/testsuite/tests/indexed-types/should_fail/T3330c.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3330c.stderr
@@ -6,9 +6,9 @@ T3330c.hs:23:43: error:
R :: (* -> *) -> *
Expected type: Der ((->) x) (Der f1 x)
Actual type: R f1
+ In the first argument of ‘plug’, namely ‘rf’
+ In the first argument of ‘Inl’, namely ‘(plug rf df x)’
Relevant bindings include
x :: x (bound at T3330c.hs:23:29)
df :: Der f1 x (bound at T3330c.hs:23:25)
plug' :: R f -> Der f x -> x -> f x (bound at T3330c.hs:23:1)
- In the first argument of ‘plug’, namely ‘rf’
- In the first argument of ‘Inl’, namely ‘(plug rf df x)’
diff --git a/testsuite/tests/indexed-types/should_fail/T3440.stderr b/testsuite/tests/indexed-types/should_fail/T3440.stderr
index 5deb1e8de4..cfc5570c66 100644
--- a/testsuite/tests/indexed-types/should_fail/T3440.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3440.stderr
@@ -14,9 +14,9 @@ T3440.hs:11:22:
‘a’ is a rigid type variable bound by
the type signature for: unwrap :: GADT (Fam a) -> (a, Fam a)
at T3440.hs:10:11
+ In the expression: x
+ In the expression: (x, y)
Relevant bindings include
y :: Fam a1 (bound at T3440.hs:11:16)
x :: a1 (bound at T3440.hs:11:14)
unwrap :: GADT (Fam a) -> (a, Fam a) (bound at T3440.hs:11:1)
- In the expression: x
- In the expression: (x, y)
diff --git a/testsuite/tests/indexed-types/should_fail/T4093a.stderr b/testsuite/tests/indexed-types/should_fail/T4093a.stderr
index b1810d3096..efeb34a94a 100644
--- a/testsuite/tests/indexed-types/should_fail/T4093a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4093a.stderr
@@ -9,6 +9,6 @@ T4093a.hs:8:8: error:
at T4093a.hs:7:9
Expected type: Foo e
Actual type: Maybe ()
- Relevant bindings include hang :: Foo e (bound at T4093a.hs:8:1)
In the expression: Just ()
In an equation for ‘hang’: hang = Just ()
+ Relevant bindings include hang :: Foo e (bound at T4093a.hs:8:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T4093b.stderr b/testsuite/tests/indexed-types/should_fail/T4093b.stderr
index 802757d514..53d7844f4f 100644
--- a/testsuite/tests/indexed-types/should_fail/T4093b.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4093b.stderr
@@ -16,15 +16,6 @@ T4093b.hs:31:13:
at T4093b.hs:20:12
Expected type: EitherCO e (A C O n) (A O O n)
Actual type: (MaybeC C (n C O), MaybeC O (n O C))
- Relevant bindings include
- f :: n C O
- -> EitherCO e (A C O n) (A O O n) -> EitherCO e (A C O n) (A O O n)
- (bound at T4093b.hs:31:5)
- l :: n O C
- -> EitherCO e (A C O n) (A O O n) -> EitherCO e (A C C n) (A O C n)
- (bound at T4093b.hs:34:5)
- b :: Block n e x (bound at T4093b.hs:25:17)
- blockToNodeList :: Block n e x -> A e x n (bound at T4093b.hs:25:1)
In the expression: (JustC n, NothingC)
In an equation for ‘f’: f n _ = (JustC n, NothingC)
In an equation for ‘blockToNodeList’:
@@ -39,3 +30,12 @@ T4093b.hs:31:13:
-> EitherCO e (A C O n) (A O O n) -> EitherCO e (A C O n) (A O O n)
f n _ = (JustC n, NothingC)
....
+ Relevant bindings include
+ f :: n C O
+ -> EitherCO e (A C O n) (A O O n) -> EitherCO e (A C O n) (A O O n)
+ (bound at T4093b.hs:31:5)
+ l :: n O C
+ -> EitherCO e (A C O n) (A O O n) -> EitherCO e (A C C n) (A O C n)
+ (bound at T4093b.hs:34:5)
+ b :: Block n e x (bound at T4093b.hs:25:17)
+ blockToNodeList :: Block n e x -> A e x n (bound at T4093b.hs:25:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T4099.stderr b/testsuite/tests/indexed-types/should_fail/T4099.stderr
index a16223254d..c5b4245c17 100644
--- a/testsuite/tests/indexed-types/should_fail/T4099.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4099.stderr
@@ -3,19 +3,19 @@ T4099.hs:11:30:
Couldn't match expected type ‘T a0’ with actual type ‘T b’
NB: ‘T’ is a type function, and may not be injective
The type variable ‘a0’ is ambiguous
+ In the second argument of ‘foo’, namely ‘x’
+ In the expression: foo (error "urk") x
Relevant bindings include
x :: T b (bound at T4099.hs:11:8)
a :: b (bound at T4099.hs:11:6)
bar1 :: b -> T b -> Int (bound at T4099.hs:11:1)
- In the second argument of ‘foo’, namely ‘x’
- In the expression: foo (error "urk") x
T4099.hs:14:30:
Couldn't match expected type ‘T a1’ with actual type ‘Maybe b’
The type variable ‘a1’ is ambiguous
+ In the second argument of ‘foo’, namely ‘x’
+ In the expression: foo (error "urk") x
Relevant bindings include
x :: Maybe b (bound at T4099.hs:14:8)
a :: b (bound at T4099.hs:14:6)
bar2 :: b -> Maybe b -> Int (bound at T4099.hs:14:1)
- In the second argument of ‘foo’, namely ‘x’
- In the expression: foo (error "urk") x
diff --git a/testsuite/tests/indexed-types/should_fail/T4174.stderr b/testsuite/tests/indexed-types/should_fail/T4174.stderr
index cc4a7ae5c5..872004519e 100644
--- a/testsuite/tests/indexed-types/should_fail/T4174.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4174.stderr
@@ -7,11 +7,11 @@ T4174.hs:42:12:
at T4174.hs:41:13
Expected type: m (Field (Way (GHC6'8 minor) n t p) a b)
Actual type: m (Field (WayOf m) SmStep RtsSpinLock)
+ In the expression: sync_large_objects
+ In an equation for ‘testcase’: testcase = sync_large_objects
Relevant bindings include
testcase :: m (Field (Way (GHC6'8 minor) n t p) a b)
(bound at T4174.hs:42:1)
- In the expression: sync_large_objects
- In an equation for ‘testcase’: testcase = sync_large_objects
T4174.hs:42:12:
Couldn't match type ‘b’ with ‘RtsSpinLock’
@@ -21,8 +21,8 @@ T4174.hs:42:12:
at T4174.hs:41:13
Expected type: m (Field (Way (GHC6'8 minor) n t p) a b)
Actual type: m (Field (WayOf m) SmStep RtsSpinLock)
+ In the expression: sync_large_objects
+ In an equation for ‘testcase’: testcase = sync_large_objects
Relevant bindings include
testcase :: m (Field (Way (GHC6'8 minor) n t p) a b)
(bound at T4174.hs:42:1)
- In the expression: sync_large_objects
- In an equation for ‘testcase’: testcase = sync_large_objects
diff --git a/testsuite/tests/indexed-types/should_fail/T4179.stderr b/testsuite/tests/indexed-types/should_fail/T4179.stderr
index 7069de90d8..f7f142a4bd 100644
--- a/testsuite/tests/indexed-types/should_fail/T4179.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4179.stderr
@@ -8,8 +8,8 @@ T4179.hs:26:16:
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)))
+ In the first argument of ‘foldDoC’, namely ‘op’
+ In the expression: foldDoC op
Relevant bindings include
fCon :: Con x -> A2 (FCon x) -> A3 (FCon x)
(bound at T4179.hs:26:1)
- In the first argument of ‘foldDoC’, namely ‘op’
- In the expression: foldDoC op
diff --git a/testsuite/tests/indexed-types/should_fail/T4272.stderr b/testsuite/tests/indexed-types/should_fail/T4272.stderr
index 74e36f7651..84d50dc69f 100644
--- a/testsuite/tests/indexed-types/should_fail/T4272.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4272.stderr
@@ -6,11 +6,11 @@ T4272.hs:15:26:
at T4272.hs:14:16
Expected type: TermFamily a (TermFamily a a)
Actual type: TermFamily a a
- Relevant bindings include
- t :: TermFamily a a (bound at T4272.hs:15:6)
- laws :: TermFamily a a -> b (bound at T4272.hs:15:1)
In the first argument of ‘terms’, namely
‘(undefined :: TermFamily a a)’
In the second argument of ‘prune’, namely
‘(terms (undefined :: TermFamily a a))’
In the expression: prune t (terms (undefined :: TermFamily a a))
+ Relevant bindings include
+ t :: TermFamily a a (bound at T4272.hs:15:6)
+ laws :: TermFamily a a -> b (bound at T4272.hs:15:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T5439.stderr b/testsuite/tests/indexed-types/should_fail/T5439.stderr
index a68e8c2226..c5b9c9cfc9 100644
--- a/testsuite/tests/indexed-types/should_fail/T5439.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T5439.stderr
@@ -4,6 +4,8 @@ T5439.hs:82:28:
with ‘Attempt (HHead (HDrop n0 l0)) -> Attempt (HElemOf l0)’
Expected type: f (Attempt (HNth n0 l0) -> Attempt (HElemOf l0))
Actual type: f (Attempt (WaitOpResult (WaitOps rs)))
+ In the first argument of ‘complete’, namely ‘ev’
+ In the expression: complete ev
Relevant bindings include
register :: Bool -> Peano n -> WaitOps (HDrop n rs) -> IO Bool
(bound at T5439.hs:64:9)
@@ -13,8 +15,6 @@ T5439.hs:82:28:
registerWaitOp :: WaitOps rs
-> f (Attempt (WaitOpResult (WaitOps rs))) -> IO Bool
(bound at T5439.hs:61:3)
- In the first argument of ‘complete’, namely ‘ev’
- In the expression: complete ev
T5439.hs:82:39:
Couldn't match expected type ‘Peano n0’
diff --git a/testsuite/tests/indexed-types/should_fail/T6123.stderr b/testsuite/tests/indexed-types/should_fail/T6123.stderr
index 8431c4d9fb..d97968b3aa 100644
--- a/testsuite/tests/indexed-types/should_fail/T6123.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T6123.stderr
@@ -2,6 +2,6 @@
T6123.hs:10:14: error:
Occurs check: cannot construct the infinite type: t0 ~ Id t0
The type variable ‘t0’ is ambiguous
- Relevant bindings include cundefined :: t0 (bound at T6123.hs:10:1)
In the expression: cid undefined
In an equation for ‘cundefined’: cundefined = cid undefined
+ Relevant bindings include cundefined :: t0 (bound at T6123.hs:10:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T7194.stderr b/testsuite/tests/indexed-types/should_fail/T7194.stderr
index 12df18bc81..b28868abdb 100644
--- a/testsuite/tests/indexed-types/should_fail/T7194.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7194.stderr
@@ -5,9 +5,9 @@ T7194.hs:18:35:
This (rigid, skolem) type variable is bound by
the type signature for: g :: C (F a) => a -> Int
at T7194.hs:17:23-41
+ In the expression: foo y
+ In the first argument of ‘length’, namely ‘[x, foo y]’
Relevant bindings include
y :: a (bound at T7194.hs:18:20)
g :: a -> Int (bound at T7194.hs:18:18)
x :: b0 (bound at T7194.hs:17:9)
- In the expression: foo y
- In the first argument of ‘length’, namely ‘[x, foo y]’
diff --git a/testsuite/tests/indexed-types/should_fail/T7354.stderr b/testsuite/tests/indexed-types/should_fail/T7354.stderr
index 7c505f1876..f115604b10 100644
--- a/testsuite/tests/indexed-types/should_fail/T7354.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7354.stderr
@@ -4,7 +4,7 @@ T7354.hs:28:11:
a ~ Base t (Prim [a] a)
Expected type: Prim [a] a -> Base t (Prim [a] a)
Actual type: Prim [a] a -> a
- Relevant bindings include
- foo :: Prim [a] a -> t (bound at T7354.hs:28:1)
In the first argument of ‘ana’, namely ‘alg’
In the expression: ana alg
+ Relevant bindings include
+ foo :: Prim [a] a -> t (bound at T7354.hs:28:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T7354a.stderr b/testsuite/tests/indexed-types/should_fail/T7354a.stderr
index ac7bc80cc8..ed38da6ed2 100644
--- a/testsuite/tests/indexed-types/should_fail/T7354a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7354a.stderr
@@ -1,6 +1,6 @@
T7354a.hs:5:13:
Couldn't match expected type ‘Base t t’ with actual type ‘()’
- Relevant bindings include foo :: t (bound at T7354a.hs:5:1)
In the first argument of ‘embed’, namely ‘()’
In the expression: embed ()
+ Relevant bindings include foo :: t (bound at T7354a.hs:5:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T7729.stderr b/testsuite/tests/indexed-types/should_fail/T7729.stderr
index 7be5d5764c..6686f39ca0 100644
--- a/testsuite/tests/indexed-types/should_fail/T7729.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7729.stderr
@@ -4,8 +4,8 @@ T7729.hs:36:14: error:
The type variable ‘t0’ is ambiguous
Expected type: t0 (BasePrimMonad m) a -> Rand m a
Actual type: BasePrimMonad (Rand m) a -> Rand m a
+ In the first argument of ‘(.)’, namely ‘liftPrim’
+ In the expression: liftPrim . lift
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 8bd5a24d68..ca5f29f2c7 100644
--- a/testsuite/tests/indexed-types/should_fail/T7729a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7729a.stderr
@@ -4,9 +4,9 @@ T7729a.hs:36:26:
The type variable ‘t0’ is ambiguous
Expected type: BasePrimMonad (Rand m) a
Actual type: t0 (BasePrimMonad m) a
+ In the first argument of ‘liftPrim’, namely ‘(lift x)’
+ In the expression: liftPrim (lift x)
Relevant bindings include
x :: BasePrimMonad (Rand m) a (bound at T7729a.hs:36:12)
liftPrim :: BasePrimMonad (Rand m) a -> Rand m a
(bound at T7729a.hs:36:3)
- In the first argument of ‘liftPrim’, namely ‘(lift x)’
- In the expression: liftPrim (lift x)
diff --git a/testsuite/tests/indexed-types/should_fail/T7786.stderr b/testsuite/tests/indexed-types/should_fail/T7786.stderr
index 686ccd77bc..62627d6377 100644
--- a/testsuite/tests/indexed-types/should_fail/T7786.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T7786.stderr
@@ -16,15 +16,6 @@ T7786.hs:86:49: error:
with ‘Intersect (BuriedUnder sub k 'Empty) inv’
Expected type: Sing xxx
Actual type: Sing (Intersect (BuriedUnder sub k 'Empty) inv)
- Relevant bindings include
- sub :: Database sub (bound at T7786.hs:86:13)
- k :: Sing k (bound at T7786.hs:86:11)
- db :: Database inv (bound at T7786.hs:86:8)
- addSub :: Database inv
- -> Sing k
- -> Database sub
- -> Maybe (Database (BuriedUnder sub k inv))
- (bound at T7786.hs:86:1)
In the first argument of ‘return’, namely
‘(buryUnder (dbKeys sub) k Nil `intersectPaths` dbKeys db)’
In a stmt of a 'do' block:
@@ -34,3 +25,12 @@ T7786.hs:86:49: error:
do { Nil :: Sing xxx <- return
(buryUnder (dbKeys sub) k Nil `intersectPaths` dbKeys db);
return $ Sub db k sub }
+ Relevant bindings include
+ sub :: Database sub (bound at T7786.hs:86:13)
+ k :: Sing k (bound at T7786.hs:86:11)
+ db :: Database inv (bound at T7786.hs:86:8)
+ addSub :: Database inv
+ -> Sing k
+ -> Database sub
+ -> Maybe (Database (BuriedUnder sub k inv))
+ (bound at T7786.hs:86:1)
diff --git a/testsuite/tests/indexed-types/should_fail/T8129.stdout b/testsuite/tests/indexed-types/should_fail/T8129.stdout
index 975ee8a721..bffa3dae0b 100644
--- a/testsuite/tests/indexed-types/should_fail/T8129.stdout
+++ b/testsuite/tests/indexed-types/should_fail/T8129.stdout
@@ -1 +1 @@
- Could not deduce (C x0 (F x0))
+ • Could not deduce (C x0 (F x0))
diff --git a/testsuite/tests/indexed-types/should_fail/T8227.stderr b/testsuite/tests/indexed-types/should_fail/T8227.stderr
index f09d468a75..d52f4b447d 100644
--- a/testsuite/tests/indexed-types/should_fail/T8227.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T8227.stderr
@@ -3,23 +3,23 @@ T8227.hs:16:27:
Couldn't match expected type ‘Scalar (V a)’
with actual type ‘Scalar (V (Scalar (V a)))
-> Scalar (V (Scalar (V a)))’
+ In the expression: arcLengthToParam eps eps
+ In an equation for ‘absoluteToParam’:
+ absoluteToParam eps seg = arcLengthToParam eps eps
Relevant bindings include
seg :: a (bound at T8227.hs:16:21)
eps :: Scalar (V a) (bound at T8227.hs:16:17)
absoluteToParam :: Scalar (V a) -> a -> Scalar (V a)
(bound at T8227.hs:16:1)
- In the expression: arcLengthToParam eps eps
- In an equation for ‘absoluteToParam’:
- absoluteToParam eps seg = arcLengthToParam eps eps
T8227.hs:16:44:
Couldn't match expected type ‘Scalar (V (Scalar (V a)))’
with actual type ‘Scalar (V a)’
NB: ‘Scalar’ is a type function, and may not be injective
+ In the first argument of ‘arcLengthToParam’, namely ‘eps’
+ In the expression: arcLengthToParam eps eps
Relevant bindings include
seg :: a (bound at T8227.hs:16:21)
eps :: Scalar (V a) (bound at T8227.hs:16:17)
absoluteToParam :: Scalar (V a) -> a -> Scalar (V a)
(bound at T8227.hs:16:1)
- In the first argument of ‘arcLengthToParam’, namely ‘eps’
- In the expression: arcLengthToParam eps eps
diff --git a/testsuite/tests/indexed-types/should_fail/T8518.stderr b/testsuite/tests/indexed-types/should_fail/T8518.stderr
index 313bdcfeaa..8a267d7bd0 100644
--- a/testsuite/tests/indexed-types/should_fail/T8518.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T8518.stderr
@@ -1,11 +1,6 @@
T8518.hs:14:18:
Couldn't match expected type ‘Maybe (F c)’ with actual type ‘F c’
- Relevant bindings include
- b :: B c (bound at T8518.hs:14:14)
- z :: Z c (bound at T8518.hs:14:12)
- c :: c (bound at T8518.hs:14:10)
- callCont :: c -> Z c -> B c -> Maybe (F c) (bound at T8518.hs:14:1)
In the expression: rpt (4 :: Int) c z b
In an equation for ‘callCont’:
callCont c z b
@@ -13,16 +8,21 @@ T8518.hs:14:18:
where
rpt 0 c' z' b' = fromJust (fst <$> (continue c' z' b'))
rpt i c' z' b' = let ... in rpt (i - 1) c''
+ Relevant bindings include
+ b :: B c (bound at T8518.hs:14:14)
+ z :: Z c (bound at T8518.hs:14:12)
+ c :: c (bound at T8518.hs:14:10)
+ callCont :: c -> Z c -> B c -> Maybe (F c) (bound at T8518.hs:14:1)
T8518.hs:17:78:
Couldn't match expected type ‘F a1’
with actual type ‘Z a1 -> B a1 -> F a1’
+ In the expression: rpt (i - 1) c''
+ In the expression:
+ let c'' = fromJust (snd <$> (continue c' z' b')) in rpt (i - 1) c''
Relevant bindings include
c'' :: a1 (bound at T8518.hs:17:30)
b' :: B a1 (bound at T8518.hs:17:21)
z' :: Z a1 (bound at T8518.hs:17:18)
c' :: a1 (bound at T8518.hs:17:15)
rpt :: a -> a1 -> Z a1 -> B a1 -> F a1 (bound at T8518.hs:16:9)
- In the expression: rpt (i - 1) c''
- In the expression:
- let c'' = fromJust (snd <$> (continue c' z' b')) in rpt (i - 1) c''
diff --git a/testsuite/tests/indexed-types/should_fail/T9662.stderr b/testsuite/tests/indexed-types/should_fail/T9662.stderr
index 596c16c724..3c800183a1 100644
--- a/testsuite/tests/indexed-types/should_fail/T9662.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T9662.stderr
@@ -15,10 +15,6 @@ T9662.hs:49:7: error:
-> 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 second argument of ‘backpermute’, namely ‘id’
In the expression:
backpermute
@@ -26,6 +22,10 @@ T9662.hs:49:7: error:
(atom :. atom :. atom :. atom)
(\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))
id
+ Relevant bindings include
+ test :: Shape (((sh :. k) :. m) :. n)
+ -> Shape (((sh :. m) :. n) :. k)
+ (bound at T9662.hs:45:1)
T9662.hs:49:7: error:
Couldn't match type ‘m’ with ‘k’
@@ -43,10 +43,6 @@ T9662.hs:49:7: error:
-> 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 second argument of ‘backpermute’, namely ‘id’
In the expression:
backpermute
@@ -54,6 +50,10 @@ T9662.hs:49:7: error:
(atom :. atom :. atom :. atom)
(\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))
id
+ Relevant bindings include
+ test :: Shape (((sh :. k) :. m) :. n)
+ -> Shape (((sh :. m) :. n) :. k)
+ (bound at T9662.hs:45:1)
T9662.hs:49:7: error:
Couldn't match type ‘n’ with ‘m’
@@ -71,10 +71,6 @@ T9662.hs:49:7: error:
-> 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 second argument of ‘backpermute’, namely ‘id’
In the expression:
backpermute
@@ -82,3 +78,7 @@ T9662.hs:49:7: error:
(atom :. atom :. atom :. atom)
(\ (sh :. k :. m :. n) -> (sh :. m :. n :. k)))
id
+ Relevant bindings include
+ test :: Shape (((sh :. k) :. m) :. n)
+ -> Shape (((sh :. m) :. n) :. k)
+ (bound at T9662.hs:45:1)