packages feed

language-ocaml-0.1.31: lib/Language/OCaml/Parser/SigExceptionDeclaration.hs

{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}

module Language.OCaml.Parser.SigExceptionDeclaration
  ( sigExceptionDeclarationP
  ) where

import Data.Default

import Language.OCaml.Definitions.Parsing.ASTHelper.Te       as Te
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.Common
import Language.OCaml.Parser.ConstrIdent
import Language.OCaml.Parser.CoreType
import Language.OCaml.Parser.GeneralizedConstructorArguments
import Language.OCaml.Parser.PostItemAttributes
import Language.OCaml.Parser.Tokens
import Language.OCaml.Parser.Utils.Types

sigExceptionDeclarationP :: Parser Structure -> Parser (ExtensionConstructor, ())
sigExceptionDeclarationP structureP = do
  exceptionT
  -- TODO: extAttributes
  i <- constrIdentP
  (args, res) <- generalizedConstructorArgumentsP coreTypeP
  -- a <- attributesP
  attrs <- postItemAttributesP structureP
  return
    ( Te.decl
      (def { args
           , attrs = attrs {- ++ a -} {- loc and docs -}
           , loc   = symbolRLoc ()
           , docs  = symbolDocs ()
           }
      )
      res
      (mkRHS i (3 :: Int))
    , ()
    )