HaRe-0.8.2.3: the Haskell Refactorer.

Safe HaskellNone
LanguageHaskell98

Language.Haskell.Refact.Utils.Binds

Description

This module contains a collection of program analysis and transformation functions (the API) that work over the Type Decorated AST. Most of the functions defined in the module are taken directly from the API, but in some cases are modified to work with the type decorated AST.

In particular some new functions have been added to make type decorated AST traversals easier.

In HaRe, in order to preserve the comments and layout of refactored programs, a refactoring modifies not only the AST but also the token stream, and the program source after the refactoring is extracted from the token stream rather than the AST, for the comments and layout information is kept in the token steam instead of the AST. As a consequence, a program transformation function from this API modifies both the AST and the token stream (unless explicitly stated). So when you build your own program transformations, try to use the API to do the transformation, as this can liberate you from caring about the token stream.

This type decorated API is still in development. Any suggestions and comments are very much welcome.

Documentation

hsBinds :: HsValBinds t name => t -> [LHsBind name] Source

class (Data t, Data name) => HsValBinds t name | t -> name where Source

Methods

hsValBinds :: t -> HsValBinds name Source

Return the binds that are directly enclosed in the given syntax phrase. hsValBinds :: t -> [GHC.LHsBind GHC.Name]

hsTyDecls :: t -> [[LTyClDecl name]] Source

Return the type class definitions that are directly enclosed in the given syntax phrase. Note: only makes sense for GHC.RenamedSource

Instances

HsValBinds ParsedSource RdrName Source 
HsValBinds RenamedSource Name Source 
HsValBinds Name Name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [[LTyClDecl name]] name Source 
(DataId name, Data name) => HsValBinds [LMatch name (LHsExpr name)] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LGRHS name (LHsExpr name)] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LStmt name (LHsExpr name)] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LTyClDecl name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [TyClGroup name] name Source 
(DataId name, Data name) => HsValBinds [LTyFamInstEqn name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LTyFamInstDecl name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LDataFamInstDecl name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LInstDecl name] name Source 
(DataId name, Data name) => HsValBinds [LHsBind name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LSig name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LHsType name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [SyntaxExpr name] name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds [LPat name] name Source 
(DataId name, Data name) => HsValBinds (HsGroup name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LTyClDecl name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (TyClGroup name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (HsDataDefn name) name Source 
(DataId name, Data name) => HsValBinds (LTyFamInstEqn name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (HsTyPats name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LInstDecl name) name Source 
(DataId name, Data name) => HsValBinds (HsLocalBinds name) name Source 
(DataId name, Data name) => HsValBinds (HsValBinds name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LHsBind name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LHsBinds name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (HsBind name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (HsIPBinds name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LSig name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LHsType name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (HsExpr name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LHsExpr name) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LPat name) name Source 
(DataId name, Data name) => HsValBinds (LMatch name (LHsExpr name)) name Source 
(DataId name, Data name) => HsValBinds (Match name (LHsExpr name)) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LGRHS name (LHsExpr name)) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (LStmt name (LHsExpr name)) name Source 
(OutputableBndr name, DataId name, Data name) => HsValBinds (Stmt name (LHsExpr name)) name Source 
(DataId name, Data name) => HsValBinds (MatchGroup name (LHsExpr name)) name Source 
(DataId name, Data name) => HsValBinds (GRHSs name (LHsExpr name)) name Source