packages feed

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

{-# LANGUAGE NamedFieldPuns #-}

module Language.OCaml.Parser.OpenStatement
  ( openStatementP
  ) where

import Data.Default
import Text.Megaparsec

import Language.OCaml.Definitions.Parsing.ASTHelper.Opn as Opn
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.Common                     (mkRHS, symbolRLoc, symbolDocs)
-- import Language.OCaml.Parser.ExtAttributes
import Language.OCaml.Parser.ModLongident
import Language.OCaml.Parser.OverrideFlag
import Language.OCaml.Parser.PostItemAttributes
import Language.OCaml.Parser.Tokens
import Language.OCaml.Parser.Utils.Types

openStatementP :: Parser Structure -> Parser (OpenDescription, ())
openStatementP structureP = do
  try $ openT
  override <- overrideFlagP
  -- (ext, attrs) <- extAttributesP
  i <- modLongidentP
  a <- postItemAttributesP structureP
  return (
    Opn.mk
    (def { override
         , attrs = a -- FIXME: ++ attrs
         , loc   = symbolRLoc ()
         , docs  = symbolDocs ()
         }
    )
    (mkRHS i 4)
    , () -- FIXME: ext
    )