ghc-lib-parser-ex 8.10.0.2 → 8.10.0.3
raw patch · 9 files changed
+93/−32 lines, 9 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.Haskell.GhclibParserEx.GHC.Hs.Pat: strToPat :: String -> Pat GhcPs
+ Language.Haskell.GhclibParserEx.GHC.Hs.Pat: strToPat :: String -> LPat GhcPs
- Language.Haskell.GhclibParserEx.Parse: parseExpression :: String -> DynFlags -> ParseResult ECP
+ Language.Haskell.GhclibParserEx.Parse: parseExpression :: String -> DynFlags -> ParseResult (LHsExpr GhcPs)
Files
- ChangeLog.md +2/−0
- ghc-lib-parser-ex.cabal +1/−1
- src/Language/Haskell/GhclibParserEx/Fixity.hs +16/−0
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Decls.hs +4/−0
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs +16/−0
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Pat.hs +26/−5
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Types.hs +4/−0
- src/Language/Haskell/GhclibParserEx/Parse.hs +15/−3
- test/Test.hs +9/−23
ChangeLog.md view
@@ -1,5 +1,7 @@ # Changelog for ghc-lib-parser-ex +## 0.20200401 released 2020-04-01+ ## 8.10.0.2 released 2020-03-30 - Rework cabal flags; allow full configurability with a good default: - Have two flags `auto` and `no-ghc-lib`. Default behavior exactly as `hlint` linking `ghc-lib-parser-8.10.*` if not on `ghc-8.10.*` and `ghc-8.10.*` otherwise.
ghc-lib-parser-ex.cabal view
@@ -1,6 +1,6 @@ cabal-version: >= 1.18 name: ghc-lib-parser-ex-version: 8.10.0.2+version: 8.10.0.3 description: Please see the README on GitHub at <https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme> homepage: https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme bug-reports: https://github.com/shayne-fletcher/ghc-lib-parser-ex/issues
src/Language/Haskell/GhclibParserEx/Fixity.hs view
@@ -15,15 +15,31 @@ , infixr_, infixl_, infix_, fixity ) where +#if defined (GHCLIB_API_811)+import GHC.Types.Basic+#else import BasicTypes+#endif #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) import GHC.Hs #else import HsSyn #endif+#if defined (GHCLIB_API_811)+import GHC.Types.Name.Reader+#else import RdrName+#endif+#if defined (GHCLIB_API_811)+import GHC.Types.Name+#else import OccName+#endif+#if defined (GHCLIB_API_811)+import GHC.Types.SrcLoc+#else import SrcLoc+#endif import Data.Maybe import Data.Data hiding (Fixity) import Data.Generics.Uniplate.Data
src/Language/Haskell/GhclibParserEx/GHC/Hs/Decls.hs view
@@ -12,7 +12,11 @@ #else import HsSyn #endif+#if defined (GHCLIB_API_811)+import GHC.Types.SrcLoc+#else import SrcLoc+#endif isNewType :: NewOrData -> Bool isNewType NewType = True
src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs view
@@ -22,11 +22,27 @@ #else import HsSyn #endif+#if defined (GHCLIB_API_811)+import GHC.Types.SrcLoc+#else import SrcLoc+#endif+#if defined (GHCLIB_API_811)+import GHC.Types.Name.Reader+#else import RdrName+#endif+#if defined (GHCLIB_API_811)+import GHC.Types.Name+#else import OccName import Name+#endif+#if defined (GHCLIB_API_811)+import GHC.Types.Basic+#else import BasicTypes+#endif import TysWiredIn -- 'True' if the provided expression is a variable with name 'tag'.
src/Language/Haskell/GhclibParserEx/GHC/Hs/Pat.hs view
@@ -16,10 +16,19 @@ #else import HsSyn #endif+#if defined (GHCLIB_API_811)+import GHC.Types.SrcLoc+#else import SrcLoc+#endif import TysWiredIn+#if defined (GHCLIB_API_811)+import GHC.Types.Name.Reader+import GHC.Types.Name+#else import RdrName import OccName+#endif import FastString patToStr :: LPat GhcPs -> String@@ -35,14 +44,26 @@ patToStr _ = "" #endif -strToPat :: String -> Pat GhcPs+strToPat :: String -> LPat GhcPs strToPat z- | z == "True" = ConPatIn (noLoc true_RDR) (PrefixCon [])- | z == "False" = ConPatIn (noLoc false_RDR) (PrefixCon [])- | z == "[]" = ConPatIn (noLoc $ nameRdrName nilDataConName) (PrefixCon [])+ | z == "True" =+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+ noLoc $+#endif+ ConPatIn (noLoc true_RDR) (PrefixCon [])+ | z == "False" =+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+ noLoc $+#endif+ ConPatIn (noLoc false_RDR) (PrefixCon [])+ | z == "[]" =+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+ noLoc $+#endif+ ConPatIn (noLoc $ nameRdrName nilDataConName) (PrefixCon []) | otherwise = #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)- VarPat noExtField (noLoc $ mkVarUnqual (fsLit z))+ noLoc $ VarPat noExtField (noLoc $ mkVarUnqual (fsLit z)) #else VarPat noExt (noLoc $ mkVarUnqual (fsLit z)) #endif
src/Language/Haskell/GhclibParserEx/GHC/Hs/Types.hs view
@@ -13,7 +13,11 @@ #else import HsSyn #endif+#if defined (GHCLIB_API_811)+import GHC.Types.SrcLoc+#else import SrcLoc+#endif fromTyParen :: LHsType GhcPs -> LHsType GhcPs fromTyParen (L _ (HsParTy _ x)) = x
src/Language/Haskell/GhclibParserEx/Parse.hs view
@@ -39,7 +39,11 @@ import Lexer import qualified Parser import FastString+#if defined (GHCLIB_API_811)+import GHC.Types.SrcLoc+#else import SrcLoc+#endif #if defined (GHCLIB_API_811) import GHC.Driver.Backpack.Syntax #else@@ -50,7 +54,11 @@ #else import PackageConfig #endif+#if defined (GHCLIB_API_811)+import GHC.Types.Name.Reader+#else import RdrName+#endif parse :: P a -> String -> DynFlags -> ParseResult a parse p str flags =@@ -86,12 +94,16 @@ parseDeclaration :: String -> DynFlags -> ParseResult (LHsDecl GhcPs) parseDeclaration = parse Parser.parseDeclaration +parseExpression :: String -> DynFlags -> ParseResult (LHsExpr GhcPs)+parseExpression s flags = #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)-parseExpression :: String -> DynFlags -> ParseResult RdrHsSyn.ECP+ case parse Parser.parseExpression s flags of+ POk s e ->+ unP (runECP_P e >>= return) s :: ParseResult (LHsExpr GhcPs)+ PFailed ps -> PFailed ps #else-parseExpression :: String -> DynFlags -> ParseResult (LHsExpr GhcPs)+ parse Parser.parseExpression s flags #endif-parseExpression = parse Parser.parseExpression parsePattern :: String -> DynFlags -> ParseResult (LPat GhcPs) parsePattern = parse Parser.parsePattern
test/Test.hs view
@@ -29,11 +29,14 @@ #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) import GHC.Hs-import RdrHsSyn #else import HsSyn #endif+#if defined (GHCLIB_API_811)+import GHC.Types.SrcLoc+#else import SrcLoc+#endif #if defined (GHCLIB_API_811) import GHC.Driver.Session #else@@ -141,30 +144,13 @@ exprTest :: String -> DynFlags -> (LHsExpr GhcPs -> IO ()) -> IO () exprTest s flags test = case parseExpression s flags of-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)- POk s e ->-#else- POk _ e ->-#endif-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)- case unP (runECP_P e >>= \e -> return e) s :: ParseResult (LHsExpr GhcPs) of- POk _ e ->-#endif- test e-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)- _ -> assertFailure "parse error"-#endif+ POk _ e -> test e _ -> assertFailure "parse error" patTest :: String -> DynFlags -> (LPat GhcPs -> IO ()) -> IO () patTest s flags test = case parsePattern s flags of-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)- POk _ e ->-#else- POk _ e ->-#endif- test e+ POk _ e -> test e _ -> assertFailure "parse error" fixityTests :: TestTree@@ -281,9 +267,9 @@ [ testCase "patToStr" $ test "True" $ assert' . (== "True") . patToStr , testCase "patToStr" $ test "False" $ assert' . (== "False") . patToStr , testCase "patToStr" $ test "[]" $ assert' . (== "[]") . patToStr- , testCase "strToPat" $ assert' . (== "True") . patToStr . noLoc . strToPat $ "True"- , testCase "strToPat" $ assert' . (== "False") . patToStr . noLoc . strToPat $ "False"- , testCase "strToPat" $ assert' . (== "[]") . patToStr . noLoc . strToPat $ "[]"+ , testCase "strToPat" $ assert' . (== "True") . patToStr . strToPat $ "True"+ , testCase "strToPat" $ assert' . (== "False") . patToStr . strToPat $ "False"+ , testCase "strToPat" $ assert' . (== "[]") . patToStr . strToPat $ "[]" , testCase "fromPChar" $ test "'a'" $ assert' . (== Just 'a') . fromPChar , testCase "fromPChar" $ test "\"a\"" $ assert' . isNothing . fromPChar ]