module Language.Haskell.Tools.AST.Gen.Stmts where
import qualified Name as GHC
import Data.List
import Data.String
import Data.Function (on)
import Control.Reference
import Language.Haskell.Tools.AST
import Language.Haskell.Tools.AST.ElementTypes
import Language.Haskell.Tools.AST.Gen.Utils
import Language.Haskell.Tools.AST.Gen.Names
import Language.Haskell.Tools.Transform
mkBindStmt :: Pattern dom -> Expr dom -> Stmt dom
mkBindStmt bound expr = mkAnn (child <> " <- " <> child) $ UBindStmt bound expr
mkExprStmt :: Expr dom -> Stmt dom
mkExprStmt = mkAnn child . UExprStmt
mkLetStmt :: [LocalBind dom] -> Stmt dom
mkLetStmt = mkAnn ("let " <> child) . ULetStmt . mkAnnList (indented list)
mkRecStmt :: [Stmt dom] -> Stmt dom
mkRecStmt = mkAnn ("rec " <> child) . URecStmt . mkAnnList (indented list)
mkListCompBody :: [CompStmt dom] -> ListCompBody dom
mkListCompBody = mkAnn child . UListCompBody . mkAnnList (separatedBy " " list)
mkCompStmt :: Stmt dom -> CompStmt dom
mkCompStmt = mkAnn child . UCompStmt
mkThenStmt :: Expr dom -> Maybe (Expr dom) -> CompStmt dom
mkThenStmt th by = mkAnn ("then " <> child)
$ UThenStmt th $ mkAnnMaybe (after " by " opt) by
mkGroupStmt :: Maybe (Expr dom) -> Maybe (Expr dom) -> CompStmt dom
mkGroupStmt by using = mkAnn ("then group" <> child)
$ UGroupStmt (mkAnnMaybe (after " by " opt) by)
(mkAnnMaybe (after " using " opt) using)
mkBindCmd :: Pattern dom -> Cmd dom -> CmdStmt dom
mkBindCmd bound expr = mkAnn (child <> " <- " <> child) $ UBindStmt bound expr
mkExprCmd :: Cmd dom -> CmdStmt dom
mkExprCmd = mkAnn child . UExprStmt
mkLetStmtCmd :: [LocalBind dom] -> CmdStmt dom
mkLetStmtCmd = mkAnn ("let " <> child) . ULetStmt . mkAnnList (indented list)
mkRecCmd :: [CmdStmt dom] -> CmdStmt dom
mkRecCmd = mkAnn ("rec " <> child) . URecStmt . mkAnnList (indented list)