packages feed

language-ocaml-0.1.31: lib/Language/OCaml/Definitions/Parsing/ASTHelper/Mod.hs

{-# LANGUAGE RecordWildCards #-}

module Language.OCaml.Definitions.Parsing.ASTHelper.Mod
  ( MkOpts(..)
  , attr
  , mk
  ) where

import Data.Default

import Language.OCaml.Definitions.Parsing.ASTHelper.Common
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Definitions.Parsing.Location

attr :: ModuleExpr -> Attribute -> ModuleExpr
attr d a = d { pmodAttributes = pmodAttributes d ++ [a] }

mk :: MkOpts -> ModuleExprDesc -> ModuleExpr
mk (MkOpts {..}) d = ModuleExpr
  { pmodDesc       = d
  , pmodLoc        = loc
  , pmodAttributes = attrs
  }

data MkOpts = MkOpts
  { attrs :: [Attribute]
  , loc   :: Location
  }

instance Default MkOpts where
  def = MkOpts
    { attrs = []
    , loc   = defaultLoc
    }