[commit: ghc] master: Improve kind-application-error message (8eead4d)
git at git.haskell.org
git at git.haskell.org
Tue Aug 29 08:37:50 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/8eead4de7c820e602193d6d16acd00faeffa035c/ghc
>---------------------------------------------------------------
commit 8eead4de7c820e602193d6d16acd00faeffa035c
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Mon Aug 28 17:23:35 2017 +0100
Improve kind-application-error message
>---------------------------------------------------------------
8eead4de7c820e602193d6d16acd00faeffa035c
compiler/coreSyn/CoreLint.hs | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/compiler/coreSyn/CoreLint.hs b/compiler/coreSyn/CoreLint.hs
index e85cfe8..7878e62 100644
--- a/compiler/coreSyn/CoreLint.hs
+++ b/compiler/coreSyn/CoreLint.hs
@@ -1391,23 +1391,28 @@ lint_app doc kfn kas
-- Note [The substitution invariant] in TyCoRep
; foldlM (go_app in_scope) kfn kas }
where
- fail_msg = vcat [ hang (text "Kind application error in") 2 doc
- , nest 2 (text "Function kind =" <+> ppr kfn)
- , nest 2 (text "Arg kinds =" <+> ppr kas) ]
+ fail_msg extra = vcat [ hang (text "Kind application error in") 2 doc
+ , nest 2 (text "Function kind =" <+> ppr kfn)
+ , nest 2 (text "Arg kinds =" <+> ppr kas)
+ , extra ]
- go_app in_scope kfn ka
+ go_app in_scope kfn tka
| Just kfn' <- coreView kfn
- = go_app in_scope kfn' ka
+ = go_app in_scope kfn' tka
- go_app _ (FunTy kfa kfb) (_,ka)
- = do { unless (ka `eqType` kfa) (addErrL fail_msg)
+ go_app _ (FunTy kfa kfb) tka@(_,ka)
+ = do { unless (ka `eqType` kfa) $
+ addErrL (fail_msg (text "Fun:" <+> (ppr kfa $$ ppr tka)))
; return kfb }
- go_app in_scope (ForAllTy (TvBndr kv _vis) kfn) (ta,ka)
- = do { unless (ka `eqType` tyVarKind kv) (addErrL fail_msg)
+ go_app in_scope (ForAllTy (TvBndr kv _vis) kfn) tka@(ta,ka)
+ = do { let kv_kind = tyVarKind kv
+ ; unless (ka `eqType` kv_kind) $
+ addErrL (fail_msg (text "Forall:" <+> (ppr kv $$ ppr kv_kind $$ ppr tka)))
; return (substTyWithInScope in_scope [kv] [ta] kfn) }
- go_app _ _ _ = failWithL fail_msg
+ go_app _ kfn ka
+ = failWithL (fail_msg (text "Not a fun:" <+> (ppr kfn $$ ppr ka)))
{- *********************************************************************
* *
More information about the ghc-commits
mailing list