diff options
author | Edward Z. Yang <ezyang@cs.stanford.edu> | 2017-02-07 15:02:40 -0800 |
---|---|---|
committer | Edward Z. Yang <ezyang@cs.stanford.edu> | 2017-02-12 19:14:52 -0800 |
commit | 8e9ad240a9345527fc0635b89cc39b4d73b08e03 (patch) | |
tree | 0b59844d22acec6cc17ae2cd1a462dfc0c4071c6 | |
parent | a4ccd330273ccfd136481ee82ae9495f5dd5f146 (diff) | |
download | haskell-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
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] |