[commit: ghc] master: Fail nicely when encountering an invalid bang annotation (#7210) (62da65a)
Paolo Capriotti
p.capriotti at gmail.com
Thu Sep 6 16:42:49 CEST 2012
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/62da65a6ba728603b0ee4dab31cd9d59123f3135
>---------------------------------------------------------------
commit 62da65a6ba728603b0ee4dab31cd9d59123f3135
Author: Patrick Palka <patrick at parcs.ath.cx>
Date: Mon Sep 3 10:27:26 2012 -0400
Fail nicely when encountering an invalid bang annotation (#7210)
>---------------------------------------------------------------
compiler/typecheck/TcHsType.lhs | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/compiler/typecheck/TcHsType.lhs b/compiler/typecheck/TcHsType.lhs
index d0e89bb..1f61e37 100644
--- a/compiler/typecheck/TcHsType.lhs
+++ b/compiler/typecheck/TcHsType.lhs
@@ -321,7 +321,11 @@ tc_hs_type :: HsType Name -> ExpKind -> TcM TcType
tc_hs_type (HsParTy ty) exp_kind = tc_lhs_type ty exp_kind
tc_hs_type (HsDocTy ty _) exp_kind = tc_lhs_type ty exp_kind
tc_hs_type (HsQuasiQuoteTy {}) _ = panic "tc_hs_type: qq" -- Eliminated by renamer
-tc_hs_type (HsBangTy {}) _ = panic "tc_hs_type: bang" -- Unwrapped by con decls
+tc_hs_type ty@(HsBangTy {}) _
+ -- While top-level bangs at this point are eliminated (eg !(Maybe Int)),
+ -- other kinds of bangs are not (eg ((!Maybe) Int)). These kinds of
+ -- bangs are invalid, so fail. (#7210)
+ = failWithTc (ptext (sLit "Unexpected strictness annotation:") <+> ppr ty)
tc_hs_type (HsRecTy _) _ = panic "tc_hs_type: record" -- Unwrapped by con decls
-- Record types (which only show up temporarily in constructor
-- signatures) should have been removed by now
More information about the Cvs-ghc
mailing list