packages feed

language-ocaml 0.1.31 → 0.2.0

raw patch · 136 files changed

+415/−3446 lines, 136 filesdep +directorydep +extradep +filepath

Dependencies added: directory, extra, filepath, tasty-golden

Files

language-ocaml.cabal view
@@ -1,5 +1,5 @@ Name:          language-ocaml-Version:       0.1.31+Version:       0.2.0 Synopsis:      Language tools for manipulating OCaml programs in Haskell Description:   Language tools for manipulating OCaml programs in Haskell.                Curently includes a Alex/Happy parser, and a pretty-printer.@@ -22,19 +22,23 @@   hs-source-dirs:    lib, test   pkgconfig-depends: zlib   build-tools:       alex, happy-  build-depends: array                     >= 0.5   && < 0.6,-                 base                      >= 4.9   && < 4.11,-                 containers                >= 0.5   && < 0.7,-                 data-default              >= 0.7   && < 0.8,-                 extensible-effects        >= 3.0   && < 3.1,-                 interpolate               >= 0.2   && < 0.3,-                 lens                      >= 4.16  && < 4.17,-                 megaparsec                >= 6.0   && < 6.5,-                 mtl                       >= 2.2   && < 2.3,-                 prettyprinter             >= 1.2   && < 1.3,-                 string-qq                 >= 0.0   && < 0.1,-                 tasty                     >= 1.0   && < 1.1,-                 tasty-hunit               >= 0.9   && < 0.11+  build-depends: array                     >= 0.5  && < 0.6,+                 base                      >= 4.9  && < 4.11,+                 containers                >= 0.5  && < 0.7,+                 data-default              >= 0.7  && < 0.8,+                 directory                 >= 1.3  && < 1.4,+                 extensible-effects        >= 3.0  && < 3.1,+                 extra                     >= 1.6  && < 1.7,+                 filepath                  >= 1.4  && < 1.5,+                 interpolate               >= 0.2  && < 0.3,+                 lens                      >= 4.16 && < 4.17,+                 megaparsec                >= 6.0  && < 6.5,+                 mtl                       >= 2.2  && < 2.3,+                 prettyprinter             >= 1.2  && < 1.3,+                 string-qq                 >= 0.0  && < 0.1,+                 tasty                     >= 1.0  && < 1.1,+                 tasty-golden              >= 2.3  && < 2.4,+                 tasty-hunit               >= 0.9  && < 0.11   exposed-modules:                   Language.OCaml.Parser.Common                   Language.OCaml.Definitions.Parsing.ASTHelper.Exception@@ -61,8 +65,6 @@                   Language.OCaml.Parser                   Language.OCaml.Parser.Generator.Lexer                   Language.OCaml.Parser.Generator.Parser-                  Language.OCaml.Parser.Internal-                  Language.OCaml.Parser.Utils.Utils                   Language.OCaml.PrettyPrinter                   Language.OCaml.PrettyPrinter.Internal   other-modules:@@ -70,100 +72,6 @@                 Language.OCaml.Definitions.StdLib.Lexing                 Language.OCaml.Definitions.StdLib.Parsing                 Language.OCaml.Utils-                Language.OCaml.Parser.AndTypeDeclaration-                Language.OCaml.Parser.Attribute-                Language.OCaml.Parser.Attributes-                Language.OCaml.Parser.AttrId-                Language.OCaml.Parser.BarConstructorDeclaration-                Language.OCaml.Parser.Constant-                Language.OCaml.Parser.ConstrIdent-                Language.OCaml.Parser.ConstrLongident-                Language.OCaml.Parser.ConstructorArguments-                Language.OCaml.Parser.ConstructorDeclaration-                Language.OCaml.Parser.ConstructorDeclarations-                Language.OCaml.Parser.CoreType-                Language.OCaml.Parser.CoreType2-                Language.OCaml.Parser.CoreTypeCommaList-                Language.OCaml.Parser.CoreTypeList-                Language.OCaml.Parser.CoreTypeNoAttr-                Language.OCaml.Parser.Expr-                Language.OCaml.Parser.ExprSemiList-                Language.OCaml.Parser.FunBinding-                Language.OCaml.Parser.FunDef-                Language.OCaml.Parser.GeneralizedConstructorArguments-                Language.OCaml.Parser.Implementation-                Language.OCaml.Parser.Label-                Language.OCaml.Parser.LabelDeclaration-                Language.OCaml.Parser.LabelDeclarationSemi-                Language.OCaml.Parser.LabelDeclarations-                Language.OCaml.Parser.LabelLongident-                Language.OCaml.Parser.LabeledSimpleExpr-                Language.OCaml.Parser.LabeledSimplePattern-                Language.OCaml.Parser.LblExpr-                Language.OCaml.Parser.LblExprList-                Language.OCaml.Parser.LblPattern-                Language.OCaml.Parser.LblPatternList-                Language.OCaml.Parser.LetBinding-                Language.OCaml.Parser.LetBindingBody-                Language.OCaml.Parser.LetBindings-                Language.OCaml.Parser.MatchCase-                Language.OCaml.Parser.MatchCases-                Language.OCaml.Parser.ModExtLongident-                Language.OCaml.Parser.ModLongident-                Language.OCaml.Parser.ModuleBinding-                Language.OCaml.Parser.ModuleBindingBody-                Language.OCaml.Parser.ModuleExpr-                Language.OCaml.Parser.MutableFlag-                Language.OCaml.Parser.NonRecFlag-                Language.OCaml.Parser.OpenStatement-                Language.OCaml.Parser.Operator-                Language.OCaml.Parser.OptBar-                Language.OCaml.Parser.OptPatternTypeConstraint-                Language.OCaml.Parser.OptTypeConstraint-                Language.OCaml.Parser.OptSemi-                Language.OCaml.Parser.OptionalTypeParameter-                Language.OCaml.Parser.OptionalTypeParameters-                Language.OCaml.Parser.OptionalTypeVariable-                Language.OCaml.Parser.OverrideFlag-                Language.OCaml.Parser.Pattern-                Language.OCaml.Parser.PatternGen-                Language.OCaml.Parser.PatternNoExn-                Language.OCaml.Parser.PatternSemiList-                Language.OCaml.Parser.Payload-                Language.OCaml.Parser.PolyTypeNoAttr-                Language.OCaml.Parser.PostItemAttribute-                Language.OCaml.Parser.PostItemAttributes-                Language.OCaml.Parser.PrivateFlag-                Language.OCaml.Parser.RecFlag-                Language.OCaml.Parser.RecordExpr-                Language.OCaml.Parser.SeqExpr-                Language.OCaml.Parser.SigExceptionDeclaration-                Language.OCaml.Parser.SimpleCoreType-                Language.OCaml.Parser.SimpleCoreType2-                Language.OCaml.Parser.SimpleCoreTypeOrTuple-                Language.OCaml.Parser.SimpleDelimitedPattern-                Language.OCaml.Parser.SimpleExpr-                Language.OCaml.Parser.SimplePattern-                Language.OCaml.Parser.SimpleLabeledExprList-                Language.OCaml.Parser.SimplePatternNotIdent-                Language.OCaml.Parser.SingleAttrId-                Language.OCaml.Parser.StrExceptionDeclaration-                Language.OCaml.Parser.StrictBinding-                Language.OCaml.Parser.Structure-                Language.OCaml.Parser.StructureItem-                Language.OCaml.Parser.TestUtils-                Language.OCaml.Parser.Tokens-                Language.OCaml.Parser.TypeConstraint-                Language.OCaml.Parser.TypeDeclaration-                Language.OCaml.Parser.TypeDeclarations-                Language.OCaml.Parser.TypeKind-                Language.OCaml.Parser.TypeVariable-                Language.OCaml.Parser.TypeVariance-                Language.OCaml.Parser.TypeLongident-                Language.OCaml.Parser.Utils.Combinators-                Language.OCaml.Parser.Utils.Types-                Language.OCaml.Parser.ValIdent-                Language.OCaml.Parser.ValLongident                 Language.OCaml.PrettyPrinter.ArgLabel                 Language.OCaml.PrettyPrinter.Case                 Language.OCaml.PrettyPrinter.Constant@@ -200,27 +108,36 @@   main-is:          Main.hs   build-depends: language-ocaml,                  base,+                 directory,+                 extra,+                 filepath,                  interpolate,                  megaparsec,                  prettyprinter,                  string-qq,                  tasty,+                 tasty-golden,                  tasty-hunit   other-modules:                 Language.OCaml.Parser.AndLetBinding.Test                 Language.OCaml.Parser.Attribute.Test                 Language.OCaml.Parser.Attributes.Test                 Language.OCaml.Parser.AttrId.Test-                Language.OCaml.Parser.Common.Test                 Language.OCaml.Parser.Constant.Test                 Language.OCaml.Parser.ConstrLongident.Test+                Language.OCaml.Parser.CoreType.Test+                Language.OCaml.Parser.CoreType2.Test+                Language.OCaml.Parser.CoreTypeNoAttr.Test                 Language.OCaml.Parser.Expr.Test                 Language.OCaml.Parser.ExtAttributes.Test                 Language.OCaml.Parser.Generator.Expr.Test                 Language.OCaml.Parser.Generator.Implementation.Test+                Language.OCaml.Parser.Generator.LetBinding.Test                 Language.OCaml.Parser.Generator.SeqExpr.Test                 Language.OCaml.Parser.Generator.SimpleExpr.Test+                Language.OCaml.Parser.Generator.Structure.Test                 Language.OCaml.Parser.Generator.ValLongident.Test+                Language.OCaml.Parser.Ident.Test                 Language.OCaml.Parser.Implementation.Test                 Language.OCaml.Parser.Int.Test                 Language.OCaml.Parser.LetBinding.Test@@ -236,8 +153,12 @@                 Language.OCaml.Parser.PostItemAttributes.Test                 Language.OCaml.Parser.RecFlag.Test                 Language.OCaml.Parser.SeqExpr.Test+                Language.OCaml.Parser.SimpleCoreType.Test+                Language.OCaml.Parser.SimpleCoreType2.Test+                Language.OCaml.Parser.SimpleCoreTypeOrTuple.Test                 Language.OCaml.Parser.SimpleExpr.Test                 Language.OCaml.Parser.SimplePattern.Test+                Language.OCaml.Parser.SimplePatternNotIdent.Test                 Language.OCaml.Parser.SingleAttrId.Test                 Language.OCaml.Parser.StrictBinding.Test                 Language.OCaml.Parser.Structure.Test@@ -245,7 +166,6 @@                 Language.OCaml.Parser.StructureTail.Test                 Language.OCaml.Parser.TestStrings                 Language.OCaml.Parser.TestUtils-                Language.OCaml.Parser.Tokens.Test                 Language.OCaml.Parser.ValIdent.Test                 Language.OCaml.Parser.ValLongident.Test                 Language.OCaml.PrettyPrinter.Structure.Test
lib/Language/OCaml/Parser.hs view
@@ -1,27 +1,6 @@ module Language.OCaml.Parser-  ( ParserC-  , ParserG-  , implementationP-  , parseImplementationC-  , parseImplementationG+  ( Parser+  , parseImplementation   ) where -import           Data.Void-import           Text.Megaparsec                              (parse)-import           Text.Megaparsec.Error--import           Language.OCaml.Definitions.Parsing.ParseTree--- import qualified Language.OCaml.Parser.Generator.Lexer        as GL-import qualified Language.OCaml.Parser.Generator.Parser       as GP-import           Language.OCaml.Parser.Implementation-import           Language.OCaml.Parser.Utils.Types--type ParserC a = Parser a--type ParserG a = GP.Parser a--parseImplementationC :: String -> Either (ParseError Char Void) Structure-parseImplementationC = parse implementationP "Language.OCaml.Parser"--parseImplementationG :: GP.Parser [StructureItem]-parseImplementationG = GP.parseImplementation+import Language.OCaml.Parser.Generator.Parser
− lib/Language/OCaml/Parser/AndTypeDeclaration.hs
@@ -1,29 +0,0 @@-{-# LANGUAGE DisambiguateRecordFields #-}-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE NamedFieldPuns #-}--module Language.OCaml.Parser.AndTypeDeclaration-  ( andTypeDeclarationP-  ) where--import Data.Default-import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTHelper.Type as Type-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.TypeKind-import Language.OCaml.Parser.PostItemAttributes-import Language.OCaml.Parser.Utils.Types--andTypeDeclarationP :: Parser Structure -> Parser TypeDeclaration-andTypeDeclarationP structureP = do-  try $ andT-  -- TODO: attributes-  -- TODO: optionalTypeParameters-  i <- lIdentT-  (kind, priv, manifest) <- typeKindP structureP-  -- TODO: constraints-  attrs <- postItemAttributesP structureP -- FIXME: use me-  return $ Type.mk (def { attrs, kind, priv }) manifest (mkRHS i 4) -- FIXME: [] and []
− lib/Language/OCaml/Parser/AttrId.hs
@@ -1,21 +0,0 @@-module Language.OCaml.Parser.AttrId-  ( attrIdP-  ) where--import           Text.Megaparsec--import qualified Language.OCaml.Definitions.Parsing.ASTTypes  as ASTTypes-import           Language.OCaml.Definitions.Parsing.ParseTree-import           Language.OCaml.Parser.Common-import           Language.OCaml.Parser.SingleAttrId-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.Utils.Types--attrIdP :: Parser (ASTTypes.Loc String)-attrIdP = choice-  [ do-    a <- try $ singleAttrIdP <* dotT-    b <- attrIdP-    return $ mkLoc (a ++ "^" ++ ASTTypes.txt b) none -- FIXME symbolRLoc-  , singleAttrIdP >>= \ a -> return $ mkLoc a none -- FIXME symbolRLoc-  ]
− lib/Language/OCaml/Parser/Attribute.hs
@@ -1,21 +0,0 @@-module Language.OCaml.Parser.Attribute-  ( attributeP-  ) where--import           Text.Megaparsec--import qualified Language.OCaml.Definitions.Parsing.ASTTypes  as ASTTypes-import           Language.OCaml.Definitions.Parsing.ParseTree-import           Language.OCaml.Parser.AttrId-import           Language.OCaml.Parser.Payload-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.Utils.Types--attributeP :: Parser Structure -> Parser (ASTTypes.Loc String, Payload)-attributeP structureP = do-  i <- try $ do-    lBracketAtT-    attrIdP-  p <- payloadP structureP-  rBracketT-  return (i, p)
− lib/Language/OCaml/Parser/Attributes.hs
@@ -1,13 +0,0 @@-module Language.OCaml.Parser.Attributes-  ( attributesP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Attribute-import Language.OCaml.Parser.Utils.Types--attributesP :: Parser Structure -> Parser [(Loc String, Payload)]-attributesP structureP = many (attributeP structureP)
− lib/Language/OCaml/Parser/BarConstructorDeclaration.hs
@@ -1,27 +0,0 @@-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE NamedFieldPuns #-}--module Language.OCaml.Parser.BarConstructorDeclaration-  ( barConstructorDeclarationP-  ) where--import Data.Default-import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTHelper.Type     as Type-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Attributes-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.ConstrIdent-import Language.OCaml.Parser.GeneralizedConstructorArguments-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--barConstructorDeclarationP ::-  Parser Structure -> Parser CoreType -> Parser ConstructorDeclaration-barConstructorDeclarationP structureP coreTypeP = try $ do-  barT-  i <- constrIdentP-  (args, res) <- generalizedConstructorArgumentsP coreTypeP-  attrs <- attributesP structureP-  return $ Type.constructor (def { args, attrs }) res (mkRHS i (2 :: Int))
lib/Language/OCaml/Parser/Common.hs view
@@ -14,7 +14,6 @@   , ghexp   , ghtyp   , ghpat-  , identP   , mkexp   , mkexpAttrs   , mkexpCons@@ -58,7 +57,6 @@ import           Data.Default import           Data.Maybe import           Prelude                                               hiding (exp)-import           Text.Megaparsec  import           Language.OCaml.Definitions.Parsing.ASTHelper.Exp      as Exp hiding (newType) import           Language.OCaml.Definitions.Parsing.ASTHelper.Mod      as Mod@@ -75,12 +73,6 @@ import           Language.OCaml.Definitions.Parsing.ParseTree import           Language.OCaml.Definitions.Parsing.Parser.LetBinding import           Language.OCaml.Definitions.Parsing.Parser.LetBindings-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.Utils.Utils-import           Language.OCaml.Parser.Utils.Types--identP :: Parser String-identP = lexeme $ choice [ uIdentT, lIdentT ]  mkstr :: StructureItemDesc -> StructureItem mkstr d = Str.mk def d -- FIXME: symbolRLoc
− lib/Language/OCaml/Parser/Constant.hs
@@ -1,23 +0,0 @@-module Language.OCaml.Parser.Constant-  ( constantP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--constantP :: Parser Constant-constantP = choice-  [ do-    (n, m) <- intT-    return $ PconstInteger n m-  , PconstChar <$> charT-  , do-    (s, d) <- stringT-    return $ PconstString s d-  -- , do-  --   (f, m) <- stringT-  --   return $ PconstFloat f m-  ]
− lib/Language/OCaml/Parser/ConstrIdent.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.ConstrIdent-  ( constrIdentP-  ) where--import Text.Megaparsec--import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--constrIdentP :: Parser String-constrIdentP = choice-  [ uIdentT-  , lBracketT *> rBracketT *> return "[]"-  , lParenT *> rParenT *> return "()"-  , lParenT *> colonColonT *> rParenT *> return "::"-  , falseT *> return "false"-  , trueT *> return "true"-  ]
− lib/Language/OCaml/Parser/ConstrLongident.hs
@@ -1,28 +0,0 @@-module Language.OCaml.Parser.ConstrLongident-  ( constrLongidentP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.ModLongident-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types-import Language.OCaml.Parser.Utils.Utils--constrLongidentP :: Parser Longident-constrLongidentP = choice-  [ do-    i <- try $ do-      i <- modLongidentP-      dotT-      return i-    parens colonColonT-    return $ Ldot i "::"-  , modLongidentP-  , try $ lBracketT *> rBracketT *> (return $ Lident "[]")-  , try $ lParenT *> rParenT *> (return $ Lident "()")-  , try (lParenT *> colonColonT) *> rParenT *> (return $ Lident "::")-  , falseT *> (return $ Lident "false")-  , trueT *> (return $ Lident "true")-  ]
− lib/Language/OCaml/Parser/ConstructorArguments.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.ConstructorArguments-  ( constructorArgumentsP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.CoreTypeList-import Language.OCaml.Parser.Utils.Types--constructorArgumentsP :: Parser CoreType -> Parser ConstructorArguments-constructorArgumentsP coreTypeP = choice-  [ PcstrTuple . reverse <$> coreTypelistP coreTypeP-  -- TODO: label declarations-  ]
− lib/Language/OCaml/Parser/ConstructorDeclaration.hs
@@ -1,25 +0,0 @@-{-# LANGUAGE DisambiguateRecordFields #-}-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE NamedFieldPuns #-}--module Language.OCaml.Parser.ConstructorDeclaration-  ( constructorDeclarationP-  ) where--import Data.Default--import Language.OCaml.Definitions.Parsing.ASTHelper.Type     as Type-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Attributes-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.ConstrIdent-import Language.OCaml.Parser.GeneralizedConstructorArguments-import Language.OCaml.Parser.Utils.Types--constructorDeclarationP ::-  Parser Structure -> Parser CoreType -> Parser ConstructorDeclaration-constructorDeclarationP structureP coreTypeP = do-  name <- constrIdentP-  (args, res) <- generalizedConstructorArgumentsP coreTypeP-  attrs <- attributesP structureP-  return $ Type.constructor (def { args, attrs }) res (mkRHS name (1 :: Int))
− lib/Language/OCaml/Parser/ConstructorDeclarations.hs
@@ -1,23 +0,0 @@-module Language.OCaml.Parser.ConstructorDeclarations-  ( constructorDeclarationsP-  ) where--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.BarConstructorDeclaration-import Language.OCaml.Parser.ConstructorDeclaration-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--constructorDeclarationsP ::-  Parser Structure -> Parser CoreType -> Parser [ConstructorDeclaration]-constructorDeclarationsP structureP coreTypeP = leftRecursive-  [ (: []) <$> constructorDeclarationP'-  , (: []) <$> barConstructorDeclarationP'-  , barT *> return []-  ]-  [ (:) <$> barConstructorDeclarationP'-  ]-  where-    constructorDeclarationP'     = constructorDeclarationP     structureP coreTypeP-    barConstructorDeclarationP' = barConstructorDeclarationP structureP coreTypeP
− lib/Language/OCaml/Parser/CoreType.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.CoreType-  ( coreTypeP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.CoreTypeNoAttr-import Language.OCaml.Parser.Utils.Types--coreTypeP :: Parser CoreType-coreTypeP = choice-  [ coreTypenoAttrP coreTypeP-  -- , do-  --   t <- coreType-  --   a <- attribute-  --   return $ attr t a-  ]
− lib/Language/OCaml/Parser/CoreType2.hs
@@ -1,26 +0,0 @@-module Language.OCaml.Parser.CoreType2-  ( coreType2P-  ) where--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.SimpleCoreTypeOrTuple-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--coreType2P :: Parser CoreType -> Parser CoreType-coreType2P coreTypeP = leftRecursive-  [ simpleCoreTypeOrTupleP coreTypeP-  -- TODO-  ]-  [ do-    minusGreaterT-    t2 <- coreType2P'-    return $ \ t1 ->-      let param = extraRHSCoreType t1 (1 :: Int) in-      mktyp $ PtypArrow Nolabel param t2-  ]-  where-    coreType2P' = coreType2P coreTypeP
− lib/Language/OCaml/Parser/CoreTypeCommaList.hs
@@ -1,12 +0,0 @@-module Language.OCaml.Parser.CoreTypeCommaList-  ( coreTypeCommaListP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--coreTypeCommaListP :: Parser CoreType -> Parser [CoreType]-coreTypeCommaListP coreTypeP = sepBy coreTypeP commaT
− lib/Language/OCaml/Parser/CoreTypeList.hs
@@ -1,21 +0,0 @@-module Language.OCaml.Parser.CoreTypeList-  ( coreTypelistP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.SimpleCoreType-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--coreTypelistP :: Parser CoreType -> Parser [CoreType]-coreTypelistP coreTypeP = leftRecursive-  [ (: []) <$> simpleCoreTypeP coreTypeP-  ]-  [ do-    try $ starT-    t <- simpleCoreTypeP coreTypeP-    return $ (:) t-  ]
− lib/Language/OCaml/Parser/CoreTypeNoAttr.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.CoreTypeNoAttr-  ( coreTypenoAttrP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.CoreType2-import Language.OCaml.Parser.Utils.Types--coreTypenoAttrP :: Parser CoreType -> Parser CoreType-coreTypenoAttrP coreTypeP = choice-  [ coreType2P coreTypeP-  -- , TODO-  ]
− lib/Language/OCaml/Parser/Expr.hs
@@ -1,99 +0,0 @@-module Language.OCaml.Parser.Expr-  ( exprP-  ) where--import Text.Megaparsec                              hiding (token)--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.FunDef-import Language.OCaml.Parser.LabeledSimplePattern-import Language.OCaml.Parser.LetBindings-import Language.OCaml.Parser.MatchCases-import Language.OCaml.Parser.OptBar-import Language.OCaml.Parser.Pattern-import Language.OCaml.Parser.SimpleLabeledExprList-import Language.OCaml.Parser.SimpleExpr-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types-import Language.OCaml.PrettyPrinter                 ()--exprP :: Parser Structure -> Parser Expression -> Parser Expression-exprP structureP seqExprP = choice-  [ try $ parser <* notFollowedBy commaT-  , mkexp . PexpTuple . reverse <$>-    chainl1' parser (commaT *> (return $ flip (:))) (: [])-  ]-  where-    parser = leftRecursive-      [ try $ do-        e <- simpleExprP'-        l <- simpleLabeledExprListP'-        return $ mkexp $ PexpApply e (reverse l)-      , do-        b <- try $ do-          b <- letBindingsP structureP seqExprP-          inT-          return b-        e <- seqExprP-        return $ exprOfLetBindings b e-      -- FUNCTION-      , do-        try $ functionT-        -- TODO: extAttributes-        optBarP-        l <- matchCasesP'-        return $ mkexpAttrs (PexpFunction $ reverse l) (Nothing, []) -- FIXME-      -- FUN-      , do-        try $ funT-        -- TODO: extAttributes-        (l, o, p) <- labeledSimplePatternP patternP-        d <- funDefP seqExprP-        return $ mkexpAttrs (PexpFun l o p d) (Nothing, []) -- FIXME-      -- MATCH-      , do-        try $ matchT-        -- TODO: extAttributes-        e <- seqExprP-        withT-        optBarP-        l <- matchCasesP'-        return $ mkexpAttrs (PexpMatch e $ reverse l) (Nothing, []) -- FIXME-      -- IF ... THEN ... ELSE ...-      , do-        try ifT-        -- TODO: extAttributes-        c <- seqExprP-        thenT-        t <- exprP'-        e <- choice-          [ do-            try elseT-            Just <$> exprP'-          , return Nothing-          ]-        return $ mkexpAttrs (PexpIfThenElse c t e) (Nothing, []) -- FIXME-      , simpleExprP'-      ]-      -- FIXME: deal with associativity?-      [ infixP equalT   "="-      , infixP plusT    "+"-      , infixP minusT   "-"-      , infixP starT    "*"-      , infixP caretT   "^"-      , infixP greaterT ">"-      , infixP atT      "@"-      ]--    infixP :: Parser () -> String -> Parser (Expression -> Expression)-    infixP token symbol = try $ do-      token-      e2 <- exprP'-      return $ \ e1 -> mkinfix e1 symbol e2--    exprP'                     = exprP                     structureP seqExprP-    simpleExprP'              = simpleExprP                          seqExprP exprP'-    simpleLabeledExprListP' = simpleLabeledExprListP             seqExprP exprP'-    matchCasesP'              = matchCasesP                          seqExprP
− lib/Language/OCaml/Parser/ExprSemiList.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.ExprSemiList-  ( exprSemiListP-  ) where--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--exprSemiListP :: Parser Expression -> Parser [Expression]-exprSemiListP exprP = leftRecursive-  [ (: []) <$> exprP-  ]-  [ do-    semiT-    e2 <- exprP-    return $ \ e1 -> e2 : e1-  ]
− lib/Language/OCaml/Parser/FunBinding.hs
@@ -1,22 +0,0 @@-module Language.OCaml.Parser.FunBinding-  ( funBindingP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.TypeConstraint-import Language.OCaml.Parser.StrictBinding-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--funBindingP :: Parser Expression -> Parser Expression-funBindingP seqExprP = choice-  [ strictBindingP seqExprP (funBindingP seqExprP)-  , do-    c <- typeConstraintP-    equalT-    e <- seqExprP-    return $ mkexpConstraint e c-  ]
− lib/Language/OCaml/Parser/FunDef.hs
@@ -1,27 +0,0 @@-module Language.OCaml.Parser.FunDef-  ( funDefP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.LabeledSimplePattern-import Language.OCaml.Parser.Pattern-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types-import Language.OCaml.PrettyPrinter                 ()--funDefP :: Parser Expression -> Parser Expression-funDefP seqExprP = choice-  [ do-    minusGreaterT-    seqExprP-  -- TODO-  , do-    (l, o, p) <- labeledSimplePatternP patternP-    d <- funDefP'-    return $ ghexp $ PexpFun l o p d-  ]-  where-    funDefP' = funDefP seqExprP
− lib/Language/OCaml/Parser/GeneralizedConstructorArguments.hs
@@ -1,17 +0,0 @@-module Language.OCaml.Parser.GeneralizedConstructorArguments-  ( generalizedConstructorArgumentsP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.ConstructorArguments-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--generalizedConstructorArgumentsP :: Parser CoreType -> Parser (ConstructorArguments, Maybe a)-generalizedConstructorArgumentsP coreTypeP = choice-  [ flip (,) Nothing <$> (ofT *> constructorArgumentsP coreTypeP)-    -- TODO: colon-  , return (PcstrTuple [], Nothing)-  ]
lib/Language/OCaml/Parser/Generator/Lexer.x view
@@ -40,7 +40,7 @@ $blank      = [\  \t \f] $identChar  = [A-Z a-z _ '\'' 0-9] $lowerCase  = [a-z _]-$symbolChar = [!]--  '$' '%']--  '&' '*' '+' '-' '.' ] -- '/' ':' '<' '=' '>' '?' '@' '^' '|' '~']+$symbolChar = [\! \$ \% \& \* \+ \- \. \/ \: \< \= \> \? \@ \^ \| \~] $upperCase  = [A-Z]  -- Regular expression macros@@ -143,8 +143,16 @@   <0> "-"                                                 { tok TokMinus }   <0> "-."                                                { tok TokMinusDot }   <0> "!" $symbolChar+                                    { tokS TokPrefixOp }+  <0> [\~ \?] $symbolChar+                                { tokS TokPrefixOp }+  <0> [\= \< \> \| \& \$] $symbolChar+                    { tokS TokInfixOp0 }+  <0> [\@ \^] $symbolChar*                                { tokS TokInfixOp1 }+  <0> [\+ \-] $symbolChar*                                { tokS TokInfixOp2 }+  <0> "**" $symbolChar*                                   { tokS TokInfixOp4 }+  <0> "%"                                                 { tok  TokPercent }+  <0> [\* \/ \%] $symbolChar*                          { tokS TokInfixOp3 }+  -- <0> '#' (symbolchar | '#') +   { HASHOP op }   -- TODO-  <0> [= \< > \| & \$] $symbolChar*                       { tokS TokInfixOp0 }+  <0> [\= \< \> \| \& \$] $symbolChar*                       { tokS TokInfixOp0 }    -- while inside a string   <s> \"                                                  { endString }@@ -540,6 +548,7 @@       commentString <- getStringBuffer       let (endLine, endCol) = getMyPosition alexInput       let ss = SrcSpan startLine startCol endLine endCol+      alexSetStartCode codeStartCode       return $ Just $ Located ss $ TokComment commentString     _ -> do       popCommentStartLoc
lib/Language/OCaml/Parser/Generator/Parser.y view
@@ -10,11 +10,13 @@   , parseExpr   , parseExprCommaList   , parseImplementation+  , parseLetBinding   , parseModLongident   , parseOpenStatement   , parsePattern   , parseSeqExpr   , parseSimpleExpr+  , parseSimplePattern   , parseStructure   , parseStructureItem   , parseValIdent@@ -51,11 +53,13 @@ %name rawParseExpr           Expr %name rawParseExprCommaList  ExprCommaList %name rawParseImplementation Implementation+%name rawParseLetBinding     LetBinding %name rawParseModLongident   ModLongident %name rawParseOpenStatement  OpenStatement %name rawParsePattern        Pattern %name rawParseSeqExpr        SeqExpr %name rawParseSimpleExpr     SimpleExpr+%name rawParseSimplePattern  SimplePattern %name rawParseStructureItem  StructureItem %name rawParseStructure      Structure %name rawParseValIdent       ValIdent@@ -227,6 +231,10 @@  %% +Additive :: { String }+  : "+"  { "+" }+  | "+." { "+." }+ AmperTypeList :: { [CoreType] }   : CoreTypeNoAttr                   { [$1] }   | AmperTypeList "&" CoreTypeNoAttr { $3 : $1 }@@ -378,6 +386,11 @@     "=" SeqExpr DirectionFlag SeqExpr     do SeqExpr done                                                { mkexpAttrs (PexpFor $3 $5 $7 $6 $9) $2 }   | Expr "::" Expr                                                 { mkexpCons (rhsLoc 2) (ghexp $ PexpTuple [$1, $3]) (symbolRLoc ()) }+  | Expr INFIXOP0 Expr                                             { mkinfix $1 $2 $3 }+  | Expr INFIXOP1 Expr                                             { mkinfix $1 $2 $3 }+  | Expr INFIXOP2 Expr                                             { mkinfix $1 $2 $3 }+  | Expr INFIXOP3 Expr                                             { mkinfix $1 $2 $3 }+  | Expr INFIXOP4 Expr                                             { mkinfix $1 $2 $3 }   -- TODO: infixops   | Expr "+"  Expr                                                 { mkinfix $1 "+"  $3 }   | Expr "+." Expr                                                 { mkinfix $1 "+." $3 }@@ -394,8 +407,11 @@   | Expr "&"  Expr                                                 { mkinfix $1 "&"  $3 }   | Expr "&&" Expr                                                 { mkinfix $1 "&&" $3 }   | Expr ":=" Expr                                                 { mkinfix $1 ":=" $3 }-  -- TODO+  | Subtractive Expr %prec precUnaryMinus                          { mkuminus $1 $2 }+  | Additive    Expr %prec precUnaryPlus                           { mkuplus  $1 $2 }   | SimpleExpr "." LabelLongident "<-" Expr                        { mkexp $ PexpSetField $1 (mkRHS $3 3) $5 }+  -- TODO: label LESSMINUS expr+  | assert ExtAttributes SimpleExpr %prec belowHash                { mkexpAttrs (PexpAssert $3) $2 }   -- TODO   -- | Expr Attribute                                                 { attrExp $1 $2 }   | "_"                                                            {% alexError "Wildcard not expected" }@@ -874,6 +890,14 @@   : SimpleExpr with LblExprList { (Just $1, $3) }   | LblExprList                 { (Nothing, $1) } +RowField :: { a }+  : TagField       { $1 }+  | SimpleCoreType { Rinherit $1 }++RowFieldList :: { [a] }+  : RowField                  { [$1] }+  | RowFieldList "|" RowField { $3 : $1 }+ SeqExpr :: { Expression }   : Expr %prec belowSemi        { $1 }   | Expr ";"                    { $1 }@@ -935,6 +959,7 @@   | "(" CoreTypeCommaList ")" "#" ClassLongident { mktyp $ PtypClass (mkRHS $5 5) (reverse $2) }   | "[" TagField "]"                             { mktyp $ PtypVariant [$2] Closed Nothing }   -- TODO+  | "[" "|" RowFieldList "]"                     { mktyp $ PtypVariant (reverse $3) Closed Nothing }   | "[>" "]"                                     { mktyp $ PtypVariant [] Open Nothing }  SimpleCoreTypeOrTuple :: { CoreType }@@ -1094,9 +1119,13 @@  StructureTail :: { Structure }   : {- empty -}                 { [] }-  | "::" Structure              { (textStr 1) ++ $2 }+  | ";;" Structure              { (textStr 1) ++ $2 }   | StructureItem StructureTail { (textStr 1) ++ $1 : $2 } +Subtractive :: { String }+  : "-"  { "-" }+  | "-." { "-." }+ TagField :: { RowField }   : NameTag of OptAmpersand AmperTypeList Attributes { Rtag (mkRHS $1 1) (addInfoAttrs (symbolInfo ()) $5) $3 (reverse $4) }   -- TODO@@ -1162,7 +1191,7 @@  ValIdent :: { String }   : LIDENT           { $1 }-  | "(" Operator ")" { error "TODO ValIdent" }+  | "(" Operator ")" { $2 }   -- TODO  ValLongident :: { Longident }@@ -1199,6 +1228,9 @@ parseImplementation :: Parser [StructureItem] parseImplementation = myParse rawParseImplementation +parseLetBinding :: Parser LetBindings+parseLetBinding = myParse rawParseLetBinding+ parseModLongident :: Parser Longident parseModLongident = myParse rawParseModLongident @@ -1214,6 +1246,9 @@ parseSimpleExpr :: Parser Expression parseSimpleExpr = myParse rawParseSimpleExpr +parseSimplePattern :: Parser Pattern+parseSimplePattern = myParse rawParseSimplePattern+ parseStructure :: Parser Structure parseStructure = myParse rawParseStructure @@ -1228,5 +1263,28 @@  myParse :: Alex a -> String -> Either String a myParse = flip runAlex++negString :: String -> String+negString f =+  if length f > 0 && f !! 0 == '-'+  then tail f+  else '-' : f++mkuminus :: String -> Expression -> Expression+mkuminus name arg =+  case (name, pexpDesc arg) of+    ("-",  PexpConstant (PconstInteger n m)) -> mkexp $ PexpConstant $ PconstInteger (negString n) m+    ("-",  PexpConstant (PconstFloat   f m)) -> mkexp $ PexpConstant $ PconstFloat   (negString f) m+    ("-.", PexpConstant (PconstFloat   f m)) -> mkexp $ PexpConstant $ PconstFloat   (negString f) m+    _                                        -> mkexp $ PexpApply (mkOperator ("~" ++ name) 1) [(Nolabel, arg)]++mkuplus :: String -> Expression -> Expression+mkuplus name arg =+  let desc = pexpDesc arg in+  case (name, desc) of+    ("+",  PexpConstant (PconstInteger _ _)) -> mkexp desc+    ("+",  PexpConstant (PconstFloat   _ _)) -> mkexp desc+    ("+.", PexpConstant (PconstFloat   _ _)) -> mkexp desc+    _                                        -> mkexp $ PexpApply (mkOperator ("~" ++ name) 1) [(Nolabel, arg)]  }
− lib/Language/OCaml/Parser/Implementation.hs
@@ -1,13 +0,0 @@-module Language.OCaml.Parser.Implementation-  ( implementationP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Structure-import Language.OCaml.Parser.Utils.Utils-import Language.OCaml.Parser.Utils.Types--implementationP :: Parser Structure-implementationP = ocamlSpace *> structureP <* eof
− lib/Language/OCaml/Parser/Internal.hs
@@ -1,200 +0,0 @@-module Language.OCaml.Parser.Internal-  ( module Language.OCaml.Parser.Tokens-  , Parser-  , attributeP-  , attributesP-  , barConstructorDeclarationP-  , constantP-  , constrIdentP-  , constrLongidentP-  , constructorArgumentsP-  , constructorDeclarationP-  , constructorDeclarationsP-  , coreTypeP-  , coreType2P-  , coreTypeCommaListP-  , coreTypelistP-  , exprP-  , generalizedConstructorArgumentsP-  , identP-  , implementationP-  , labeledSimpleExprP-  , lblExprP-  , lblExprListP-  , letBindingP-  , letBindingBodyP-  , matchCaseP-  , modLongidentP-  , openStatementP-  , patternP-  , patternNoExnP-  , postItemAttributesP-  , recordExprP-  , seqExprP-  , simpleCoreTypeP-  , simpleCoreType2P-  , simpleCoreTypeOrTupleP-  , simpleExprP-  , simpleLabeledExprListP-  , simplePatternP-  , structureP-  , structureItemP-  , typeDeclarationP-  , typeDeclarationsP-  , typeKindP-  , valIdentP-  , valLongidentP-  ) where--import           Language.OCaml.Definitions.Parsing.ASTTypes-import           Language.OCaml.Definitions.Parsing.Parser.LetBindings-import           Language.OCaml.Definitions.Parsing.ParseTree-import qualified Language.OCaml.Parser.Attribute-import qualified Language.OCaml.Parser.Attributes-import qualified Language.OCaml.Parser.BarConstructorDeclaration-import           Language.OCaml.Parser.Common-import           Language.OCaml.Parser.Constant-import           Language.OCaml.Parser.ConstrIdent-import           Language.OCaml.Parser.ConstrLongident-import qualified Language.OCaml.Parser.ConstructorArguments-import qualified Language.OCaml.Parser.ConstructorDeclaration-import qualified Language.OCaml.Parser.ConstructorDeclarations-import           Language.OCaml.Parser.CoreType-import qualified Language.OCaml.Parser.CoreType2-import qualified Language.OCaml.Parser.CoreTypeCommaList-import qualified Language.OCaml.Parser.CoreTypeList-import qualified Language.OCaml.Parser.Expr-import qualified Language.OCaml.Parser.GeneralizedConstructorArguments-import           Language.OCaml.Parser.Implementation-import qualified Language.OCaml.Parser.LabeledSimpleExpr-import qualified Language.OCaml.Parser.LblExpr-import qualified Language.OCaml.Parser.LblExprList-import qualified Language.OCaml.Parser.LetBinding-import qualified Language.OCaml.Parser.LetBindingBody-import qualified Language.OCaml.Parser.MatchCase-import           Language.OCaml.Parser.ModLongident-import           Language.OCaml.Parser.OpenStatement-import           Language.OCaml.Parser.Pattern-import           Language.OCaml.Parser.PatternNoExn-import qualified Language.OCaml.Parser.PostItemAttributes-import qualified Language.OCaml.Parser.RecordExpr-import qualified Language.OCaml.Parser.SeqExpr-import qualified Language.OCaml.Parser.SimpleCoreType-import qualified Language.OCaml.Parser.SimpleCoreType2-import qualified Language.OCaml.Parser.SimpleCoreTypeOrTuple-import qualified Language.OCaml.Parser.SimpleExpr-import qualified Language.OCaml.Parser.SimpleLabeledExprList-import qualified Language.OCaml.Parser.SimplePattern-import           Language.OCaml.Parser.Structure-import qualified Language.OCaml.Parser.StructureItem-import           Language.OCaml.Parser.Tokens-import qualified Language.OCaml.Parser.TypeDeclaration-import qualified Language.OCaml.Parser.TypeDeclarations-import qualified Language.OCaml.Parser.TypeKind-import           Language.OCaml.Parser.ValIdent-import           Language.OCaml.Parser.ValLongident-import           Language.OCaml.Parser.Utils.Types---- Tying the knots for our clients!--attributeP :: Parser (Loc String, Payload)-attributeP = Language.OCaml.Parser.Attribute.attributeP structureP--attributesP :: Parser [(Loc String, Payload)]-attributesP = Language.OCaml.Parser.Attributes.attributesP structureP--barConstructorDeclarationP :: Parser ConstructorDeclaration-barConstructorDeclarationP =-  Language.OCaml.Parser.BarConstructorDeclaration.barConstructorDeclarationP structureP coreTypeP--constructorArgumentsP :: Parser ConstructorArguments-constructorArgumentsP =-  Language.OCaml.Parser.ConstructorArguments.constructorArgumentsP coreTypeP--constructorDeclarationP :: Parser ConstructorDeclaration-constructorDeclarationP =-  Language.OCaml.Parser.ConstructorDeclaration.constructorDeclarationP structureP coreTypeP--constructorDeclarationsP :: Parser [ConstructorDeclaration]-constructorDeclarationsP =-  Language.OCaml.Parser.ConstructorDeclarations.constructorDeclarationsP structureP coreTypeP--coreType2P :: Parser CoreType-coreType2P = Language.OCaml.Parser.CoreType2.coreType2P coreTypeP--coreTypeCommaListP :: Parser [CoreType]-coreTypeCommaListP =-  Language.OCaml.Parser.CoreTypeCommaList.coreTypeCommaListP coreTypeP--coreTypelistP :: Parser [CoreType]-coreTypelistP = Language.OCaml.Parser.CoreTypeList.coreTypelistP coreTypeP--exprP :: Parser Expression-exprP = Language.OCaml.Parser.Expr.exprP structureP seqExprP--generalizedConstructorArgumentsP :: Parser (ConstructorArguments, Maybe a)-generalizedConstructorArgumentsP =-  Language.OCaml.Parser.GeneralizedConstructorArguments.generalizedConstructorArgumentsP-  coreTypeP--lblExprP :: Parser (Loc Longident, Expression)-lblExprP = Language.OCaml.Parser.LblExpr.lblExprP exprP--lblExprListP :: Parser [(Loc Longident, Expression)]-lblExprListP = Language.OCaml.Parser.LblExprList.lblExprListP exprP--labeledSimpleExprP :: Parser (ArgLabel, Expression)-labeledSimpleExprP =-  Language.OCaml.Parser.LabeledSimpleExpr.labeledSimpleExprP seqExprP exprP--letBindingP :: Parser LetBindings-letBindingP =-  Language.OCaml.Parser.LetBinding.letBindingP structureP seqExprP--letBindingBodyP :: Parser (Pattern, Expression)-letBindingBodyP =-  Language.OCaml.Parser.LetBindingBody.letBindingBodyP seqExprP--matchCaseP :: Parser Case-matchCaseP = Language.OCaml.Parser.MatchCase.matchCaseP seqExprP--postItemAttributesP :: Parser [(Loc String, Payload)]-postItemAttributesP = Language.OCaml.Parser.PostItemAttributes.postItemAttributesP structureP--recordExprP :: Parser (Maybe Expression, [(Loc Longident, Expression)])-recordExprP = Language.OCaml.Parser.RecordExpr.recordExprP exprP simpleExprP--seqExprP :: Parser Expression-seqExprP = Language.OCaml.Parser.SeqExpr.seqExprP structureP--simpleCoreTypeP :: Parser CoreType-simpleCoreTypeP = Language.OCaml.Parser.SimpleCoreType.simpleCoreTypeP coreTypeP--simpleCoreType2P :: Parser CoreType-simpleCoreType2P = Language.OCaml.Parser.SimpleCoreType2.simpleCoreType2P coreTypeP--simpleCoreTypeOrTupleP :: Parser CoreType-simpleCoreTypeOrTupleP =-  Language.OCaml.Parser.SimpleCoreTypeOrTuple.simpleCoreTypeOrTupleP coreTypeP--simpleExprP :: Parser Expression-simpleExprP = Language.OCaml.Parser.SimpleExpr.simpleExprP seqExprP exprP--simpleLabeledExprListP :: Parser [(ArgLabel, Expression)]-simpleLabeledExprListP =-  Language.OCaml.Parser.SimpleLabeledExprList.simpleLabeledExprListP seqExprP exprP--simplePatternP :: Parser Pattern-simplePatternP = Language.OCaml.Parser.SimplePattern.simplePatternP patternP--structureItemP :: Parser StructureItem-structureItemP = Language.OCaml.Parser.StructureItem.structureItemP structureP--typeDeclarationP :: Parser (RecFlag, TypeDeclaration)-typeDeclarationP = Language.OCaml.Parser.TypeDeclaration.typeDeclarationP structureP--typeDeclarationsP :: Parser (RecFlag, [TypeDeclaration])-typeDeclarationsP = Language.OCaml.Parser.TypeDeclarations.typeDeclarationsP structureP--typeKindP :: Parser (TypeKind, PrivateFlag, Maybe CoreType)-typeKindP = Language.OCaml.Parser.TypeKind.typeKindP structureP
− lib/Language/OCaml/Parser/Label.hs
@@ -1,9 +0,0 @@-module Language.OCaml.Parser.Label-  ( labelP-  ) where--import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--labelP :: Parser String-labelP = lIdentT
− lib/Language/OCaml/Parser/LabelDeclaration.hs
@@ -1,24 +0,0 @@-module Language.OCaml.Parser.LabelDeclaration-  ( labelDeclarationP-  ) where--import Data.Default-import Text.Megaparsec                                   hiding (label)--import Language.OCaml.Definitions.Parsing.ASTHelper.Type as Type-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Label-import Language.OCaml.Parser.MutableFlag-import Language.OCaml.Parser.PolyTypeNoAttr-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--labelDeclarationP :: Parser LabelDeclaration-labelDeclarationP = try $ do-  _mut <- mutableFlagP-  label <- labelP-  colonT-  t <- polyTypeNoAttrP-  -- TODO: attributes-  return $ field def (mkRHS label 2) t -- FIXME: def
− lib/Language/OCaml/Parser/LabelDeclarationSemi.hs
@@ -1,26 +0,0 @@-module Language.OCaml.Parser.LabelDeclarationSemi-  ( labelDeclarationSemiP-  ) where--import Data.Default-import Text.Megaparsec                                   hiding (label)--import Language.OCaml.Definitions.Parsing.ASTHelper.Type as Type-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Label-import Language.OCaml.Parser.MutableFlag-import Language.OCaml.Parser.PolyTypeNoAttr-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--labelDeclarationSemiP :: Parser LabelDeclaration-labelDeclarationSemiP = try $ do-  _mut <- mutableFlagP-  label <- labelP-  colonT-  t <- polyTypeNoAttrP-  -- TODO: attributes-  semiT-  -- TODO: attributes-  return $ Type.field def (mkRHS label 2) t -- FIXME: def
− lib/Language/OCaml/Parser/LabelDeclarations.hs
@@ -1,20 +0,0 @@-module Language.OCaml.Parser.LabelDeclarations-  ( labelDeclarationsP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.LabelDeclaration-import Language.OCaml.Parser.LabelDeclarationSemi-import Language.OCaml.Parser.Utils.Types--labelDeclarationsP :: Parser [LabelDeclaration]-labelDeclarationsP = choice-  [ do-    h <- labelDeclarationSemiP-    t <- labelDeclarationsP-    return $ h : t-  , (: []) <$> labelDeclarationSemiP-  , (: []) <$> labelDeclarationP-  ]
− lib/Language/OCaml/Parser/LabelLongident.hs
@@ -1,20 +0,0 @@-module Language.OCaml.Parser.LabelLongident-  ( labelLongidentP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.ModLongident-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--labelLongidentP :: Parser Longident-labelLongidentP = choice-  [ Lident <$> lIdentT-  , do-    m <- modLongidentP-    dotT-    i <- lIdentT-    return $ Ldot m i-  ]
− lib/Language/OCaml/Parser/LabeledSimpleExpr.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.LabeledSimpleExpr-  ( labeledSimpleExprP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.SimpleExpr-import Language.OCaml.Parser.Utils.Types--labeledSimpleExprP :: Parser Expression -> Parser Expression -> Parser (ArgLabel, Expression)-labeledSimpleExprP seqExprP exprP = choice-  [ do-    e <- simpleExprP seqExprP exprP-    return (Nolabel, e)-    -- TODO: labelExpr-  ]
− lib/Language/OCaml/Parser/LabeledSimplePattern.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.LabeledSimplePattern-  ( labeledSimplePatternP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.SimplePattern-import Language.OCaml.Parser.Utils.Types--labeledSimplePatternP :: Parser Pattern -> Parser (ArgLabel, Maybe a, Pattern)-labeledSimplePatternP patternP = choice-  [ -- TODO: lots of things-    do-      p <- simplePatternP patternP-      return (Nolabel, Nothing, p)-  ]
− lib/Language/OCaml/Parser/LblExpr.hs
@@ -1,23 +0,0 @@-module Language.OCaml.Parser.LblExpr-  ( lblExprP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.LabelLongident-import Language.OCaml.Parser.OptTypeConstraint-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--lblExprP :: Parser Expression -> Parser (Loc Longident, Expression)-lblExprP exprP = choice-  [ do-    i <- labelLongidentP-    c <- optTypeConstraintP-    equalT-    e <- exprP-    return (mkRHS i 1, mkexpOptConstraint e c)-  ]
− lib/Language/OCaml/Parser/LblExprList.hs
@@ -1,31 +0,0 @@-module Language.OCaml.Parser.LblExprList-  ( lblExprListP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.LblExpr-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types---- FIXME: Right now, this is made to look like the OCaml parser, but we could--- optimize everything by factoring out the left parsers that are the same.--lblExprListP :: Parser Expression -> Parser [(Loc Longident, Expression)]-lblExprListP exprP = choice-  [ try $ do-    e <- lblExprP'-    semiT-    l <- lblExprListP'-    return $ e : l-  , try $ do-    e <- lblExprP'-    semiT-    return [e]-  , (: []) <$> lblExprP'-  ]-  where-    lblExprP'      = lblExprP      exprP-    lblExprListP' = lblExprListP exprP
− lib/Language/OCaml/Parser/LblPattern.hs
@@ -1,29 +0,0 @@-module Language.OCaml.Parser.LblPattern-  ( lblPatternP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.LabelLongident-import Language.OCaml.Parser.OptPatternTypeConstraint-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--lblPatternP :: Parser Pattern -> Parser (Loc Longident, Pattern)-lblPatternP patternP = choice-  [ do-    (i, c) <- try $ do-      i <- labelLongidentP-      c <- optPatternTypeConstraintP-      equalT-      return (i, c)-    p <- patternP-    return (mkRHS i 1, mkpatOptConstraint p c)-  , do-    i <- labelLongidentP-    c <- optPatternTypeConstraintP-    return (mkRHS i 1, mkpatOptConstraint (patOfLabel i 1) c)-  ]
− lib/Language/OCaml/Parser/LblPatternList.hs
@@ -1,40 +0,0 @@-module Language.OCaml.Parser.LblPatternList-  ( lblPatternListP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.LblPattern-import Language.OCaml.Parser.OptSemi-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types---- FIXME: Right now, this is made to look like the OCaml parser, but we could--- optimize everything by factoring out the left parsers that are the same.--lblPatternListP :: Parser Pattern -> Parser ([(Loc Longident, Pattern)], ClosedFlag)-lblPatternListP patternP = choice-  [ try $ do-    p <- lblPatternP'-    semiT-    (fields, closed) <- lblPatternListP'-    return (p : fields, closed)-  , try $ do-    p <- lblPatternP'-    semiT-    underscoreT-    optSemiP-    return ([p], Open)-  , try $ do-    p <- lblPatternP'-    semiT-    return ([p], Closed)-  , do-    p <- lblPatternP'-    return ([p], Closed)-  ]-  where-    lblPatternP'      = lblPatternP      patternP-    lblPatternListP' = lblPatternListP patternP
− lib/Language/OCaml/Parser/LetBinding.hs
@@ -1,23 +0,0 @@-module Language.OCaml.Parser.LetBinding-  ( letBindingP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.Parser.LetBindings-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.LetBindingBody-import Language.OCaml.Parser.PostItemAttributes-import Language.OCaml.Parser.RecFlag-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--letBindingP :: Parser Structure -> Parser Expression -> Parser LetBindings-letBindingP structureP seqExprP = do-  try letT-  -- TODO: extAttributes-  r <- recFlagP-  b <- letBindingBodyP seqExprP-  _a <- postItemAttributesP structureP-  return $ mklbs Nothing r (mklb True b []) -- FIXME
− lib/Language/OCaml/Parser/LetBindingBody.hs
@@ -1,61 +0,0 @@-module Language.OCaml.Parser.LetBindingBody-  ( letBindingBodyP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.CoreType-import Language.OCaml.Parser.FunBinding-import Language.OCaml.Parser.Pattern-import Language.OCaml.Parser.PatternNoExn-import Language.OCaml.Parser.SimplePatternNotIdent-import Language.OCaml.Parser.StrictBinding-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.TypeConstraint-import Language.OCaml.Parser.ValIdent-import Language.OCaml.Parser.Utils.Types--letBindingBodyP :: Parser Expression -> Parser (Pattern, Expression)-letBindingBodyP seqExprP = choice-  [ try $ do-    i <- valIdentP-    b <- strictBindingP seqExprP (funBindingP seqExprP)-    return (mkpatvar i 1, b)-  , do-    (i, c) <- try $ do-      i <- valIdentP-      c <- typeConstraintP-      return (i, c)-    equalT-    e <- seqExprP-    let v = mkpatvar i 1-    let t = case c of-          (Just t', Nothing) -> t'-          (_,       Just t') -> t'-          _ -> error "This should not happen"-    return ( ghpat $ PpatConstraint v (ghtyp $ PtypPoly [] t)-           , mkexpConstraint e c-           )-  -- TODO: typevarList-  -- TODO: lidentList-  , do-    p <- try $ do-      p <- patternNoExnP-      equalT-      return p-    e <- seqExprP-    return (p, e)-  , do-    p <- try $ do-      p <- simplePatternNotIdentP patternP-      colonT-      return p-    t <- coreTypeP-    equalT-    e <- seqExprP-    return ( ghpat $ PpatConstraint p t-           , e-           )-  ]
− lib/Language/OCaml/Parser/LetBindings.hs
@@ -1,28 +0,0 @@-module Language.OCaml.Parser.LetBindings-  ( letBindingsP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Definitions.Parsing.Parser.LetBindings-import Language.OCaml.Parser.Common--- import Language.OCaml.Parser.Attributes-import Language.OCaml.Parser.LetBinding-import Language.OCaml.Parser.LetBindingBody-import Language.OCaml.Parser.PostItemAttributes-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--letBindingsP :: Parser Structure -> Parser Expression -> Parser LetBindings-letBindingsP structureP seqExprP = leftRecursive-  [ letBindingP structureP seqExprP-  ]-  [ do-    try $ andT-    -- a <- attributesP-    b <- letBindingBodyP seqExprP-    _p <- postItemAttributesP structureP-    return $ \ x -> addlb x (mklb False b []) -- FIXME-  ]
− lib/Language/OCaml/Parser/MatchCase.hs
@@ -1,33 +0,0 @@-module Language.OCaml.Parser.MatchCase-  ( matchCaseP-  ) where--import Data.Default-import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTHelper.Exp as Exp hiding (try)-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Pattern-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--matchCaseP :: Parser Expression -> Parser Case-matchCaseP seqExprP = choice-  [ do-    p <- try $ do-      p <- patternP-      minusGreaterT-      return p-    e <- seqExprP-    return $ Exp.case' def p e-  , do-    p <- try $ do-      p <- patternP-      whenT-      return p-    w <- seqExprP-    minusGreaterT-    e <- seqExprP-    return $ Exp.case' (def { guard = Just w }) p e-  -- TODO: others-  ]
− lib/Language/OCaml/Parser/MatchCases.hs
@@ -1,13 +0,0 @@-module Language.OCaml.Parser.MatchCases-  ( matchCasesP-  ) where--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.MatchCase-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--matchCasesP :: Parser Expression -> Parser [Case]-matchCasesP seqExprP =-  chainl1' (matchCaseP seqExprP) (barT *> return (flip (:))) (: [])
− lib/Language/OCaml/Parser/ModExtLongident.hs
@@ -1,21 +0,0 @@-module Language.OCaml.Parser.ModExtLongident-  ( modExtLongidentP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--modExtLongidentP :: Parser Longident-modExtLongidentP = leftRecursive-  [ Lident <$> uIdentT-  ]-  [ try $ do-    dotT-    i <- uIdentT-    return $ \ x -> Ldot x i-    -- TODO: parens-  ]
− lib/Language/OCaml/Parser/ModLongident.hs
@@ -1,11 +0,0 @@-module Language.OCaml.Parser.ModLongident-  ( modLongidentP-  ) where--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--modLongidentP :: Parser Longident-modLongidentP = chainl1try' uIdentT (dotT *> return Ldot) Lident
− lib/Language/OCaml/Parser/ModuleBinding.hs
@@ -1,25 +0,0 @@-module Language.OCaml.Parser.ModuleBinding-  ( moduleBindingP-  ) where--import Data.Default-import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTHelper.Mb as Mb-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.ModuleBindingBody-import Language.OCaml.Parser.PostItemAttributes-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--moduleBindingP :: Parser Structure -> Parser (ModuleBinding, ())-moduleBindingP structureP = do-  try $ moduleT-  -- TODO: extAttributes-  i <- uIdentT-  b <- moduleBindingBodyP-  _a <- postItemAttributesP structureP-  return $ (Mb.mk def (mkRHS i 3) b -- FIXME-           , () -- FIXME-           )
− lib/Language/OCaml/Parser/ModuleBindingBody.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.ModuleBindingBody-  ( moduleBindingBodyP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.ModuleExpr-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--moduleBindingBodyP :: Parser ModuleExpr-moduleBindingBodyP = choice-  [ do-    try $ equalT-    moduleExprP-    -- TODO: rest-  ]
− lib/Language/OCaml/Parser/ModuleExpr.hs
@@ -1,17 +0,0 @@-module Language.OCaml.Parser.ModuleExpr-  ( moduleExprP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.ModLongident-import Language.OCaml.Parser.Utils.Types--moduleExprP :: Parser ModuleExpr-moduleExprP = choice-  [ do-    i <- modLongidentP-    return . mkmod Nothing $ PmodIdent (mkRHS i 1)-  ]
− lib/Language/OCaml/Parser/MutableFlag.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.MutableFlag-  ( mutableFlagP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--mutableFlagP :: Parser MutableFlag-mutableFlagP = choice-  [ mutableT *> return Mutable-  , return Immutable-  ]
− lib/Language/OCaml/Parser/NonRecFlag.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.NonRecFlag-  ( nonrecFlagP-  ) where--import           Text.Megaparsec--import qualified Language.OCaml.Definitions.Parsing.ASTTypes as ASTTypes-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.Utils.Types--nonrecFlagP :: Parser ASTTypes.RecFlag-nonrecFlagP = choice-  [ nonrecT *> return ASTTypes.NonRecursive-  , return ASTTypes.Recursive-  ]
− lib/Language/OCaml/Parser/OpenStatement.hs
@@ -1,37 +0,0 @@-{-# 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-    )
− lib/Language/OCaml/Parser/Operator.hs
@@ -1,17 +0,0 @@-module Language.OCaml.Parser.Operator-  ( operatorP-  ) where--import Text.Megaparsec--import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--operatorP :: Parser String-operatorP = choice-  [-    -- TODO-    bangT  *> return "!"-  , plusT  *> return "+"-  , minusT *> return "-"-  ]
− lib/Language/OCaml/Parser/OptBar.hs
@@ -1,14 +0,0 @@-module Language.OCaml.Parser.OptBar-  ( optBarP-  ) where--import Text.Megaparsec--import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--optBarP :: Parser ()-optBarP = choice-  [ barT *> return ()-  , return ()-  ]
− lib/Language/OCaml/Parser/OptPatternTypeConstraint.hs
@@ -1,16 +0,0 @@-module Language.OCaml.Parser.OptPatternTypeConstraint-  ( optPatternTypeConstraintP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.CoreType-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--optPatternTypeConstraintP :: Parser (Maybe CoreType)-optPatternTypeConstraintP = choice-  [ Just <$> (colonT *> coreTypeP)-  , return Nothing-  ]
− lib/Language/OCaml/Parser/OptSemi.hs
@@ -1,14 +0,0 @@-module Language.OCaml.Parser.OptSemi-  ( optSemiP-  ) where--import Text.Megaparsec--import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--optSemiP :: Parser ()-optSemiP = choice-  [ semiT-  , return ()-  ]
− lib/Language/OCaml/Parser/OptTypeConstraint.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.OptTypeConstraint-  ( optTypeConstraintP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.TypeConstraint-import Language.OCaml.Parser.Utils.Types--optTypeConstraintP :: Parser (Maybe (Maybe CoreType, Maybe CoreType))-optTypeConstraintP = choice-  [ Just <$> typeConstraintP-  , return Nothing-  ]
− lib/Language/OCaml/Parser/OptionalTypeParameter.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.OptionalTypeParameter-  ( optionalTypeParameterP-  ) where--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.OptionalTypeVariable-import Language.OCaml.Parser.TypeVariance-import Language.OCaml.Parser.Utils.Types--optionalTypeParameterP :: Parser (CoreType, Variance)-optionalTypeParameterP = do-  v <- typeVarianceP-  t <- optionalTypeVariableP-  return (t, v)
− lib/Language/OCaml/Parser/OptionalTypeParameters.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.OptionalTypeParameters-  ( optionalTypeParametersP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.OptionalTypeParameter-import Language.OCaml.Parser.Utils.Types-import Language.OCaml.Parser.Utils.Utils--optionalTypeParametersP :: Parser [(CoreType, Variance)]-optionalTypeParametersP = choice-  [ (: []) <$> optionalTypeParameterP-  , parens (many optionalTypeParameterP)-  , pure []-  ]
− lib/Language/OCaml/Parser/OptionalTypeVariable.hs
@@ -1,12 +0,0 @@-module Language.OCaml.Parser.OptionalTypeVariable-  ( optionalTypeVariableP-  ) where---import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--optionalTypeVariableP :: Parser CoreType-optionalTypeVariableP = mktyp . PtypVar <$> (quoteT *> identP)
− lib/Language/OCaml/Parser/OverrideFlag.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.OverrideFlag-  ( overrideFlagP-  ) where--import           Text.Megaparsec--import qualified Language.OCaml.Definitions.Parsing.ASTTypes as ASTTypes-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.Utils.Types--overrideFlagP :: Parser ASTTypes.OverrideFlag-overrideFlagP = choice-  [ bangT *> return ASTTypes.Override-  , return ASTTypes.Fresh-  ]
− lib/Language/OCaml/Parser/Pattern.hs
@@ -1,40 +0,0 @@-module Language.OCaml.Parser.Pattern-  ( patternP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.PatternGen-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.ValIdent-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--patternP :: Parser Pattern-patternP = choice-  [ try $ parser <* notFollowedBy commaT-  , mkpat . PpatTuple <$>-    chainl1' parser (commaT *> (return $ flip (:))) (: [])-  ]-  where-    parser = leftRecursive-      [ patternGenP patternP-      ]-      -- pattern AS valIdent-      [ do-        try $ asT-        i <- valIdentP-        return $ \ x -> mkpat $ PpatAlias x (mkRHS i 3)-      -- pattern COLONCOLON pattern-      , do-        try $ colonColonT-        p2 <- patternP-        return $ \ p1 -> mkpatCons (rhsLoc 2) (ghpat $ PpatTuple [p1, p2]) (symbolRLoc ())-      , do-        try $ barT-        p <- patternP-        return $ \ x -> mkpat $ PpatOr x p-      -- TODO: bunch of other patterns-      ]
− lib/Language/OCaml/Parser/PatternGen.hs
@@ -1,22 +0,0 @@-module Language.OCaml.Parser.PatternGen-  ( patternGenP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.ConstrLongident-import Language.OCaml.Parser.SimplePattern-import Language.OCaml.Parser.Utils.Types--patternGenP :: Parser Pattern -> Parser Pattern-patternGenP patternP = choice-  [ try $ do-    i <- constrLongidentP-    p <- patternP-    return $ mkpat $ PpatConstruct (mkRHS i 1) (Just p)-  , try $ simplePatternP'-  ]-  where-    simplePatternP' = simplePatternP patternP
− lib/Language/OCaml/Parser/PatternNoExn.hs
@@ -1,34 +0,0 @@-module Language.OCaml.Parser.PatternNoExn-  ( patternNoExnP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Pattern-import Language.OCaml.Parser.PatternGen-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.ValIdent-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--patternNoExnP :: Parser Pattern-patternNoExnP = leftRecursive-  [ patternGenP patternP-  ]-  [ do-    try asT-    i <- valIdentP-    return $ \ x -> mkpat $ PpatAlias x (mkRHS i 3)-  -- TODO: patternNoExnCommaList-  -- , do-  --   try colonColonT-  --   p <- patternP-  --   return $ mkpatCons _ _-  , do-    try barT-    p <- patternP-    return $ \ x -> mkpat $ PpatOr x p-  -- TODO: attribute-  ]
− lib/Language/OCaml/Parser/PatternSemiList.hs
@@ -1,18 +0,0 @@-module Language.OCaml.Parser.PatternSemiList-  ( patternSemiListP-  ) where--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--patternSemiListP :: Parser Pattern -> Parser [Pattern]-patternSemiListP patternP = leftRecursive-  [ (: []) <$> patternP-  ]-  [ do-    semiT-    e2 <- patternP-    return $ \ e1 -> e2 : e1-  ]
− lib/Language/OCaml/Parser/Payload.hs
@@ -1,13 +0,0 @@-module Language.OCaml.Parser.Payload-  ( payloadP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Utils.Types--payloadP :: Parser Structure -> Parser Payload-payloadP structureP = choice-  [ PStr <$> structureP-  ]
− lib/Language/OCaml/Parser/PolyTypeNoAttr.hs
@@ -1,16 +0,0 @@-module Language.OCaml.Parser.PolyTypeNoAttr-  ( polyTypeNoAttrP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.CoreType-import Language.OCaml.Parser.CoreTypeNoAttr-import Language.OCaml.Parser.Utils.Types--polyTypeNoAttrP :: Parser CoreType-polyTypeNoAttrP = choice-  [ coreTypenoAttrP coreTypeP-  -- TODO-  ]
− lib/Language/OCaml/Parser/PostItemAttribute.hs
@@ -1,20 +0,0 @@-module Language.OCaml.Parser.PostItemAttribute-  ( postItemAttributeP-  ) where--import           Text.Megaparsec--import qualified Language.OCaml.Definitions.Parsing.ASTTypes  as ASTTypes-import           Language.OCaml.Definitions.Parsing.ParseTree-import           Language.OCaml.Parser.AttrId-import           Language.OCaml.Parser.Payload-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.Utils.Types--postItemAttributeP :: Parser Structure -> Parser (ASTTypes.Loc String, Payload)-postItemAttributeP structureP = do-  try $ lBracketAtAtT-  i <- attrIdP-  p <- payloadP structureP-  rBracketT-  return (i, p)
− lib/Language/OCaml/Parser/PostItemAttributes.hs
@@ -1,13 +0,0 @@-module Language.OCaml.Parser.PostItemAttributes-  ( postItemAttributesP-  ) where--import           Text.Megaparsec--import qualified Language.OCaml.Definitions.Parsing.ASTTypes  as ASTTypes-import           Language.OCaml.Definitions.Parsing.ParseTree-import           Language.OCaml.Parser.PostItemAttribute-import           Language.OCaml.Parser.Utils.Types--postItemAttributesP :: Parser Structure -> Parser [(ASTTypes.Loc String, Payload)]-postItemAttributesP structureP = many (postItemAttributeP structureP)
− lib/Language/OCaml/Parser/PrivateFlag.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.PrivateFlag-  ( privateFlagP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--privateFlagP :: Parser PrivateFlag-privateFlagP = choice-  [ privateT *> return Private-  , return Public-  ]
− lib/Language/OCaml/Parser/RecFlag.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.RecFlag-  ( recFlagP-  ) where--import           Text.Megaparsec--import qualified Language.OCaml.Definitions.Parsing.ASTTypes as ASTTypes-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.Utils.Types--recFlagP :: Parser ASTTypes.RecFlag-recFlagP = choice-  [ recT *> return ASTTypes.Recursive-  , return ASTTypes.NonRecursive-  ]
− lib/Language/OCaml/Parser/RecordExpr.hs
@@ -1,28 +0,0 @@-module Language.OCaml.Parser.RecordExpr-  ( recordExprP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.LblExprList-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--recordExprP ::-  Parser Expression -> Parser Expression -> Parser (Maybe Expression, [(Loc Longident, Expression)])-recordExprP exprP simpleExprP = choice-  [ do-    e <- try $ do-      e <- simpleExprP-      withT-      return e-    l <- lblExprListP'-    return (Just e, l)-  , do-    l <- lblExprListP'-    return (Nothing, l)-  ]-  where-    lblExprListP' = lblExprListP exprP
− lib/Language/OCaml/Parser/SeqExpr.hs
@@ -1,30 +0,0 @@-module Language.OCaml.Parser.SeqExpr-  ( seqExprP-  ) where--import Data.Default-import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTHelper.Exp as Exp hiding (try)-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Expr-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--seqExprP :: Parser Structure -> Parser Expression-seqExprP structureP = choice-  [ try $ do-    e <- exprP'-    semiT-    s <- seqExprP'-    return $ Exp.mk def (PexpSequence e s)-  , try $ do-    e <- exprP'-    semiT-    return e-  , try $ exprP'-  -- TODO: percent-  ]-  where-    exprP' = exprP structureP seqExprP'-    seqExprP' = seqExprP structureP
− lib/Language/OCaml/Parser/SigExceptionDeclaration.hs
@@ -1,39 +0,0 @@-{-# 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))-    , ()-    )
− lib/Language/OCaml/Parser/SimpleCoreType.hs
@@ -1,21 +0,0 @@-module Language.OCaml.Parser.SimpleCoreType-  ( simpleCoreTypeP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.CoreTypeCommaList-import Language.OCaml.Parser.SimpleCoreType2-import Language.OCaml.Parser.Utils.Types-import Language.OCaml.Parser.Utils.Utils--simpleCoreTypeP :: Parser CoreType -> Parser CoreType-simpleCoreTypeP coreTypeP = choice-  [ try $ simpleCoreType2P coreTypeP-  , do-    l <- parens $ coreTypeCommaListP coreTypeP-    case l of-      [sty] -> return sty-      _ -> fail "Parse error"-  ]
− lib/Language/OCaml/Parser/SimpleCoreType2.hs
@@ -1,38 +0,0 @@-module Language.OCaml.Parser.SimpleCoreType2-  ( simpleCoreType2P-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.CoreTypeCommaList-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.TypeLongident-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--simpleCoreType2P :: Parser CoreType -> Parser CoreType-simpleCoreType2P coreTypeP = leftRecursive-  [ choice-    [ mktyp . PtypVar <$> try (quoteT *> identP)-    , mktyp . const PtypAny <$> underscoreT-    , try $ do-      t <- typeLongidentP-      return $ mktyp $ PtypConstr (mkRHS t 1) []-    , do-      lParenT-      l <- coreTypeCommaListP coreTypeP-      rParenT-      i <- typeLongidentP-      return . mktyp $ PtypConstr (mkRHS i 4)(reverse l)-    -- , do-    --   a <- chainl1' simpleCoreType2P _ _ -- (return $ \ a b -> PtypConstr (mkRHS b 2) [a])-    --   t <- typeLongidentP-    --   return $ mkTyp $ PtypConstr (mkRHS t 2) [a]-    ]-  ]-  [ do-    t <- typeLongidentP-    return $ \ x -> mktyp $ PtypConstr (mkRHS t 2) [x]-  ]
− lib/Language/OCaml/Parser/SimpleCoreTypeOrTuple.hs
@@ -1,26 +0,0 @@-module Language.OCaml.Parser.SimpleCoreTypeOrTuple-  ( simpleCoreTypeOrTupleP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.CoreTypeList-import Language.OCaml.Parser.SimpleCoreType-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--simpleCoreTypeOrTupleP :: Parser CoreType -> Parser CoreType-simpleCoreTypeOrTupleP coreTypeP = choice-  [ do-    t <- try $ do-      t <- simpleCoreTypeP'-      starT-      return t-    l <- coreTypelistP coreTypeP-    return . mktyp . PtypTuple $ t : reverse l-  , simpleCoreTypeP'-  ]-  where-    simpleCoreTypeP' = simpleCoreTypeP coreTypeP
− lib/Language/OCaml/Parser/SimpleDelimitedPattern.hs
@@ -1,45 +0,0 @@-module Language.OCaml.Parser.SimpleDelimitedPattern-  ( simpleDelimitedPatternP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.LblPatternList-import Language.OCaml.Parser.OptSemi-import Language.OCaml.Parser.PatternSemiList-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--simpleDelimitedPatternP :: Parser Pattern -> Parser Pattern-simpleDelimitedPatternP patternP = choice-  [ do-    (fields, closed) <- try $ do-      lBraceT-      lblPatternListP patternP-    rBraceT-    return $ mkpat $ PpatRecord fields closed-  , do-    l <- try $ do-      lBracketT-      l <- patternSemiListP patternP-      optSemiP-      return l-    rBracketT-    return $ mktailpat (rhsLoc 4) (reverse l)-  , do-    l <- try $ do-      lBracketBarT-      l <- patternSemiListP'-      optSemiP-      return l-    barRBracketT-    return $ mkpat $ PpatArray (reverse l)-  , do-    lBracketBarT-    barRBracketT-    return $ mkpat $ PpatArray []-  ]-  where-    patternSemiListP' = patternSemiListP patternP
− lib/Language/OCaml/Parser/SimpleExpr.hs
@@ -1,50 +0,0 @@-module Language.OCaml.Parser.SimpleExpr-  ( simpleExprP-  ) where--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Constant-import Language.OCaml.Parser.ConstrLongident-import Language.OCaml.Parser.ExprSemiList-import Language.OCaml.Parser.LabelLongident-import Language.OCaml.Parser.OptSemi-import Language.OCaml.Parser.RecordExpr-import Language.OCaml.Parser.ValLongident-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Combinators-import Language.OCaml.Parser.Utils.Types--simpleExprP :: Parser Expression -> Parser Expression -> Parser Expression-simpleExprP seqExprP exprP = leftRecursive-  [ do-    i <- valLongidentP-    return . mkexp $ PexpIdent (mkRHS i 1)-  , mkexp . PexpConstant <$> constantP-  , do-    i <- constrLongidentP-    return $ mkexp $ PexpConstruct (mkRHS i 1) Nothing-  , do-    lParenT-    e <- seqExprP-    rParenT-    return $ relocExp e-  , do-    lBracketT-    l <- exprSemiListP exprP-    optSemiP-    rBracketT-    return $ relocExp $ mktailexp (rhsLoc 4) (reverse l)-  , do-    lBraceT-    (exten, fields) <- recordExprP exprP simpleExprP'-    rBraceT-    return $ mkexp $ PexpRecord fields exten-  ]-  [ do-    dotT-    i <- labelLongidentP-    return $ \ x -> mkexp $ PexpField x (mkRHS i 3)-  ]-  where-    simpleExprP' = simpleExprP seqExprP exprP
− lib/Language/OCaml/Parser/SimpleLabeledExprList.hs
@@ -1,16 +0,0 @@-module Language.OCaml.Parser.SimpleLabeledExprList-  ( simpleLabeledExprListP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.LabeledSimpleExpr-import Language.OCaml.Parser.Utils.Types---- NOTE: the OCaml version builds the list backwards for efficiency reasons--- We call `reverse` to match it, even though it is inefficient.--- We could update this once the whole code base is ready. #FIXME-simpleLabeledExprListP :: Parser Expression -> Parser Expression -> Parser [(ArgLabel, Expression)]-simpleLabeledExprListP seqExprP exprP = reverse <$> many (labeledSimpleExprP seqExprP exprP)
− lib/Language/OCaml/Parser/SimplePattern.hs
@@ -1,21 +0,0 @@-module Language.OCaml.Parser.SimplePattern-  ( simplePatternP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.SimplePatternNotIdent-import Language.OCaml.Parser.ValIdent-import Language.OCaml.Parser.Utils.Types--simplePatternP :: Parser Pattern -> Parser Pattern-simplePatternP patternP = choice-  [ do-    i <- valIdentP-    return $ mkpat $ PpatVar $ mkRHS i 1-  , simplePatternNotIdentP'-  ]-  where-    simplePatternNotIdentP' = simplePatternNotIdentP patternP
− lib/Language/OCaml/Parser/SimplePatternNotIdent.hs
@@ -1,33 +0,0 @@-module Language.OCaml.Parser.SimplePatternNotIdent-  ( simplePatternNotIdentP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.ConstrLongident-import Language.OCaml.Parser.SimpleDelimitedPattern-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--simplePatternNotIdentP :: Parser Pattern -> Parser Pattern-simplePatternNotIdentP patternP = choice-  [ do-    underscoreT-    return $ mkpat $ PpatAny-  -- TODO: signed constants-  , do-    i <- constrLongidentP-    return $ mkpat $ PpatConstruct (mkRHS i 1) Nothing-  -- TODO: name_tag-  -- TODO: HASH-  , simpleDelimitedPatternP'-  , do-    lParenT-    p <- patternP-    rParenT-    return $ relocPat p-  ]-  where-    simpleDelimitedPatternP' = simpleDelimitedPatternP patternP
− lib/Language/OCaml/Parser/SingleAttrId.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.SingleAttrId-  ( singleAttrIdP-  ) where--import Text.Megaparsec--import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--singleAttrIdP :: Parser String-singleAttrIdP = choice-  [ lIdentT-  , uIdentT-  -- TODO-  ]
− lib/Language/OCaml/Parser/StrExceptionDeclaration.hs
@@ -1,15 +0,0 @@-module Language.OCaml.Parser.StrExceptionDeclaration-  ( strExceptionDeclarationP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.SigExceptionDeclaration-import Language.OCaml.Parser.Utils.Types--strExceptionDeclarationP :: Parser Structure -> Parser (ExtensionConstructor, ())-strExceptionDeclarationP structureP = choice-  [ sigExceptionDeclarationP structureP-    -- TODO-  ]
− lib/Language/OCaml/Parser/StrictBinding.hs
@@ -1,24 +0,0 @@-module Language.OCaml.Parser.StrictBinding-  ( strictBindingP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.LabeledSimplePattern-import Language.OCaml.Parser.Pattern-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--strictBindingP :: Parser Expression -> Parser Expression -> Parser Expression-strictBindingP seqExprP funBindingP = choice-  [ do-    try $ equalT-    seqExprP-  , do-    (l, o, p) <- labeledSimplePatternP patternP-    b <- funBindingP-    return $ ghexp $ PexpFun l o p b-    -- TODO-  ]
− lib/Language/OCaml/Parser/Structure.hs
@@ -1,39 +0,0 @@-module Language.OCaml.Parser.Structure-  ( structureP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.PostItemAttributes-import Language.OCaml.Parser.SeqExpr-import Language.OCaml.Parser.StructureItem-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Utils-import Language.OCaml.Parser.Utils.Types--structureP :: Parser Structure-structureP = ocamlSpace *> choice-  [ do-    e <- seqExprP structureP-    a <- postItemAttributesP structureP-    s <- structureTailP-    return $ textStr 1 ++ mkstrexp e a : s-  , structureTailP-  ]-  where-    structureTailP :: Parser [StructureItem]-    structureTailP = choice-      [ do-        (i, t) <- try $ do-          i <- structureItemP structureP-          t <- structureTailP-          return (i, t)-        return $ textStr 1 ++ i : t-      , do-        try $ semiSemiT-        s <- structureP-        return $ textStr 1 ++ s-      , ocamlSpace *> return []-      ]
− lib/Language/OCaml/Parser/StructureItem.hs
@@ -1,32 +0,0 @@-module Language.OCaml.Parser.StructureItem-  ( structureItemP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.LetBindings-import Language.OCaml.Parser.ModuleBinding-import Language.OCaml.Parser.OpenStatement-import Language.OCaml.Parser.SeqExpr-import Language.OCaml.Parser.StrExceptionDeclaration-import Language.OCaml.Parser.TypeDeclarations-import Language.OCaml.Parser.Utils.Types--structureItemP :: Parser Structure -> Parser StructureItem-structureItemP structureP = choice-  [ valOfLetBindings <$> letBindingsP structureP (seqExprP structureP)-  , do-    (nr, l) <- typeDeclarationsP structureP-    return $ mkstrExt (PstrType nr (reverse l)) Nothing -- FIXME: not Nothing-  , do-    (l, _ext) <- strExceptionDeclarationP structureP-    return $ mkstrExt (PstrException l) Nothing -- FIXME-  , do-    (body, _ext) <- openStatementP structureP-    return $ mkstrExt (PstrOpen body) Nothing -- FIXME-  , do-    (body, _ext) <- moduleBindingP structureP-    return $ mkstrExt (PstrModule body) Nothing -- FIXME-  ]
− lib/Language/OCaml/Parser/Tokens.hs
@@ -1,322 +0,0 @@-module Language.OCaml.Parser.Tokens-  ( andT-  , asT-  , atT-  , bangT-  , barT-  , barRBracketT-  , caretT-  , charT-  , colonT-  , colonColonT-  , colonGreaterT-  , commaT-  , dotT-  , elseT-  , equalT-  , exceptionT-  , falseT-  , funT-  , functionT-  , greaterT-  , ifT-  , inT-  , intT-  , lBraceT-  , lBracketT-  , lBracketAtT-  , lBracketAtAtT-  , lBracketBarT-  , lIdentT-  , lParenT-  , letT-  , matchT-  , minusT-  , minusGreaterT-  , moduleT-  , mutableT-  , nonrecT-  , ofT-  , openT-  , plusT-  , privateT-  , quoteT-  , rBraceT-  , rBracketT-  , rParenT-  , recT-  , semiT-  , semiSemiT-  , starT-  , stringT-  , thenT-  , trueT-  , typeT-  , uIdentT-  , underscoreT-  , whenT-  , withT-  ) where--import Data.Char-import Text.Megaparsec-import Text.Megaparsec.Char--import Language.OCaml.Parser.Utils.Utils-import Language.OCaml.Parser.Utils.Types--andT :: Parser ()-andT = rword "and"--asT :: Parser ()-asT = rword "as"--atT :: Parser ()-atT = symbol "@"--bangT :: Parser ()-bangT = symbol "!"--barT :: Parser ()-barT = symbol "|"--barRBracketT :: Parser ()-barRBracketT = symbol "|]"--binDigitChar :: Parser Char-binDigitChar = char '0' <|> char '1'--binLiteralP :: Parser String-binLiteralP = do -- WARNING: do not add `lexeme` here-  _ <- char '0'-  _ <- char 'b' <|> char 'B'-  h <- binDigitChar-  t <- many (binDigitChar <|> char '_')-  return $ h : t--caretT :: Parser ()-caretT = symbol "^"--charT :: Parser Char-charT = do-  symbol "'"-  c <- satisfy (not . (`elem` ['\\', '\'', '\010', '\013']))-  symbol "'"-  return c--colonT :: Parser ()-colonT = symbol ":"--colonColonT :: Parser ()-colonColonT = symbol "::"--colonGreaterT :: Parser ()-colonGreaterT = symbol ":>"--commaT :: Parser ()-commaT = symbol ","--decimalLiteralP :: Parser String-decimalLiteralP = do -- WARNING: do not add `lexeme` here-  h <- digitChar-  t <- many (digitChar <|> char '_')-  return $ h : t--dotT :: Parser ()-dotT = symbol "."--elseT :: Parser ()-elseT = rword "else"--equalT :: Parser ()-equalT = symbol "="--falseT :: Parser ()-falseT = rword "false"--funT :: Parser ()-funT = rword "fun"--functionT :: Parser ()-functionT = rword "function"--ifT :: Parser ()-ifT = rword "if"--exceptionT :: Parser ()-exceptionT = rword "exception"--greaterT :: Parser ()-greaterT = symbol ">"--hexLiteralP :: Parser String-hexLiteralP = do -- WARNING: do not add `lexeme` here-  _ <- char '0'-  _ <- char 'x' <|> char 'X'-  h <- hexDigitChar-  t <- many (hexDigitChar <|> char '_')-  return $ h : t--intLiteralP :: Parser String-intLiteralP = choice-  [ decimalLiteralP-  , hexLiteralP-  , octLiteralP-  , binLiteralP-  ]--inT :: Parser ()-inT = rword "in"--intT :: Parser (String, Maybe Char)-intT = lexeme $ do-  l <- intLiteralP-  m <- choice-    [ Just <$> literalModifierP-    , return Nothing-    ]-  return (l, m)--isBetween :: Char -> Char -> Char -> Bool-isBetween cmin c cmax = (vmin <= v && v <= vmax)-  where-    vmin = conv cmin-    v    = conv c-    vmax = conv cmax-    conv = ord--isModifier :: Char -> Bool-isModifier c = isBetween 'G' c 'Z' || isBetween 'g' c 'z'--literalModifierP :: Parser Char-literalModifierP = satisfy isModifier--identCharT :: Parser Char-identCharT = choice-  [ upperChar-  , lowerChar-  , char '_'-  , char '\''-  , digitChar-  ]--lBraceT :: Parser ()-lBraceT = symbol "{"--lBracketT :: Parser ()-lBracketT = symbol "["--lBracketAtT :: Parser ()-lBracketAtT = symbol "[@"--lBracketAtAtT :: Parser ()-lBracketAtAtT = symbol "[@@"--lBracketBarT :: Parser ()-lBracketBarT = symbol "[|"--lIdentT :: Parser String-lIdentT = identifier $ do-  c <- lowerChar-  cs <- many identCharT-  return $ c : cs--lParenT :: Parser ()-lParenT = symbol "("--letT :: Parser ()-letT = rword "let"--matchT :: Parser ()-matchT = rword "match"--minusT :: Parser ()-minusT = symbol "-"--minusGreaterT :: Parser ()-minusGreaterT = symbol "->"--moduleT :: Parser ()-moduleT = rword "module"--mutableT :: Parser ()-mutableT = rword "mutable"--nonrecT :: Parser ()-nonrecT = rword "nonrec"--octLiteralP :: Parser String-octLiteralP = do -- WARNING: do not add `lexeme` here-  _ <- char '0'-  _ <- char 'o' <|> char 'O'-  h <- octDigitChar-  t <- many (octDigitChar <|> char '_')-  return $ h : t--ofT :: Parser ()-ofT = rword "of"--openT :: Parser ()-openT = rword "open"--plusT :: Parser ()-plusT = symbol "+"--privateT :: Parser ()-privateT = rword "private"--quoteT :: Parser ()-quoteT = symbol "'"--rBraceT :: Parser ()-rBraceT = symbol "}"--rBracketT :: Parser ()-rBracketT = symbol "]"--rParenT :: Parser ()-rParenT = symbol ")"--recT :: Parser ()-recT = rword "rec"--semiT :: Parser ()-semiT = symbol ";"--semiSemiT :: Parser ()-semiSemiT = symbol ";;"--starT :: Parser ()-starT = symbol "*"---- FIXME: real strings have nesting comments and escape characters-stringT :: Parser (String, Maybe String)-stringT = lexeme $ do-  _ <- char '"'-  s <- many $ satisfy ((/=) '"')-  _ <- char '"'-  return (s, Nothing)--thenT :: Parser ()-thenT = rword "then"--trueT :: Parser ()-trueT = rword "true"--typeT :: Parser ()-typeT = rword "type"--uIdentT :: Parser String-uIdentT = identifier $ do-  c <- upperChar-  cs <- many identCharT-  return $ c : cs--underscoreT :: Parser ()-underscoreT = symbol "_"--whenT :: Parser ()-whenT = rword "when"--withT :: Parser ()-withT = rword "with"
− lib/Language/OCaml/Parser/TypeConstraint.hs
@@ -1,30 +0,0 @@-module Language.OCaml.Parser.TypeConstraint-  ( typeConstraintP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.CoreType-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--typeConstraintP :: Parser (Maybe CoreType, Maybe CoreType)-typeConstraintP = choice-  [ do-    t1 <- try $ do-      colonT-      t1 <- coreTypeP-      colonGreaterT-      return t1-    t2 <- coreTypeP-    return (Just t1, Just t2)-  , try $ do-    colonT-    t <- coreTypeP-    return (Just t, Nothing)-  , do-    try $ colonGreaterT-    t <- coreTypeP-    return (Nothing, Just t)-  ]
− lib/Language/OCaml/Parser/TypeDeclaration.hs
@@ -1,34 +0,0 @@-{-# LANGUAGE DisambiguateRecordFields #-}-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE NamedFieldPuns #-}--module Language.OCaml.Parser.TypeDeclaration-  ( typeDeclarationP-  ) where--import           Data.Default-import           Text.Megaparsec--import           Language.OCaml.Definitions.Parsing.ASTHelper.Type as Type-import qualified Language.OCaml.Definitions.Parsing.ASTTypes       as ASTTypes-import           Language.OCaml.Definitions.Parsing.ParseTree-import           Language.OCaml.Parser.Common-import           Language.OCaml.Parser.NonRecFlag-import           Language.OCaml.Parser.OptionalTypeParameters-import           Language.OCaml.Parser.PostItemAttributes-import           Language.OCaml.Parser.Tokens-import           Language.OCaml.Parser.TypeKind-import           Language.OCaml.Parser.Utils.Types--typeDeclarationP :: Parser Structure -> Parser (ASTTypes.RecFlag, TypeDeclaration)-typeDeclarationP structureP = do-  try $ typeT-  -- TODO: extAttributes-  nonrecFlag <- nonrecFlagP-  params <- optionalTypeParametersP-  n <- lIdentT-  (kind, priv, manifest) <- typeKindP structureP-  -- TODO: constraints-  attrs <- postItemAttributesP structureP-  let ty = Type.mk (def { attrs, kind, params, priv }) manifest (mkRHS n 5)-  return (nonrecFlag, ty)
− lib/Language/OCaml/Parser/TypeDeclarations.hs
@@ -1,25 +0,0 @@-module Language.OCaml.Parser.TypeDeclarations-  ( typeDeclarationsP-  ) where--import qualified Language.OCaml.Definitions.Parsing.ASTTypes  as ASTTypes-import           Language.OCaml.Definitions.Parsing.ParseTree-import           Language.OCaml.Parser.AndTypeDeclaration-import           Language.OCaml.Parser.TypeDeclaration-import           Language.OCaml.Parser.Utils.Combinators-import           Language.OCaml.Parser.Utils.Types--typeDeclarationsP ::-  Parser Structure -> Parser (ASTTypes.RecFlag, [TypeDeclaration])-typeDeclarationsP structureP = leftRecursive-  [ do-    (nonrecFlag, ty) <- typeDeclarationP'-    return $ (nonrecFlag, [ty])-  ]-  [ do-    ty <- andTypeDeclarationP'-    return $ \ (nonrecFlag, tys) -> (nonrecFlag, ty : tys)-  ]-  where-    typeDeclarationP' = typeDeclarationP structureP-    andTypeDeclarationP' = andTypeDeclarationP structureP
− lib/Language/OCaml/Parser/TypeKind.hs
@@ -1,40 +0,0 @@-module Language.OCaml.Parser.TypeKind-  ( typeKindP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.ConstructorDeclarations-import Language.OCaml.Parser.CoreType-import Language.OCaml.Parser.LabelDeclarations-import Language.OCaml.Parser.PrivateFlag-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--typeKindP :: Parser Structure -> Parser (TypeKind, PrivateFlag, Maybe CoreType)-typeKindP structureP = choice-  [ do-    t <- try $ do-      equalT-      coreTypeP-    return (PtypeAbstract, Public, Just t)-  , do-    cs <- try $ do-      equalT-      constructorDeclarationsP'-    return (PtypeVariant (reverse cs), Private, Nothing)-  , do-    priv <- try $ do-      equalT-      priv <- privateFlagP-      lBraceT-      return priv-    labels <- labelDeclarationsP-    rBraceT-    return (PtypeRecord labels, priv, Nothing)-  -- FIXME: commenting this out as it helps with debugging, but this is a valid parse of type kind-  -- , return (PtypeAbstract, Public, Nothing)-  ]-  where-    constructorDeclarationsP' = constructorDeclarationsP structureP coreTypeP
− lib/Language/OCaml/Parser/TypeLongident.hs
@@ -1,20 +0,0 @@-module Language.OCaml.Parser.TypeLongident-  ( typeLongidentP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.ModExtLongident-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--typeLongidentP :: Parser Longident-typeLongidentP = choice-  [ Lident <$> lIdentT-  , do-    p <- modExtLongidentP-    dotT-    i <- lIdentT-    return $ Ldot p i-  ]
− lib/Language/OCaml/Parser/TypeVariable.hs
@@ -1,12 +0,0 @@-module Language.OCaml.Parser.TypeVariable-  ( typeVariableP-  ) where---import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.Common-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--typeVariableP :: Parser CoreType-typeVariableP = mktyp . PtypVar <$> (quoteT *> identP)
− lib/Language/OCaml/Parser/TypeVariance.hs
@@ -1,16 +0,0 @@-module Language.OCaml.Parser.TypeVariance-  ( typeVarianceP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ASTTypes-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--typeVarianceP :: Parser Variance-typeVarianceP = choice-  [ plusT  *> pure Covariant-  , minusT *> pure Contravariant-  , pure Invariant-  ]
− lib/Language/OCaml/Parser/Utils/Combinators.hs
@@ -1,77 +0,0 @@-module Language.OCaml.Parser.Utils.Combinators-  ( chainl1-  , chainl1'-  , chainl1try-  , chainl1try'-  , leftRecursive-  ) where--import Control.Applicative-import Text.Megaparsec--import Language.OCaml.Parser.Utils.Types--{---This combinator is necessary because we want to parse succesfully even when-the `op` is not part of the chain.--For instance, in OCaml, a modLongident is a sequence of `Foo.Bar.Baz` and must-be parsed as a chain.  However, when presented with `Foo.Bar.baz`, we'd like the-chain to capture `Foo.Bar` and ignore the `.baz`.---}-chainl1try' :: Parser a -> Parser (b -> a -> b) -> (a -> b) -> Parser b-chainl1try' p op bc = p >>= rest . bc-  where-    rest x = tryOp x <|> return x-    tryOp x = try $ do-      f <- op-      y <- p-      rest (f x y)--chainl1try :: Parser b -> Parser (b -> b -> b) -> Parser b-chainl1try p op = chainl1try' p op id--chainl1' :: (Alternative m, Monad m) => m a -> m (b -> a -> b) -> (a -> b) -> m b-chainl1' p op bc = p >>= rest . bc-  where-    rest x = do { f <- op ; y <- p ; rest (f x y) } <|> return x--chainl1 :: (Alternative m, Monad m) => m a -> m (a -> a -> a) -> m a-chainl1 p op = chainl1' p op id--{---This applies the procedure of turning a left-recursive grammar into a-non-left-recursive one.  Essentially, when wanting to write the grammar:--A ::=-| A B { foo A B }-| C   { bar C }--One instead writes the following:--A' ::=-| C R       { R (bar C) }--R ::=-| B R       { \ A -> R (foo A B) }-| {-empty-} { id }--The two arguments to `leftRecursive` are the grammars for A' and R (except the-last line of R is not needed, but added by the combinator).---}-leftRecursive :: (Monad m, Alternative m) => [m a] -> [m (a -> a)] -> m a-leftRecursive prefixes suffixes = choice $ map patchPrefix prefixes-  where-    patchPrefix prefixP = do-      p <- prefixP-      r <- rest-      return $ r p-    patchSuffix suffixP = do-      s <- suffixP-      r <- rest-      return $ r . s-    rest = choice $ map patchSuffix suffixes ++ [ return id ]
− lib/Language/OCaml/Parser/Utils/Types.hs
@@ -1,8 +0,0 @@-module Language.OCaml.Parser.Utils.Types-  ( Parser-  ) where--import Data.Void-import Text.Megaparsec--type Parser = Parsec Void String
− lib/Language/OCaml/Parser/Utils/Utils.hs
@@ -1,115 +0,0 @@-module Language.OCaml.Parser.Utils.Utils-  -- , checkIdentifier-  ( identifier-  , lexeme-  , ocamlSpace-  , parens-  , rword-  , symbol-  ) where--import           Data.Functor-import           Text.Megaparsec-import           Text.Megaparsec.Char-import qualified Text.Megaparsec.Char.Lexer        as L-import           Text.Printf--import           Language.OCaml.Parser.Utils.Types--checkIdentifier :: String -> Parser String-checkIdentifier c =-      if c `elem` reservedWords-      then fail $ printf "keyword %s cannot be an identifier" (show c)-      else return c--identifier :: Parser String -> Parser String-identifier p = (lexeme . try) (p >>= checkIdentifier)---- identifier :: Parser String--- identifier = (lexeme . try) (p >>= checkIdentifier)---   where---     p       = (:) <$> letterChar <*> many (alphaNumChar <|> char '_')--ocamlSpace :: Parser ()-ocamlSpace = L.space (void spaceChar) lineCmnt blockCmnt-  where-    lineCmnt  = L.skipLineComment "//"-    blockCmnt = L.skipBlockComment "(*" "*)"--lexeme :: Parser a -> Parser a-lexeme = L.lexeme ocamlSpace--parens :: Parser a -> Parser a-parens = between (symbol "(") (symbol ")")--rword :: String -> Parser ()-rword w =-  if w `elem` reservedWords-  then string w *> notFollowedBy alphaNumChar *> ocamlSpace-  else error-       $ "The following word must be added to reservedWords in Language.OCaml.Parser.Utils.Utils: "-       ++ w--symbol :: String -> Parser ()-symbol = void . L.symbol ocamlSpace--reservedWords :: [String] -- list of reserved words-reservedWords =-  [ "and"-  , "as"-  , "assert"-  , "begin"-  , "class"-  , "constraint"-  , "do"-  , "done"-  , "downto"-  , "else"-  , "end"-  , "exception"-  , "external"-  , "false"-  , "for"-  , "fun"-  , "function"-  , "functor"-  , "if"-  , "in"-  , "include"-  , "inherit"-  , "initializer"-  , "lazy"-  , "let"-  , "match"-  , "method"-  , "module"-  , "mutable"-  , "new"-  , "nonrec"-  , "object"-  , "of"-  , "open"-  , "or"-  -- , "parser"-  , "private"-  , "rec"-  , "sig"-  , "struct"-  , "then"-  , "to"-  , "true"-  , "try"-  , "type"-  , "val"-  , "virtual"-  , "when"-  , "while"-  , "with"-  , "lor"-  , "lxor"-  , "mod"-  , "land"-  , "lsl"-  , "lsr"-  , "asr"-  ]
− lib/Language/OCaml/Parser/ValIdent.hs
@@ -1,20 +0,0 @@-module Language.OCaml.Parser.ValIdent-  ( valIdentP-  ) where--import Text.Megaparsec--import Language.OCaml.Parser.Operator-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types--valIdentP :: Parser String-valIdentP = choice-  [ lIdentT-  , do-    o <- try $ do-      lParenT-      operatorP-    rParenT-    return o-  ]
− lib/Language/OCaml/Parser/ValLongident.hs
@@ -1,23 +0,0 @@-module Language.OCaml.Parser.ValLongident-  ( valLongidentP-  ) where--import Text.Megaparsec--import Language.OCaml.Definitions.Parsing.ParseTree-import Language.OCaml.Parser.ModLongident-import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.Utils.Types-import Language.OCaml.Parser.ValIdent--valLongidentP :: Parser Longident-valLongidentP = choice-  [ Lident <$> valIdentP-  , do-    l <- try $ do-      l <- modLongidentP-      dotT-      return l-    i <- valIdentP-    return $ Ldot l i-  ]
lib/Language/OCaml/PrettyPrinter.hs view
@@ -1,10 +1,24 @@ module Language.OCaml.PrettyPrinter   ( pretty+  , payloadPP   , structurePP+  , structureItemPP   ) where -import Data.Text.Prettyprint.Doc                  (pretty)+import           Data.Text.Prettyprint.Doc                    (Doc, pretty) -import Language.OCaml.PrettyPrinter.Payload       ()-import Language.OCaml.PrettyPrinter.Structure-import Language.OCaml.PrettyPrinter.StructureItem ()+import           Language.OCaml.Definitions.Parsing.ParseTree+import qualified Language.OCaml.PrettyPrinter.Payload         as Payload+import qualified Language.OCaml.PrettyPrinter.Structure       as Structure+import qualified Language.OCaml.PrettyPrinter.StructureItem   as StructureItem++-- tying some knots++payloadPP :: Payload -> Doc a+payloadPP = Payload.payloadPP++structureItemPP :: StructureItem -> Doc a+structureItemPP = StructureItem.structureItemPP++structurePP :: Structure -> Doc a+structurePP = Structure.structurePP
lib/Language/OCaml/PrettyPrinter/Structure.hs view
@@ -9,5 +9,5 @@ import Language.OCaml.Definitions.Parsing.ParseTree import Language.OCaml.PrettyPrinter.StructureItem   () -structurePP :: (Pretty Payload) => Structure -> Doc a+structurePP :: Pretty Payload => Structure -> Doc a structurePP = vcat . map pretty
− test/Language/OCaml/Parser/Common/Test.hs
@@ -1,52 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE QuasiQuotes #-}--module Language.OCaml.Parser.Common.Test-  ( test-  , unitTests-  ) where--import Test.Tasty--import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils--constrIdentTests :: [String]-constrIdentTests =-  [ "A"-  , "Ab"-  , "AB"-  , "[]"-  , "false"-  , "true"-  , "A "-  , "Ab "-  , "AB "-  , "[] "-  , "false "-  , "true "-  ]--identTests :: [String]-identTests =-  [ "A"-  , "Ab"-  , "AB"-  , "a"-  , "aB"-  , "ab"-  , "A "-  , "Ab "-  , "AB "-  , "a "-  , "aB "-  , "ab "-  ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Common" $ []-  ++ map (mkParsingTest "constrIdentP" constrIdentP) constrIdentTests-  ++ map (mkParsingTest "identP" identP) identTests--test :: IO ()-test = defaultMain unitTests
test/Language/OCaml/Parser/Constant/Test.hs view
@@ -1,16 +1,8 @@-{-# LANGUAGE OverloadedStrings #-}- module Language.OCaml.Parser.Constant.Test-  ( test-  , testStrings-  , unitTests+  ( testStrings   ) where -import           Test.Tasty--import           Language.OCaml.Parser.Internal import qualified Language.OCaml.Parser.Int.Test as Int-import           Language.OCaml.Parser.TestUtils  testStrings :: [String] testStrings = []@@ -18,10 +10,3 @@   -- TODO: CHAR   -- TODO: STRING   -- TODO: FLOAT--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Constant" $ []-  ++ map (mkParsingTest "valLongIdentP" valLongidentP) testStrings--test :: IO ()-test = defaultMain unitTests
test/Language/OCaml/Parser/ConstrLongident/Test.hs view
@@ -1,17 +1,12 @@ {-# LANGUAGE QuasiQuotes #-}  module Language.OCaml.Parser.ConstrLongident.Test-  ( test-  , testStrings-  , unitTests+  ( testStrings   ) where -import Data.String.Interpolate-import Test.Tasty+import           Data.String.Interpolate -import Language.OCaml.Parser.Internal import qualified Language.OCaml.Parser.ModLongident.Test as ModLongident-import Language.OCaml.Parser.TestUtils  testStrings :: [String] testStrings = []@@ -25,10 +20,3 @@      , "false"      , "true"      ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.ConstrLongident" $ []-  ++ map (mkParsingTest "constrLongidentP" constrLongidentP) testStrings--test :: IO ()-test = defaultMain unitTests
+ test/Language/OCaml/Parser/CoreType/Test.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE QuasiQuotes #-}++module Language.OCaml.Parser.CoreType.Test+  ( testStrings+  ) where++-- import Data.String.Interpolate++import qualified Language.OCaml.Parser.CoreTypeNoAttr.Test as CoreTypeNoAttr++testStrings :: [String]+testStrings = []+  ++ coreTypeNoAttr+  -- TODO+  where+    coreTypeNoAttr = CoreTypeNoAttr.testStrings
+ test/Language/OCaml/Parser/CoreType2/Test.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE QuasiQuotes #-}++module Language.OCaml.Parser.CoreType2.Test+  ( testStrings+  ) where++-- import           Data.String.Interpolate++import qualified Language.OCaml.Parser.SimpleCoreTypeOrTuple.Test as SimpleCoreTypeOrTuple++testStrings :: [String]+testStrings = []+  ++ simpleCoreTypeOrTuple+  -- TODO+  where+    simpleCoreTypeOrTuple = SimpleCoreTypeOrTuple.testStrings
+ test/Language/OCaml/Parser/CoreTypeNoAttr/Test.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE QuasiQuotes #-}++module Language.OCaml.Parser.CoreTypeNoAttr.Test+  ( testStrings+  ) where++import           Data.String.Interpolate+import           Prelude                              hiding (id)++import qualified Language.OCaml.Parser.CoreType2.Test as CoreType2+import qualified Language.OCaml.Parser.Ident.Test     as Ident++testStrings :: [String]+testStrings = []+  ++ coreType2+  ++ [ [i| #{ct2} as '#{id} |]+       | ct2 <- coreType2+       , id  <- ident+       ]+  where+    coreType2 = CoreType2.testStrings+    ident     = Ident.testStrings
test/Language/OCaml/Parser/Generator/Expr/Test.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE QuasiQuotes #-}- module Language.OCaml.Parser.Generator.Expr.Test   ( test   , unitTests@@ -13,7 +11,7 @@  unitTests :: TestTree unitTests = testGroup "Language.OCaml.Parser.Generator.Expr" $ []-  ++ map (mkParsingTestG parseExpr) TestStrings.expr+  ++ map (mkParsingTest parseExpr) TestStrings.expr  test :: IO () test = defaultMain unitTests
test/Language/OCaml/Parser/Generator/Implementation/Test.hs view
@@ -2,63 +2,24 @@  module Language.OCaml.Parser.Generator.Implementation.Test   ( test-  , unitTests+  , mkUnitTest   ) where --- import Data.String.QQ import Test.Tasty --- import Language.OCaml.Parser.Generator.Lexer+import Language.OCaml.Definitions.Parsing.ParseTree import Language.OCaml.Parser.Generator.Parser-import Language.OCaml.Parser.TestUtils-import Language.OCaml.Parser.Implementation.Test (testFiles)---- prefix :: FilePath--- prefix = "test/ocaml/"---- mlFiles :: [String]--- mlFiles = []---   ++ map (prefix ++)---           [ "typing/typetexp.ml"---           , "typing/path.ml"---           , "typing/includecore.ml"---           , "typing/printtyped.ml"---           , "typing/typedecl.ml"---           , "typing/btype.ml"---           , "typing/typemod.ml"---           , "typing/tast_mapper.ml"---           , "typing/subst.ml"---           , "typing/typecore.ml"---           , "typing/datarepr.ml"---           , "typing/typedtree.ml"---           , "typing/untypeast.ml"---           , "typing/parmatch.ml"---           , "typing/ident.ml"---           , "typing/cmt_format.ml"---           , "typing/oprint.ml"---           , "typing/env.ml"---           , "typing/stypes.ml"---           , "typing/includemod.ml"---           , "typing/includeclass.ml"---           , "typing/primitive.ml"---           , "typing/envaux.ml"---           , "typing/typeclass.ml"---           , "typing/cmi_format.ml"---           , "typing/printtyp.ml"---           , "typing/mtype.ml"---           , "typing/types.ml"---           , "typing/typedtreeIter.ml"---           , "typing/typedtreeMap.ml"---           , "typing/typeopt.ml"---           , "typing/printpat.ml"---           , "typing/predef.ml"---           , "typing/ctype.ml"---           ]+import Language.OCaml.Parser.Implementation.Test -unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Generator.Implementation" $ []-  ++ map (mkParsingTestFromFileG parseImplementation) testFiles-  -- ++ map (mkParsingTestFromFileG parseImplementation) mlFiles+mkUnitTest :: [FilePath] -> TestTree+mkUnitTest fileNames =+  testGroup "Language.OCaml.Parser.Generator.Implementation" $ []+    ++ map testMLFile fileNames  test :: IO ()-test = defaultMain unitTests+test = do+  mlFiles <- listMLFiles+  defaultMain $ mkUnitTest mlFiles++debug :: Either String [StructureItem]+debug = parseImplementation "let f x : b = c"
+ test/Language/OCaml/Parser/Generator/LetBinding/Test.hs view
@@ -0,0 +1,17 @@+module Language.OCaml.Parser.Generator.LetBinding.Test+  ( test+  , unitTests+  ) where++import           Test.Tasty++import           Language.OCaml.Parser.Generator.Parser+import           Language.OCaml.Parser.TestUtils+import qualified Language.OCaml.Parser.TestStrings as TestStrings++unitTests :: TestTree+unitTests = testGroup "Language.OCaml.Parser.Generator.Structure" $ []+  ++ map (mkParsingTest parseLetBinding) TestStrings.letBinding++test :: IO ()+test = defaultMain unitTests
test/Language/OCaml/Parser/Generator/SeqExpr/Test.hs view
@@ -5,19 +5,15 @@   , unitTests   ) where --- import Data.String.QQ-import Test.Tasty+import           Test.Tasty --- import Language.OCaml.Parser.Generator.Lexer-import Language.OCaml.Parser.Generator.Parser--- import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils-import qualified Language.OCaml.Parser.TestStrings as TestStrings+import           Language.OCaml.Parser.Generator.Parser+import           Language.OCaml.Parser.TestUtils+import qualified Language.OCaml.Parser.TestStrings      as TestStrings  unitTests :: TestTree unitTests = testGroup "Language.OCaml.Parser.Generator.SeqExpr" $ []-  ++ map (mkParsingTestG parseSeqExpr) TestStrings.seqExpr-  -- ++ map (compareParses "SeqExpr" seqExprP parseSeqExpr) testStrings+  ++ map (mkParsingTest parseSeqExpr) TestStrings.seqExpr  test :: IO () test = defaultMain unitTests
test/Language/OCaml/Parser/Generator/SimpleExpr/Test.hs view
@@ -11,7 +11,7 @@  unitTests :: TestTree unitTests = testGroup "Language.OCaml.Parser.Generator.SimpleExpr" $ []-  ++ map (mkParsingTestG parseSimpleExpr) TestStrings.simpleExpr+  ++ map (mkParsingTest parseSimpleExpr) TestStrings.simpleExpr  test :: IO () test = defaultMain unitTests
+ test/Language/OCaml/Parser/Generator/Structure/Test.hs view
@@ -0,0 +1,17 @@+module Language.OCaml.Parser.Generator.Structure.Test+  ( test+  , unitTests+  ) where++import           Test.Tasty++import           Language.OCaml.Parser.Generator.Parser+import           Language.OCaml.Parser.TestUtils+import qualified Language.OCaml.Parser.TestStrings as TestStrings++unitTests :: TestTree+unitTests = testGroup "Language.OCaml.Parser.Generator.Structure" $ []+  ++ map (mkParsingTest parseStructure) TestStrings.structure++test :: IO ()+test = defaultMain unitTests
test/Language/OCaml/Parser/Generator/ValLongident/Test.hs view
@@ -11,7 +11,7 @@  unitTests :: TestTree unitTests = testGroup "Language.OCaml.Parser.Generator.ValLongident" $ []-  ++ map (mkParsingTestG parseValLongident) testStrings+  ++ map (mkParsingTest parseValLongident) testStrings  test :: IO () test = defaultMain unitTests
+ test/Language/OCaml/Parser/Ident/Test.hs view
@@ -0,0 +1,19 @@+module Language.OCaml.Parser.Ident.Test+  ( testStrings+  ) where++testStrings :: [String]+testStrings =+  [ "A"+  , "Ab"+  , "AB"+  , "a"+  , "aB"+  , "ab"+  , "A "+  , "Ab "+  , "AB "+  , "a "+  , "aB "+  , "ab "+  ]
test/Language/OCaml/Parser/Implementation/Test.hs view
@@ -1,45 +1,31 @@ {-# LANGUAGE QuasiQuotes #-}  module Language.OCaml.Parser.Implementation.Test-  ( test-  , testFiles+  ( debugLexer+  , listMLFiles+  , testMLFile   , testStrings-  , unitTests   ) where --- import Data.String.QQ-import Test.Tasty+import           Test.Tasty+import           Test.Tasty.Golden -import Language.OCaml.Parser.Internal-import qualified Language.OCaml.Parser.Structure.Test as Structure--- import Language.OCaml.Parser.Tokens-import Language.OCaml.Parser.TestUtils+import           Language.OCaml.Parser.Generator.Lexer+import           Language.OCaml.Parser.Generator.Parser+import qualified Language.OCaml.Parser.Structure.Test         as Structure+import           Language.OCaml.Parser.TestUtils -prefix :: FilePath-prefix = "test/Language/OCaml/Parser/Implementation/"+directory :: FilePath+directory = "test/Language/OCaml/Parser/Implementation"  testStrings :: [String] testStrings = Structure.testStrings -testFiles :: [FilePath]-testFiles = map (prefix ++)-  [ "test_00.ml"-  , "test_01.ml"-  , "test_02.ml"-  , "test_03.ml"-  , "test_04.ml"-  , "test_05.ml"-  , "test_06.ml"-  , "test_07.ml"-  , "test_08.ml"-  -- , "FaCT/tast.ml"-  -- , "FaCT/tast-00.ml"-  -- , "FaCT/tast-01.ml"-  ]+listMLFiles :: IO [FilePath]+listMLFiles = findByExtension [".ml"] directory -unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Generator.Implementation" $ []-  ++ map (mkParsingTestFromFile implementationP) testFiles+testMLFile :: FilePath -> TestTree+testMLFile fileName = mkParsingTestFromFile parseImplementation fileName -test :: IO ()-test = defaultMain unitTests+debugLexer :: String -> Either String [ResultToken]+debugLexer = alexScanTokens
test/Language/OCaml/Parser/Int/Test.hs view
@@ -1,16 +1,7 @@-{-# LANGUAGE OverloadedStrings #-}- module Language.OCaml.Parser.Int.Test-  ( test-  , testStrings-  , unitTests+  ( testStrings   ) where -import           Test.Tasty--import           Language.OCaml.Parser.Internal-import           Language.OCaml.Parser.TestUtils- testStrings :: [String] testStrings =   -- decimal literals@@ -27,10 +18,3 @@   , "0b01"   , "0B01"   ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Int" $ []-  ++ map (mkParsingTest "valLongIdentP" valLongidentP) testStrings--test :: IO ()-test = defaultMain unitTests
test/Language/OCaml/Parser/LetBinding/Test.hs view
@@ -17,9 +17,9 @@  testStrings :: [String] -> [String] testStrings structure = []-  ++ [ [i| let #{ea} #{rf} #{lbb} #{pia} |]-       | ea <- extAttributes-       , rf <- recFlag+  ++ [ [i|let #{ea} #{rf} #{lbb} #{pia}|]+       | ea  <- extAttributes+       , rf  <- recFlag        , lbb <- letBindingBody        , pia <- postItemAttributes        ]
test/Language/OCaml/Parser/LetBindingBody/Test.hs view
@@ -4,20 +4,32 @@   ( testStrings   ) where -import Data.String.Interpolate+import           Data.String.Interpolate -import qualified Language.OCaml.Parser.StrictBinding.Test as StrictBinding-import qualified Language.OCaml.Parser.ValIdent.Test as ValIdent+import qualified Language.OCaml.Parser.CoreType.Test              as CoreType+import qualified Language.OCaml.Parser.SimplePatternNotIdent.Test as SimplePatternNotIdent+import qualified Language.OCaml.Parser.SeqExpr.Test               as SeqExpr+import qualified Language.OCaml.Parser.StrictBinding.Test         as StrictBinding+import qualified Language.OCaml.Parser.ValIdent.Test              as ValIdent  limit :: Int limit = 100  testStrings :: [String] testStrings = []-  ++ [ [i| #{vi} #{sb} |]+  ++ [ [i|#{vi} #{sb}|]        | vi <- valIdent        , sb <- strictBinding        ]+  -- TODO+  ++ [ [i|#{spni} : #{ct} = #{se}|]+       | spni <- simplePatternNotIdent+       , ct   <- coreType+       , se   <- seqExpr+       ]   where-    valIdent      = take limit $ ValIdent.testStrings-    strictBinding = take limit $ StrictBinding.testStrings+    coreType      = take limit         $              CoreType.testStrings+    seqExpr       = take limit         $               SeqExpr.testStrings+    simplePatternNotIdent = take limit $ SimplePatternNotIdent.testStrings+    strictBinding = take limit         $         StrictBinding.testStrings+    valIdent      = take limit         $              ValIdent.testStrings
test/Language/OCaml/Parser/MatchCase/Test.hs view
@@ -1,25 +1,10 @@-{-# LANGUAGE OverloadedStrings #-}- module Language.OCaml.Parser.MatchCase.Test-  ( test-  , unitTests+  ( testStrings   ) where -import Test.Tasty--import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils--matchCaseTests :: [String]-matchCaseTests =+testStrings :: [String]+testStrings =   [ "a -> b"   , "a -> B.c_d"   , "a when b -> c"   ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.MatchCase" $ []-  ++ map (mkParsingTest "matchCaseP" matchCaseP) matchCaseTests--test :: IO ()-test = defaultMain unitTests
test/Language/OCaml/Parser/ModLongident/Test.hs view
@@ -1,25 +1,9 @@-{-# LANGUAGE OverloadedStrings #-}- module Language.OCaml.Parser.ModLongident.Test-  ( test-  , testStrings-  , unitTests+  ( testStrings   ) where -import Test.Tasty--import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils- testStrings :: [String] testStrings =   [ "Mod"   , "Mod.Mod"   ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.ModLongident" $ []-  ++ map (mkParsingTest "modLongidentP" modLongidentP) testStrings--test :: IO ()-test = defaultMain unitTests
test/Language/OCaml/Parser/OpenStatement/Test.hs view
@@ -1,27 +1,12 @@-{-# LANGUAGE OverloadedStrings #-}- module Language.OCaml.Parser.OpenStatement.Test-  ( test-  , unitTests+  ( testStrings   ) where -import Test.Tasty--import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils--openStatementTests :: [String]-openStatementTests =+testStrings :: [String]+testStrings =   [ "open A"   , "open !A"   -- , "(* A *) open !A"   , "open !A (* A *)"   -- , "(* A *) open !A (* A *)"   ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.OpenStatement" $ []-  ++ map (mkParsingTest "openStatementP" (openStatementP structureP)) openStatementTests--test :: IO ()-test = defaultMain unitTests
test/Language/OCaml/Parser/Pattern/Test.hs view
@@ -1,17 +1,9 @@-{-# LANGUAGE OverloadedStrings #-}- module Language.OCaml.Parser.Pattern.Test-  ( test-  , unitTests+  ( testStrings   ) where -import Test.Tasty--import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils--patternTests :: [String]-patternTests =+testStrings :: [String]+testStrings =   [ "_"   , "a"   , "A"@@ -22,10 +14,3 @@   , "_, _"   , "A _, B _"   ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Pattern" $ []-  ++ map (mkParsingTest "patternP" patternP) patternTests--test :: IO ()-test = defaultMain unitTests
+ test/Language/OCaml/Parser/SimpleCoreType/Test.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE QuasiQuotes #-}++module Language.OCaml.Parser.SimpleCoreType.Test+  ( testStrings+  ) where++-- import           Data.String.Interpolate++import qualified Language.OCaml.Parser.SimpleCoreType2.Test as SimpleCoreType2++testStrings :: [String]+testStrings = []+  ++ simpleCoreType2+  -- TODO+  where+    simpleCoreType2 = SimpleCoreType2.testStrings
+ test/Language/OCaml/Parser/SimpleCoreType2/Test.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE QuasiQuotes #-}++module Language.OCaml.Parser.SimpleCoreType2.Test+  ( testStrings+  ) where++import           Data.String.Interpolate+import           Prelude                          hiding (id)++import qualified Language.OCaml.Parser.Ident.Test as Ident++testStrings :: [String]+testStrings = []+  ++ [ [i| #{id} |]+       | id <- ident+       ]+  ++ ["_"]+  -- TODO+  where+    ident = Ident.testStrings
+ test/Language/OCaml/Parser/SimpleCoreTypeOrTuple/Test.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE QuasiQuotes #-}++module Language.OCaml.Parser.SimpleCoreTypeOrTuple.Test+  ( testStrings+  ) where++-- import           Data.String.Interpolate++import qualified Language.OCaml.Parser.SimpleCoreType.Test as SimpleCoreType++testStrings :: [String]+testStrings = []+  ++ simpleCoreType+  -- TODO+  where+    simpleCoreType = SimpleCoreType.testStrings
test/Language/OCaml/Parser/SimplePattern/Test.hs view
@@ -1,26 +1,11 @@-{-# LANGUAGE OverloadedStrings #-}- module Language.OCaml.Parser.SimplePattern.Test-  ( test-  , unitTests+  ( testStrings   ) where -import Test.Tasty--import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils--simplePatternTests :: [String]-simplePatternTests =+testStrings :: [String]+testStrings =   [ "_"   , "a"   , "A"   , "A.B"   ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Pattern" $ []-  ++ map (mkParsingTest "simplePatternP" simplePatternP) simplePatternTests--test :: IO ()-test = defaultMain unitTests
+ test/Language/OCaml/Parser/SimplePatternNotIdent/Test.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE QuasiQuotes #-}++module Language.OCaml.Parser.SimplePatternNotIdent.Test+  ( testStrings+  ) where++-- import Data.String.Interpolate++-- import qualified Language.OCaml.Parser.CoreTypeNoAttr.Test as CoreTypeNoAttr++testStrings :: [String]+testStrings = []+  ++ ["_"]+  -- TODO+  where+    -- coreTypeNoAttr = CoreTypeNoAttr.testStrings
test/Language/OCaml/Parser/Structure/Test.hs view
@@ -1,30 +1,25 @@ {-# LANGUAGE QuasiQuotes #-}  module Language.OCaml.Parser.Structure.Test-  ( test-  , testStrings-  , unitTests+  ( testStrings   ) where  import           Data.String.Interpolate-import           Test.Tasty -import           Language.OCaml.Parser.Internal import qualified Language.OCaml.Parser.Payload.Test as Payload import qualified Language.OCaml.Parser.PostItemAttributes.Test as PostItemAttributes import qualified Language.OCaml.Parser.SeqExpr.Test as SeqExpr import qualified Language.OCaml.Parser.StructureTail.Test as StructureTail-import           Language.OCaml.Parser.TestUtils  limit :: Int-limit = 2+limit = 4  testStrings :: [String] testStrings = []   ++ [ [i|#{se} #{pia} #{st}|]-       | se <- seqExpr+       | se  <- seqExpr        , pia <- postItemAttributes-       , st <- structureTail+       , st  <- structureTail        ]   where     payload            = take limit $ Payload.testStrings structure@@ -32,12 +27,3 @@     seqExpr            = take limit $ SeqExpr.testStrings     structure          = take limit $ testStrings     structureTail      = take limit $ StructureTail.testStrings structure--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Structure" $ []-  ++ map (mkParsingTest "structureP" structureP) testStrings--test :: IO ()-test = defaultMain unitTests---- debug = debugParsing structureP (structureTests !! 9)
test/Language/OCaml/Parser/StructureItem/Test.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE QuasiQuotes #-}- module Language.OCaml.Parser.StructureItem.Test   ( testStrings   ) where
test/Language/OCaml/Parser/TestStrings.hs view
@@ -1,6 +1,8 @@ module Language.OCaml.Parser.TestStrings   ( attributes   , expr+  , implementation+  , letBinding   , payload   , seqExpr   , simpleExpr@@ -11,6 +13,8 @@  import qualified Language.OCaml.Parser.Attributes.Test as Attributes import qualified Language.OCaml.Parser.Expr.Test as Expr+import qualified Language.OCaml.Parser.Implementation.Test as Implementation+import qualified Language.OCaml.Parser.LetBinding.Test as LetBinding import qualified Language.OCaml.Parser.Payload.Test as Payload import qualified Language.OCaml.Parser.SeqExpr.Test as SeqExpr import qualified Language.OCaml.Parser.SimpleExpr.Test as SimpleExpr@@ -23,6 +27,12 @@  expr :: [String] expr = Expr.testStrings seqExpr++implementation :: [String]+implementation = Implementation.testStrings++letBinding :: [String]+letBinding = LetBinding.testStrings structure  payload :: [String] payload = Payload.testStrings structure
test/Language/OCaml/Parser/TestUtils.hs view
@@ -1,64 +1,27 @@ module Language.OCaml.Parser.TestUtils-  ( compareParses-  , debugParsing-  , mkParsingTest-  , mkParsingTestG+  ( mkParsingTest   , mkParsingTestFromFile-  , mkParsingTestFromFileG   , parse   ) where -import Data.Void import Text.Megaparsec import Test.Tasty import Test.Tasty.HUnit  import Language.OCaml.Parser-import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.Utils.Utils -assertParsesC :: ParserC a -> String -> Assertion-assertParsesC parser input = do-  case parseMaybe parser input of-    Nothing -> assertFailure $ "Failed to parse: " ++ take 60 input-    Just _  -> return ()--assertParsesG :: ParserG a -> String -> Assertion-assertParsesG parser input = do+assertParses :: Parser a -> String -> Assertion+assertParses parser input = do   case parser input of     Left msg -> assertFailure msg     Right _  -> return () -mkParsingTest :: TestName -> Parser a -> String -> TestTree-mkParsingTest name parser input = testCase name $ assertParsesC parser input--mkParsingTestG :: (String -> Either String a) -> String -> TestTree-mkParsingTestG parser input = testCase shortInput $ assertParsesG parser input+mkParsingTest :: (String -> Either String a) -> String -> TestTree+mkParsingTest parser input = testCase shortInput $ assertParses parser input   where     shortInput | length input <= 40 = input                | otherwise          = take 40 input ++ "..." -mkParsingTestFromFile :: Parser a -> FilePath -> TestTree-mkParsingTestFromFile parser fileName = testCase fileName $ readFile fileName >>= assertParsesC parser--mkParsingTestFromFileG :: (String -> Either String a) -> FilePath -> TestTree-mkParsingTestFromFileG parser fileName = testCase fileName $ readFile fileName >>= assertParsesG parser--debugParsing :: Parser a -> String -> Either (ParseError (Token String) Void) a-debugParsing parser input =-  parse (ocamlSpace *> parser <* eof) "DEBUG" input--compareParses ::-  (Eq a, Show a) =>-  TestName -> Parser a -> (String -> Either String a) -> String -> TestTree-compareParses name parserC parserG input =-  testCase name $ do-  case (parseMaybe parserC input, parserG input) of-    (Just outputC, Right outputG) -> (outputC == outputG)-                                     @? ("Results differ:\n"-                                         ++ "Combinator: " ++ show outputC ++ "\n"-                                         ++ "Generator:  " ++ show outputG ++ "\n"-                                        )-    (Just _,       Left _)        -> False @? "Parser generator failed"-    (Nothing,      Right _)       -> False @? "Parser combinator failed"-    (Nothing,      Left _)        -> False @? "Both parsers failed"+mkParsingTestFromFile :: (String -> Either String a) -> FilePath -> TestTree+mkParsingTestFromFile parser fileName =+  testCase fileName $ readFile fileName >>= assertParses parser
− test/Language/OCaml/Parser/Tokens/Test.hs
@@ -1,37 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE QuasiQuotes #-}--module Language.OCaml.Parser.Tokens.Test-  ( test-  , unitTests-  ) where--import Data.String.QQ--- import Text.Megaparsec-import Test.Tasty--import Language.OCaml.Parser.Internal-import Language.OCaml.Parser.TestUtils---- lIdentTests :: [String]--- lIdentTests = [ "a", "a " ]---- uIdentTests :: [String]--- uIdentTests = [ "A", "A " ]---- starTests :: [String]--- starTests = [ "*", "* ", " *", " * " ]--stringTests :: [String]-stringTests =-  [ [s|"foo"|]-  ]--unitTests :: TestTree-unitTests = testGroup "Language.OCaml.Parser.Tokens" $ []-  ++ map (mkParsingTest "stringT" stringT) stringTests--test :: IO ()-test = defaultMain unitTests---- foo = debugParsing (stringT *> stringT) [s|"foo" "bar"|]
test/Language/OCaml/PrettyPrinter/TestUtils.hs view
@@ -17,7 +17,7 @@  import Language.OCaml.Parser -mkPrettyPrinterTest :: (Eq a) => TestName -> ParserG a -> (a -> Doc b) -> String -> TestTree+mkPrettyPrinterTest :: (Eq a) => TestName -> Parser a -> (a -> Doc b) -> String -> TestTree mkPrettyPrinterTest name parser printer input =   testCase name $ condition @? message   where@@ -55,7 +55,7 @@     ++ show (pretty a) ++ "\n"  debugPrettyPrinter ::-  (Eq a) => ParserG a -> (a -> Doc b) -> String -> DebugPrettyPrinter a b+  (Eq a) => Parser a -> (a -> Doc b) -> String -> DebugPrettyPrinter a b debugPrettyPrinter parser printer input =   case parser input of   Left _ -> NoParse1@@ -64,8 +64,8 @@     Left _ -> NoParse2 r (printer r)     Right r' -> if r == r' then ParseEq r' else ParseDiff r r' -parseAndPrettyPrint :: ParserG a -> (a -> Doc b) -> String -> Either String (Doc b)+parseAndPrettyPrint :: Parser a -> (a -> Doc b) -> String -> Either String (Doc b) parseAndPrettyPrint parser printer input = printer <$> parser input -roundtrip :: ParserG a -> (a -> Doc b) -> String -> Either String String+roundtrip :: Parser a -> (a -> Doc b) -> String -> Either String String roundtrip p pp s = (show . pp) <$> p s
test/Main.hs view
@@ -2,15 +2,13 @@  module Main where -import Test.Tasty+import           Test.Tasty --- import qualified Language.OCaml.Parser.Common.Test--- import qualified Language.OCaml.Parser.ConstrLongident.Test--- import qualified Language.OCaml.Parser.Expr.Test -- import qualified Language.OCaml.Parser.Generator.Common.Test -- import qualified Language.OCaml.Parser.Generator.ConstrLongident.Test import qualified Language.OCaml.Parser.Generator.Expr.Test import qualified Language.OCaml.Parser.Generator.Implementation.Test+import qualified Language.OCaml.Parser.Generator.LetBinding.Test -- import qualified Language.OCaml.Parser.Generator.MatchCase.Test -- import qualified Language.OCaml.Parser.Generator.ModLongident.Test -- import qualified Language.OCaml.Parser.Generator.OpenStatement.Test@@ -18,12 +16,12 @@ import qualified Language.OCaml.Parser.Generator.SeqExpr.Test import qualified Language.OCaml.Parser.Generator.SimpleExpr.Test -- import qualified Language.OCaml.Parser.Generator.SimplePattern.Test--- import qualified Language.OCaml.Parser.Generator.Structure.Test+import qualified Language.OCaml.Parser.Generator.Structure.Test -- import qualified Language.OCaml.Parser.Generator.StructureItem.Test -- import qualified Language.OCaml.Parser.Generator.Tokens.Test -- import qualified Language.OCaml.Parser.Generator.ValIdent.Test import qualified Language.OCaml.Parser.Generator.ValLongident.Test--- import qualified Language.OCaml.Parser.Implementation.Test+import           Language.OCaml.Parser.Implementation.Test -- import qualified Language.OCaml.Parser.MatchCase.Test -- import qualified Language.OCaml.Parser.ModLongident.Test -- import qualified Language.OCaml.Parser.OpenStatement.Test@@ -40,34 +38,17 @@ import qualified Language.OCaml.PrettyPrinter.Structure.Test  main :: IO ()-main = defaultMain tests+main = do+  mlFiles <- listMLFiles+  defaultMain $ tests mlFiles -tests :: TestTree-tests = testGroup "Tests" $ []-  -- ++ [ testGroup "Parser combinator" $-  --      [ Language.OCaml.Parser.Common.Test.unitTests-  --      , Language.OCaml.Parser.ConstrLongident.Test.unitTests-  --      , Language.OCaml.Parser.Expr.Test.unitTests-  --      , Language.OCaml.Parser.Implementation.Test.unitTests-  --      , Language.OCaml.Parser.MatchCase.Test.unitTests-  --      , Language.OCaml.Parser.ModLongident.Test.unitTests-  --      , Language.OCaml.Parser.OpenStatement.Test.unitTests-  --      , Language.OCaml.Parser.Pattern.Test.unitTests-  --      , Language.OCaml.Parser.SeqExpr.Test.unitTests-  --      , Language.OCaml.Parser.SimpleExpr.Test.unitTests-  --      , Language.OCaml.Parser.SimplePattern.Test.unitTests-  --      , Language.OCaml.Parser.Structure.Test.unitTests-  --      , Language.OCaml.Parser.StructureItem.Test.unitTests-  --      , Language.OCaml.Parser.Tokens.Test.unitTests-  --      , Language.OCaml.Parser.ValIdent.Test.unitTests-  --      , Language.OCaml.Parser.ValLongident.Test.unitTests-  --      ]-  --    ]+tests :: [FilePath] -> TestTree+tests mlFiles = testGroup "Tests" $ []   ++ [ testGroup "Parser generator" $        -- [ Language.OCaml.Parser.Generator.Common.Test.unitTests        -- , Language.OCaml.Parser.Generator.ConstrLongident.Test.unitTests        [ Language.OCaml.Parser.Generator.Expr.Test.unitTests-       , Language.OCaml.Parser.Generator.Implementation.Test.unitTests+       , Language.OCaml.Parser.Generator.LetBinding.Test.unitTests        -- , Language.OCaml.Parser.Generator.MatchCase.Test.unitTests        -- , Language.OCaml.Parser.Generator.ModLongident.Test.unitTests        -- , Language.OCaml.Parser.Generator.OpenStatement.Test.unitTests@@ -75,12 +56,13 @@        , Language.OCaml.Parser.Generator.SeqExpr.Test.unitTests        , Language.OCaml.Parser.Generator.SimpleExpr.Test.unitTests        -- , Language.OCaml.Parser.Generator.SimplePattern.Test.unitTests-       -- , Language.OCaml.Parser.Generator.Structure.Test.unitTests+       , Language.OCaml.Parser.Generator.Structure.Test.unitTests        -- , Language.OCaml.Parser.Generator.StructureItem.Test.unitTests        -- , Language.OCaml.Parser.Generator.Tokens.Test.unitTests        -- , Language.OCaml.Parser.Generator.ValIdent.Test.unitTests        , Language.OCaml.Parser.Generator.ValLongident.Test.unitTests        ]+       ++ [ Language.OCaml.Parser.Generator.Implementation.Test.mkUnitTest mlFiles ]      ]   ++ [ testGroup "PrettyPrinter" $        [ Language.OCaml.PrettyPrinter.Structure.Test.unitTests