Skip to content

Plugin example not updated for ghc 7.6

The GHC plugin docs (http://www.haskell.org/ghc/docs/latest/html/users_guide/compiler-plugins.html) have this example:

pass :: ModGuts -> CoreM ModGuts
pass = bindsOnlyPass (mapM printBind)
  where printBind :: CoreBind -> CoreM CoreBind
        printBind bndr@(NonRec b _) = do
          putMsgS $ "Non-recursive binding named " ++ showSDoc (ppr b)
          return bndr 
        printBind bndr = return bndr

but in ghc >= 7.6 showSDoc requires DynFlags:

pass :: ModGuts -> CoreM ModGuts
pass guts = do
    dynFlags <- getDynFlags
    bindsOnlyPass (mapM $ printBind dynFlags) guts
  where 
    printBind :: DynFlags -> CoreBind -> CoreM CoreBind
    printBind _dynFlags bndr@(NonRec b _) = do
#if __GLASGOW_HASKELL__ >= 706
      putMsgS $ "Non-recursive binding named " ++ showSDoc _dynFlags (ppr b)
#else
      putMsgS $ "Non-recursive binding named " ++ showSDoc (ppr b)
#endif
      return bndr 
    printBind _dynFlags bndr = return bndr
Trac metadata
Trac field Value
Version 7.6.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Documentation
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information