Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : ghc-7.2

http://hackage.haskell.org/trac/ghc/changeset/76c74a1673295ed484c6861b2d1cdda8b0900daa

>---------------------------------------------------------------

commit 76c74a1673295ed484c6861b2d1cdda8b0900daa
Author: Ian Lynagh <[email protected]>
Date:   Sun Jul 24 16:04:57 2011 +0100

    Enable derived but not hand crafted Typeable instances in Safe Haskell
    
    Conflicts:
    
        compiler/typecheck/TcInstDcls.lhs

>---------------------------------------------------------------

 compiler/typecheck/TcInstDcls.lhs |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/compiler/typecheck/TcInstDcls.lhs 
b/compiler/typecheck/TcInstDcls.lhs
index b28c8a5..8c59b8b 100644
--- a/compiler/typecheck/TcInstDcls.lhs
+++ b/compiler/typecheck/TcInstDcls.lhs
@@ -39,6 +39,8 @@ import Pair
 import CoreUtils  ( mkPiTypes )
 import CoreUnfold ( mkDFunUnfolding )
 import CoreSyn    ( Expr(Var), CoreExpr, varToCoreExpr )
+import PrelNames  ( typeableClassNames )
+
 import Id
 import MkId
 import Name
@@ -406,6 +408,16 @@ tcInstDecls1 tycl_decls inst_decls deriv_decls
                     tcExtendGlobalEnv (concatMap implicitTyThings all_tycons) $
                     addFamInsts deriv_ty_insts $
                     addInsts deriv_inst_info getGblEnv
+
+       -- Check that if the module is compiled with -XSafe, there are no
+       -- hand written instances of Typeable as then unsafe casts could be
+       -- performed. Derivied instances are OK.
+       ; dflags <- getDOpts
+       ; when (safeLanguageOn dflags) $
+             mapM_ (\x -> when (is_cls (iSpec x) `elem` typeableClassNames)
+                               (addErrAt (getSrcSpan $ iSpec x) typInstErr))
+                   local_info
+
        ; return ( addTcgDUs gbl_env deriv_dus,
                   deriv_inst_info ++ local_info,
                   aux_binds `plusHsValBinds` deriv_binds)



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to