haskell-src-exts-util-0.2.1.1: Helper functions for working with haskell-src-exts trees

Safe HaskellNone
LanguageHaskell2010

Language.Haskell.Exts.Util

Contents

Synopsis

Free variables of ASTs

class FreeVars a where Source #

Minimal complete definition

freeVars

Methods

freeVars :: a -> Set (Name ()) Source #

Return the variables, erring on the side of more free variables

Instances

(Data s, Ord s) => FreeVars [IPBind s] Source # 

Methods

freeVars :: [IPBind s] -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars [Exp s] Source # 

Methods

freeVars :: [Exp s] -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars [Alt s] Source # 

Methods

freeVars :: [Alt s] -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars (Set (Name s)) Source # 

Methods

freeVars :: Set (Name s) -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars (IPBind s) Source # 

Methods

freeVars :: IPBind s -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars (Rhs s) Source # 

Methods

freeVars :: Rhs s -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars (GuardedRhs s) Source # 

Methods

freeVars :: GuardedRhs s -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars (Exp s) Source # 

Methods

freeVars :: Exp s -> Set (Name ()) Source #

(Data s, Ord s) => FreeVars (Alt s) Source # 

Methods

freeVars :: Alt s -> Set (Name ()) Source #

data Vars Source #

Constructors

Vars 

Fields

Instances

class AllVars a where Source #

Minimal complete definition

allVars

Methods

allVars :: a -> Vars Source #

Return the variables, erring on the side of more free variables

Instances

AllVars Vars Source # 

Methods

allVars :: Vars -> Vars Source #

(Data s, Ord s) => AllVars [Decl s] Source # 

Methods

allVars :: [Decl s] -> Vars Source #

(Data s, Ord s) => AllVars [Match s] Source # 

Methods

allVars :: [Match s] -> Vars Source #

(Data s, Ord s) => AllVars [Pat s] Source # 

Methods

allVars :: [Pat s] -> Vars Source #

(Data s, Ord s) => AllVars [Stmt s] Source # 

Methods

allVars :: [Stmt s] -> Vars Source #

(Data s, Ord s) => AllVars [QualStmt s] Source # 

Methods

allVars :: [QualStmt s] -> Vars Source #

(Data s, Ord s) => AllVars (Maybe (Binds s)) Source # 

Methods

allVars :: Maybe (Binds s) -> Vars Source #

(Data s, Ord s) => AllVars (Decl s) Source # 

Methods

allVars :: Decl s -> Vars Source #

(Data s, Ord s) => AllVars (Binds s) Source # 

Methods

allVars :: Binds s -> Vars Source #

(Data s, Ord s) => AllVars (Match s) Source # 

Methods

allVars :: Match s -> Vars Source #

(Data s, Ord s) => AllVars (Pat s) Source # 

Methods

allVars :: Pat s -> Vars Source #

(Data s, Ord s) => AllVars (Stmt s) Source # 

Methods

allVars :: Stmt s -> Vars Source #

(Data s, Ord s) => AllVars (QualStmt s) Source # 

Methods

allVars :: QualStmt s -> Vars Source #

Rebracketing of ASTs

class Brackets a where Source #

Minimal complete definition

remParen, addParen, isAtom, needBracket

Methods

remParen :: a -> Maybe a Source #

addParen :: a -> a Source #

isAtom :: a -> Bool Source #

Is this item lexically requiring no bracketing ever i.e. is totally atomic

needBracket :: Int -> a -> a -> Bool Source #

Is the child safe free from brackets in the parent position. Err on the side of caution, True = don't know

Instances

Default l => Brackets (Type l) Source # 

Methods

remParen :: Type l -> Maybe (Type l) Source #

addParen :: Type l -> Type l Source #

isAtom :: Type l -> Bool Source #

needBracket :: Int -> Type l -> Type l -> Bool Source #

(Data l, Default l) => Brackets (Exp l) Source # 

Methods

remParen :: Exp l -> Maybe (Exp l) Source #

addParen :: Exp l -> Exp l Source #

isAtom :: Exp l -> Bool Source #

needBracket :: Int -> Exp l -> Exp l -> Bool Source #

Default l => Brackets (Pat l) Source # 

Methods

remParen :: Pat l -> Maybe (Pat l) Source #

addParen :: Pat l -> Pat l Source #

isAtom :: Pat l -> Bool Source #

needBracket :: Int -> Pat l -> Pat l -> Bool Source #

paren :: (Data l, Default l) => Exp l -> Exp l Source #

Add a Paren around something if it is not atomic

transformBracket :: (Data l, Default l) => (Exp l -> Maybe (Exp l)) -> Exp l -> Exp l Source #

rebracket1 :: (Data l, Default l) => Exp l -> Exp l Source #

Add/remove brackets as suggested needBracket at 1-level of depth

appsBracket :: (Data l, Default l) => [Exp l] -> Exp l Source #

Orphan instances