summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Z. Yang <ezyang@cs.stanford.edu>2017-02-07 15:02:40 -0800
committerEdward Z. Yang <ezyang@cs.stanford.edu>2017-02-12 19:14:52 -0800
commit8e9ad240a9345527fc0635b89cc39b4d73b08e03 (patch)
tree0b59844d22acec6cc17ae2cd1a462dfc0c4071c6
parenta4ccd330273ccfd136481ee82ae9495f5dd5f146 (diff)
downloadhaskell-8e9ad240a9345527fc0635b89cc39b4d73b08e03.tar.gz
Setup more error context for Backpack operations.
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> Test Plan: validate Reviewers: bgamari, simonpj, austin Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3101
-rw-r--r--compiler/main/ErrUtils.hs1
-rw-r--r--compiler/typecheck/TcBackpack.hs28
-rw-r--r--compiler/utils/Outputable.hs11
-rw-r--r--testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stderr13
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail01.stderr6
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail03.stderr5
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail04.stderr18
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail05.stderr3
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail06.stderr11
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail10.stderr22
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail11.stderr9
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail16.stderr3
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail17.stderr13
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail19.stderr5
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail20.stderr6
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail21.stderr8
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail22.stderr9
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail23.stderr15
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail25.stderr9
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail26.stderr13
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail27.stderr11
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail29.stderr10
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail32.stderr3
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail33.stderr5
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail35.stderr3
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail37.stderr9
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail38.stderr12
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail42.stderr15
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail43.stderr13
29 files changed, 181 insertions, 108 deletions
diff --git a/compiler/main/ErrUtils.hs b/compiler/main/ErrUtils.hs
index 94ea96e59a..d73628a87e 100644
--- a/compiler/main/ErrUtils.hs
+++ b/compiler/main/ErrUtils.hs
@@ -364,7 +364,6 @@ formatErrDoc dflags (ErrDoc important context supplementary)
msgs = filter (not . null) $ map (filter (not . Outputable.isEmpty dflags))
[important, context, supplementary]
starred = (bullet<+>) . vcat
- bullet = text $ if DynFlags.useUnicode dflags then "•" else "*"
pprErrMsgBagWithLoc :: Bag ErrMsg -> [SDoc]
pprErrMsgBagWithLoc bag = [ pprLocErrMsg item | item <- sortMsgBag Nothing bag ]
diff --git a/compiler/typecheck/TcBackpack.hs b/compiler/typecheck/TcBackpack.hs
index fef586f69c..72cd89be49 100644
--- a/compiler/typecheck/TcBackpack.hs
+++ b/compiler/typecheck/TcBackpack.hs
@@ -316,10 +316,7 @@ checkUnitId uid = do
-- (because we FORCE things to be merged in), so don't check them
when (not (isHoleModule mod)) $ do
checkUnitId (moduleUnitId mod)
- _ <- addErrCtxt (text "while checking that" <+> ppr mod
- <+> text "implements signature" <+> ppr mod_name <+> text "in"
- <+> ppr uid) $
- mod `checkImplements` IndefModule indef mod_name
+ _ <- mod `checkImplements` IndefModule indef mod_name
return ()
_ -> return () -- if it's hashed, must be well-typed
@@ -472,6 +469,15 @@ inheritedSigPvpWarning =
-- logically "implicit" entities are defined indirectly in an interface
-- file. #13151 gives a proposal to make these *truly* implicit.
+merge_msg :: ModuleName -> [IndefModule] -> SDoc
+merge_msg mod_name [] =
+ text "while checking the local signature" <+> ppr mod_name <+>
+ text "for consistency"
+merge_msg mod_name reqs =
+ hang (text "while merging the signatures from" <> colon)
+ 2 (vcat [ bullet <+> ppr req | req <- reqs ] $$
+ bullet <+> text "...and the local signature for" <+> ppr mod_name)
+
-- | Given a local 'ModIface', merge all inherited requirements
-- from 'requirementMerges' into this signature, producing
-- a final 'TcGblEnv' that matches the local signature and
@@ -487,10 +493,13 @@ mergeSignatures hsmod lcl_iface0 = do
let outer_mod = tcg_mod tcg_env
inner_mod = tcg_semantic_mod tcg_env
mb_exports = hsmodExports (unLoc (hpm_module hsmod))
+ mod_name = moduleName (tcg_mod tcg_env)
-- STEP 1: Figure out all of the external signature interfaces
-- we are going to merge in.
- let reqs = requirementMerges dflags (moduleName (tcg_mod tcg_env))
+ let reqs = requirementMerges dflags mod_name
+
+ addErrCtxt (merge_msg mod_name reqs) $ do
-- STEP 2: Read in the RAW forms of all of these interfaces
ireq_ifaces0 <- forM reqs $ \(IndefModule iuid mod_name) ->
@@ -746,11 +755,18 @@ tcRnInstantiateSignature hsc_env this_mod real_loc =
exportOccs :: [AvailInfo] -> [OccName]
exportOccs = concatMap (map occName . availNames)
+impl_msg :: Module -> IndefModule -> SDoc
+impl_msg impl_mod (IndefModule req_uid req_mod_name) =
+ text "while checking that" <+> ppr impl_mod <+>
+ text "implements signature" <+> ppr req_mod_name <+>
+ text "in" <+> ppr req_uid
+
-- | Check if module implements a signature. (The signature is
-- always un-hashed, which is why its components are specified
-- explicitly.)
checkImplements :: Module -> IndefModule -> TcRn TcGblEnv
-checkImplements impl_mod (IndefModule uid mod_name) = do
+checkImplements impl_mod req_mod@(IndefModule uid mod_name) =
+ addErrCtxt (impl_msg impl_mod req_mod) $ do
let insts = indefUnitIdInsts uid
-- STEP 1: Load the implementing interface, and make a RdrEnv
diff --git a/compiler/utils/Outputable.hs b/compiler/utils/Outputable.hs
index 43979ffdfc..d78411a893 100644
--- a/compiler/utils/Outputable.hs
+++ b/compiler/utils/Outputable.hs
@@ -29,7 +29,7 @@ module Outputable (
semi, comma, colon, dcolon, space, equals, dot, vbar,
arrow, larrow, darrow, arrowt, larrowt, arrowtt, larrowtt,
lparen, rparen, lbrack, rbrack, lbrace, rbrace, underscore,
- blankLine, forAllLit, kindStar,
+ blankLine, forAllLit, kindStar, bullet,
(<>), (<+>), hcat, hsep,
($$), ($+$), vcat,
sep, cat,
@@ -635,12 +635,21 @@ forAllLit = unicodeSyntax (char '∀') (text "forall")
kindStar :: SDoc
kindStar = unicodeSyntax (char '★') (char '*')
+bullet :: SDoc
+bullet = unicode (char '•') (char '*')
+
unicodeSyntax :: SDoc -> SDoc -> SDoc
unicodeSyntax unicode plain = sdocWithDynFlags $ \dflags ->
if useUnicode dflags && useUnicodeSyntax dflags
then unicode
else plain
+unicode :: SDoc -> SDoc -> SDoc
+unicode unicode plain = sdocWithDynFlags $ \dflags ->
+ if useUnicode dflags
+ then unicode
+ else plain
+
nest :: Int -> SDoc -> SDoc
-- ^ Indent 'SDoc' some specified amount
(<>) :: SDoc -> SDoc -> SDoc
diff --git a/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stderr b/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stderr
index 087365659c..c1aa54d95e 100644
--- a/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stderr
+++ b/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stderr
@@ -1,7 +1,10 @@
q/H.hsig:2:1: error:
- Identifier ‘x’ has conflicting definitions in the module
- and its hsig file
- Main module: x :: ghc-prim-0.5.0.0:GHC.Types.Int
- Hsig file: x :: ghc-prim-0.5.0.0:GHC.Types.Bool
- The two types are different
+ • Identifier ‘x’ has conflicting definitions in the module
+ and its hsig file
+ Main module: x :: ghc-prim-0.5.0.0:GHC.Types.Int
+ Hsig file: x :: ghc-prim-0.5.0.0:GHC.Types.Bool
+ The two types are different
+ • while merging the signatures from:
+ • z-bkpcabal01-z-p-0.1.0.0[H=<H>]:H
+ • ...and the local signature for H
diff --git a/testsuite/tests/backpack/should_fail/bkpfail01.stderr b/testsuite/tests/backpack/should_fail/bkpfail01.stderr
index ae27f1988b..3231922772 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail01.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail01.stderr
@@ -11,7 +11,9 @@
[1 of 2] Compiling H[sig] ( p/H.hsig, nothing )
bkpfail01.out/p/p-D5Mg3foBSCrDbQDKH4WGSG/../H.hi:1:1: error:
- ‘H’ is exported by the hsig file, but not exported the module ‘q:H’
+ • ‘H’ is exported by the hsig file, but not exported the module ‘q:H’
+ • while checking that q:H implements signature H in p[H=q:H]
bkpfail01.out/p/p-D5Mg3foBSCrDbQDKH4WGSG/../H.hi:1:1: error:
- ‘H’ is exported by the hsig file, but not exported the module ‘q:H’
+ • ‘H’ is exported by the hsig file, but not exported the module ‘q:H’
+ • while checking that q:H implements signature H in p[H=q:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail03.stderr b/testsuite/tests/backpack/should_fail/bkpfail03.stderr
index 0b66c2da36..9383a2aca1 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail03.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail03.stderr
@@ -12,5 +12,6 @@
[2 of 2] Compiling M2[sig] ( q/M2.hsig, nothing )
bkpfail03.bkp:3:9: error:
- The hsig file (re)exports ‘M1.M’
- but the implementing module exports a different identifier ‘M2.M’
+ • The hsig file (re)exports ‘M1.M’
+ but the implementing module exports a different identifier ‘M2.M’
+ • while checking that m2:M2 implements signature M2 in q[M2=m2:M2]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail04.stderr b/testsuite/tests/backpack/should_fail/bkpfail04.stderr
index 48287cd650..f445c57f8e 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail04.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail04.stderr
@@ -6,10 +6,14 @@
[1 of 2] Compiling A[sig] ( r/A.hsig, nothing )
bkpfail04.bkp:7:9: error:
- Type constructor ‘A’ has conflicting definitions in the module
- and its hsig file
- Main module: data A = A {foo :: GHC.Types.Int}
- Hsig file: data A = A {bar :: GHC.Types.Bool}
- The constructors do not match:
- The record label lists for ‘A’ differ
- The types for ‘A’ differ
+ • Type constructor ‘A’ has conflicting definitions in the module
+ and its hsig file
+ Main module: data A = A {foo :: GHC.Types.Int}
+ Hsig file: data A = A {bar :: GHC.Types.Bool}
+ The constructors do not match:
+ The record label lists for ‘A’ differ
+ The types for ‘A’ differ
+ • while merging the signatures from:
+ • p[A=<A>]:A
+ • q[A=<A>]:A
+ • ...and the local signature for A
diff --git a/testsuite/tests/backpack/should_fail/bkpfail05.stderr b/testsuite/tests/backpack/should_fail/bkpfail05.stderr
index 25428e49f9..cb83305b58 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail05.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail05.stderr
@@ -18,4 +18,5 @@
[1 of 1] Compiling H[sig] ( h/H.hsig, bkpfail05.out/h/h-5FYQgnNkfSvBT5yogOxPpf/H.o )
bkpfail05.out/h/h-5FYQgnNkfSvBT5yogOxPpf/../H.hi:1:1: error:
- ‘T1’ is exported by the hsig file, but not exported the module ‘h-impl:H’
+ • ‘T1’ is exported by the hsig file, but not exported the module ‘h-impl:H’
+ • while checking that h-impl:H implements signature H in h[H=h-impl:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail06.stderr b/testsuite/tests/backpack/should_fail/bkpfail06.stderr
index c050944284..27e0ddf006 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail06.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail06.stderr
@@ -12,8 +12,9 @@
[1 of 2] Compiling H[sig] ( p/H.hsig, bkpfail06.out/p/p-IueY0RdHDM2I4k0mLZuqM0/H.o )
bkpfail06.bkp:10:9: error:
- Type constructor ‘T’ has conflicting definitions in the module
- and its hsig file
- Main module: data T = T GHC.Types.Bool
- Hsig file: data T = T GHC.Types.Int
- The constructors do not match: The types for ‘T’ differ
+ • Type constructor ‘T’ has conflicting definitions in the module
+ and its hsig file
+ Main module: data T = T GHC.Types.Bool
+ Hsig file: data T = T GHC.Types.Int
+ The constructors do not match: The types for ‘T’ differ
+ • while checking that qimpl:H implements signature H in p[H=qimpl:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail10.stderr b/testsuite/tests/backpack/should_fail/bkpfail10.stderr
index 27cbcdc889..bb31da49c4 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail10.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail10.stderr
@@ -10,15 +10,17 @@
[1 of 1] Compiling H[sig] ( p/H.hsig, bkpfail10.out/p/p-D5Mg3foBSCrDbQDKH4WGSG/H.o )
bkpfail10.bkp:8:9: error:
- Type constructor ‘H’ has conflicting definitions in the module
- and its hsig file
- Main module: data H a = H a
- Hsig file: skolem H
- The types have different kinds
+ • Type constructor ‘H’ has conflicting definitions in the module
+ and its hsig file
+ Main module: data H a = H a
+ Hsig file: skolem H
+ The types have different kinds
+ • while checking that q:H implements signature H in p[H=q:H]
bkpfail10.bkp:10:9: error:
- Identifier ‘f’ has conflicting definitions in the module
- and its hsig file
- Main module: f :: H a -> H a
- Hsig file: f :: H -> H
- The two types are different
+ • Identifier ‘f’ has conflicting definitions in the module
+ and its hsig file
+ Main module: f :: H a -> H a
+ Hsig file: f :: H -> H
+ The two types are different
+ • while checking that q:H implements signature H in p[H=q:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail11.stderr b/testsuite/tests/backpack/should_fail/bkpfail11.stderr
index c91d15f4e3..52938c0154 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail11.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail11.stderr
@@ -11,7 +11,8 @@
[1 of 2] Compiling A[sig] ( sig/A.hsig, bkpfail11.out/sig/sig-HyoWTHt34SDIRGEX0vZ8iN/A.o )
bkpfail11.out/sig/sig-HyoWTHt34SDIRGEX0vZ8iN/../A.hi:1:1: error:
- No instance for (GHC.Show.Show X)
- arising when attempting to show that
- instance [safe] GHC.Show.Show T -- Defined at bkpfail11.bkp:5:18
- is provided by ‘mod:A’
+ • No instance for (GHC.Show.Show X)
+ arising when attempting to show that
+ instance [safe] GHC.Show.Show T -- Defined at bkpfail11.bkp:5:18
+ is provided by ‘mod:A’
+ • while checking that mod:A implements signature A in sig[A=mod:A]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail16.stderr b/testsuite/tests/backpack/should_fail/bkpfail16.stderr
index 049cb382cd..3b38ea85b5 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail16.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail16.stderr
@@ -7,4 +7,5 @@
[1 of 1] Compiling ShouldFail[sig] ( p/ShouldFail.hsig, bkpfail16.out/p/p-1OqLaT7dAn947wScQQKCw5/ShouldFail.o )
bkpfail16.out/p/p-1OqLaT7dAn947wScQQKCw5/../ShouldFail.hi:1:1: error:
- ‘Booly’ is exported by the hsig file, but not exported the module ‘Data.Bool’
+ • ‘Booly’ is exported by the hsig file, but not exported the module ‘Data.Bool’
+ • while checking that Data.Bool implements signature ShouldFail in p[ShouldFail=Data.Bool]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail17.stderr b/testsuite/tests/backpack/should_fail/bkpfail17.stderr
index 2b67e72de3..6d74b69652 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail17.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail17.stderr
@@ -7,9 +7,10 @@
[1 of 1] Compiling ShouldFail[sig] ( p/ShouldFail.hsig, bkpfail17.out/p/p-2W6J7O3LvroH97zGxbPEGF/ShouldFail.o )
<no location info>: error:
- Type constructor ‘Either’ has conflicting definitions in the module
- and its hsig file
- Main module: data Either a b = Left a | Right b
- Hsig file: type role Either representational phantom phantom
- data Either a b c = Left a
- The types have different kinds
+ • Type constructor ‘Either’ has conflicting definitions in the module
+ and its hsig file
+ Main module: data Either a b = Left a | Right b
+ Hsig file: type role Either representational phantom phantom
+ data Either a b c = Left a
+ The types have different kinds
+ • while checking that Prelude implements signature ShouldFail in p[ShouldFail=Prelude]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail19.stderr b/testsuite/tests/backpack/should_fail/bkpfail19.stderr
index 0f6cbfaf92..aaf5b8ce27 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail19.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail19.stderr
@@ -7,5 +7,6 @@
[1 of 1] Compiling ShouldFail[sig] ( p/ShouldFail.hsig, bkpfail19.out/p/p-CfyUIAu1JTRCDuXEyGszXN/ShouldFail.o )
<no location info>: error:
- The hsig file (re)exports ‘Data.STRef.Lazy.newSTRef’
- but the implementing module exports a different identifier ‘GHC.STRef.newSTRef’
+ • The hsig file (re)exports ‘Data.STRef.Lazy.newSTRef’
+ but the implementing module exports a different identifier ‘GHC.STRef.newSTRef’
+ • while checking that Data.STRef implements signature ShouldFail in p[ShouldFail=Data.STRef]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail20.stderr b/testsuite/tests/backpack/should_fail/bkpfail20.stderr
index df010b9018..4e95695a15 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail20.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail20.stderr
@@ -6,4 +6,8 @@
[1 of 1] Compiling B[sig] ( r/B.hsig, nothing )
bkpfail20.bkp:1:1: error:
- While merging export lists, could not unify Data.STRef.Lazy.newSTRef with GHC.STRef.newSTRef
+ • While merging export lists, could not unify Data.STRef.Lazy.newSTRef with GHC.STRef.newSTRef
+ • while merging the signatures from:
+ • p[A=<B>]:A
+ • q[A=<B>]:A
+ • ...and the local signature for B
diff --git a/testsuite/tests/backpack/should_fail/bkpfail21.stderr b/testsuite/tests/backpack/should_fail/bkpfail21.stderr
index 258bf71e96..693135bd45 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail21.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail21.stderr
@@ -10,5 +10,9 @@
[3 of 3] Compiling H3[sig] ( r/H3.hsig, nothing )
bkpfail21.bkp:1:1: error:
- While merging export lists, could not unify {H1.T} with {H2.T}
- Neither name variable originates from the current signature.
+ • While merging export lists, could not unify {H1.T} with {H2.T}
+ Neither name variable originates from the current signature.
+ • while merging the signatures from:
+ • p[A=<H1>,C=<H3>]:C
+ • q[B=<H2>,C=<H3>]:C
+ • ...and the local signature for H3
diff --git a/testsuite/tests/backpack/should_fail/bkpfail22.stderr b/testsuite/tests/backpack/should_fail/bkpfail22.stderr
index 66db5b6a7c..fe066bd039 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail22.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail22.stderr
@@ -14,7 +14,8 @@
[1 of 2] Compiling H2[sig] ( q/H2.hsig, bkpfail22.out/q/q-FjwGsuDQ5qiKUCvnEATUA9/H2.o )
bkpfail22.bkp:16:9: error:
- Type constructor ‘S’ has conflicting definitions in the module
- and its hsig file
- Main module: type S = ()
- Hsig file: type S = GHC.Types.Bool
+ • Type constructor ‘S’ has conflicting definitions in the module
+ and its hsig file
+ Main module: type S = ()
+ Hsig file: type S = GHC.Types.Bool
+ • while checking that badimpl:H2 implements signature H2 in q[H2=badimpl:H2]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail23.stderr b/testsuite/tests/backpack/should_fail/bkpfail23.stderr
index 6681e24472..54dddc01d1 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail23.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail23.stderr
@@ -11,10 +11,11 @@
[1 of 2] Compiling H[sig] ( p/H.hsig, bkpfail23.out/p/p-6KeuBvYi0jvLWqVbkSAZMq/H.o )
bkpfail23.bkp:14:9: error:
- Type constructor ‘F’ has conflicting definitions in the module
- and its hsig file
- Main module: type F a = ()
- Hsig file: type role F phantom
- skolem F a
- Illegal parameterized type synonym in implementation of abstract data.
- (Try eta reducing your type synonym so that it is nullary.)
+ • Type constructor ‘F’ has conflicting definitions in the module
+ and its hsig file
+ Main module: type F a = ()
+ Hsig file: type role F phantom
+ skolem F a
+ Illegal parameterized type synonym in implementation of abstract data.
+ (Try eta reducing your type synonym so that it is nullary.)
+ • while checking that h:H implements signature H in p[H=h:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail25.stderr b/testsuite/tests/backpack/should_fail/bkpfail25.stderr
index 56b1c90ff0..f01231db8e 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail25.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail25.stderr
@@ -16,7 +16,8 @@ bkpfail25.bkp:7:18: warning: [-Wmissing-methods (in -Wdefault)]
[1 of 2] Compiling H[sig] ( p/H.hsig, bkpfail25.out/p/p-D5Mg3foBSCrDbQDKH4WGSG/H.o )
bkpfail25.bkp:12:9: error:
- Type constructor ‘T’ has conflicting definitions in the module
- and its hsig file
- Main module: type T a = a
- Hsig file: skolem T a
+ • Type constructor ‘T’ has conflicting definitions in the module
+ and its hsig file
+ Main module: type T a = a
+ Hsig file: skolem T a
+ • while checking that q:H implements signature H in p[H=q:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail26.stderr b/testsuite/tests/backpack/should_fail/bkpfail26.stderr
index d3fd320245..583629f212 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail26.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail26.stderr
@@ -11,9 +11,10 @@
[1 of 2] Compiling H[sig] ( p/H.hsig, bkpfail26.out/p/p-D5Mg3foBSCrDbQDKH4WGSG/H.o )
bkpfail26.bkp:15:9: error:
- Type constructor ‘T’ has conflicting definitions in the module
- and its hsig file
- Main module: type T a = [a]
- Hsig file: skolem T a
- Illegal parameterized type synonym in implementation of abstract data.
- (Try eta reducing your type synonym so that it is nullary.)
+ • Type constructor ‘T’ has conflicting definitions in the module
+ and its hsig file
+ Main module: type T a = [a]
+ Hsig file: skolem T a
+ Illegal parameterized type synonym in implementation of abstract data.
+ (Try eta reducing your type synonym so that it is nullary.)
+ • while checking that q:H implements signature H in p[H=q:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail27.stderr b/testsuite/tests/backpack/should_fail/bkpfail27.stderr
index 784ddbd7cd..5f33d0473a 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail27.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail27.stderr
@@ -11,8 +11,9 @@
[1 of 2] Compiling H[sig] ( p/H.hsig, bkpfail27.out/p/p-D5Mg3foBSCrDbQDKH4WGSG/H.o )
bkpfail27.bkp:15:9: error:
- Type constructor ‘T’ has conflicting definitions in the module
- and its hsig file
- Main module: type T = F
- Hsig file: skolem T
- Illegal type family application in implementation of abstract data.
+ • Type constructor ‘T’ has conflicting definitions in the module
+ and its hsig file
+ Main module: type T = F
+ Hsig file: skolem T
+ Illegal type family application in implementation of abstract data.
+ • while checking that q:H implements signature H in p[H=q:H]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail29.stderr b/testsuite/tests/backpack/should_fail/bkpfail29.stderr
index 768365aba7..dde8978471 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail29.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail29.stderr
@@ -6,6 +6,10 @@
[1 of 2] Compiling A[sig] ( r/A.hsig, nothing )
bkpfail29.bkp:8:9: error:
- Cycle in type synonym declarations:
- bkpfail29.bkp:8:9-18: S from external module
- bkpfail29.bkp:7:9-14: T from external module
+ • Cycle in type synonym declarations:
+ bkpfail29.bkp:8:9-18: S from external module
+ bkpfail29.bkp:7:9-14: T from external module
+ • while merging the signatures from:
+ • p[A=<A>]:A
+ • q[A=<A>]:A
+ • ...and the local signature for A
diff --git a/testsuite/tests/backpack/should_fail/bkpfail32.stderr b/testsuite/tests/backpack/should_fail/bkpfail32.stderr
index a33ea5bd42..592199cecd 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail32.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail32.stderr
@@ -2,4 +2,5 @@
[1 of 1] Compiling A[sig] ( p/A.hsig, nothing )
bkpfail32.bkp:2:18: error:
- Not in scope: type constructor or class ‘T’
+ • Not in scope: type constructor or class ‘T’
+ • while checking the local signature A for consistency
diff --git a/testsuite/tests/backpack/should_fail/bkpfail33.stderr b/testsuite/tests/backpack/should_fail/bkpfail33.stderr
index fd268adb09..4da8897b68 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail33.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail33.stderr
@@ -4,4 +4,7 @@
[1 of 1] Compiling A[sig] ( q/A.hsig, nothing )
bkpfail33.bkp:5:18: error:
- Not in scope: type constructor or class ‘T’
+ • Not in scope: type constructor or class ‘T’
+ • while merging the signatures from:
+ • p[A=<A>]:A
+ • ...and the local signature for A
diff --git a/testsuite/tests/backpack/should_fail/bkpfail35.stderr b/testsuite/tests/backpack/should_fail/bkpfail35.stderr
index e37148862e..ceafe14720 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail35.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail35.stderr
@@ -17,4 +17,5 @@ bkpfail35.bkp:8:18: warning:
[1 of 1] Compiling A[sig] ( q/A.hsig, bkpfail35.out/q/q-E72T6bb4XRkIeTPWK2mCKa/A.o )
bkpfail35.out/q/q-E72T6bb4XRkIeTPWK2mCKa/../A.hi:1:1: error:
- ‘y’ is exported by the hsig file, but not exported the module ‘aimpl:A’
+ • ‘y’ is exported by the hsig file, but not exported the module ‘aimpl:A’
+ • while checking that aimpl:A implements signature A in q[A=aimpl:A]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail37.stderr b/testsuite/tests/backpack/should_fail/bkpfail37.stderr
index 4edcd6dd61..a10c05fbeb 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail37.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail37.stderr
@@ -10,7 +10,8 @@
[1 of 1] Compiling A[sig] ( p/A.hsig, bkpfail37.out/p/p-HVmFlcYSefiK5n1aDP1v7x/A.o )
bkpfail37.bkp:9:9: error:
- Identifier ‘op’ has conflicting fixities in the module
- and its hsig file
- Main module: infixr 4
- Hsig file: infixr 6
+ • Identifier ‘op’ has conflicting fixities in the module
+ and its hsig file
+ Main module: infixr 4
+ Hsig file: infixr 6
+ • while checking that q:A implements signature A in p[A=q:A]
diff --git a/testsuite/tests/backpack/should_fail/bkpfail38.stderr b/testsuite/tests/backpack/should_fail/bkpfail38.stderr
index 7a8888cc47..df4a1d0483 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail38.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail38.stderr
@@ -6,7 +6,11 @@
[1 of 1] Compiling A[sig] ( r/A.hsig, nothing )
bkpfail38.bkp:8:9: error:
- Identifier ‘op’ has conflicting fixities in the module
- and its hsig file
- Main module: infixr 4
- Hsig file: infixr 6
+ • Identifier ‘op’ has conflicting fixities in the module
+ and its hsig file
+ Main module: infixr 4
+ Hsig file: infixr 6
+ • while merging the signatures from:
+ • p[A=<A>]:A
+ • q[A=<A>]:A
+ • ...and the local signature for A
diff --git a/testsuite/tests/backpack/should_fail/bkpfail42.stderr b/testsuite/tests/backpack/should_fail/bkpfail42.stderr
index 734832ff4b..30b43d829e 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail42.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail42.stderr
@@ -4,9 +4,12 @@
[1 of 1] Compiling A[sig] ( q/A.hsig, nothing )
bkpfail42.bkp:9:9: error:
- Type constructor ‘F’ has conflicting definitions in the module
- and its hsig file
- Main module: type family F a :: *
- where [a] F a = GHC.Types.Int
- Hsig file: type family F a :: *
- where [a] F a = GHC.Types.Bool
+ • Type constructor ‘F’ has conflicting definitions in the module
+ and its hsig file
+ Main module: type family F a :: *
+ where [a] F a = GHC.Types.Int
+ Hsig file: type family F a :: *
+ where [a] F a = GHC.Types.Bool
+ • while merging the signatures from:
+ • p[A=<A>]:A
+ • ...and the local signature for A
diff --git a/testsuite/tests/backpack/should_fail/bkpfail43.stderr b/testsuite/tests/backpack/should_fail/bkpfail43.stderr
index 91c010d2f7..1ba1164213 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail43.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail43.stderr
@@ -11,9 +11,10 @@
[1 of 2] Compiling A[sig] ( p/A.hsig, bkpfail43.out/p/p-HVmFlcYSefiK5n1aDP1v7x/A.o )
bkpfail43.out/p/p-HVmFlcYSefiK5n1aDP1v7x/../A.hi:1:1: error:
- No instance for (GHC.Show.Show (a -> b))
- arising when attempting to show that
- instance [safe] GHC.Show.Show (a -> b)
- -- Defined at bkpfail43.bkp:3:18
- is provided by ‘q:A’
- (maybe you haven't applied a function to enough arguments?)
+ • No instance for (GHC.Show.Show (a -> b))
+ arising when attempting to show that
+ instance [safe] GHC.Show.Show (a -> b)
+ -- Defined at bkpfail43.bkp:3:18
+ is provided by ‘q:A’
+ (maybe you haven't applied a function to enough arguments?)
+ • while checking that q:A implements signature A in p[A=q:A]