packages feed

ghc-lib-parser-ex 8.10.0.21 → 8.10.0.22

raw patch · 6 files changed

+54/−15 lines, 6 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Language.Haskell.GhclibParserEx.GHC.Hs.Expr: isListComp :: HsStmtContext Name -> Bool
+ Language.Haskell.GhclibParserEx.GHC.Hs.Expr: isMonadComp :: HsStmtContext Name -> Bool

Files

ChangeLog.md view
@@ -1,5 +1,14 @@ # Changelog for ghc-lib-parser-ex +## 8.10.0.22 released 2021-08-14+- Update to `ghc-lib-parser-0.20210814`+- Added to `GhclibParserEx.GHC.Hs.Expr`:+  - `isMonadComp`+  - `isListComp`++## 0.20210701 released 2021-07-01+- Update to `ghc-lib-0.20210701`+ ## 8.10.0.21 released 2021-06-07 - Bugfix cabal files @@ -15,7 +24,7 @@  ## 0.20210331 released 2021-02-31 - Update to `ghc-lib-0.20210331`-- Upgrade to `ghc-lib-parser-9.0.1.20210324`+- Update to `ghc-lib-parser-9.0.1.20210324`  ## 9.0.0.4 released 2021-03-11 - Bugfix for `GHC.Hs.Dump`
ghc-lib-parser-ex.cabal view
@@ -1,6 +1,6 @@-cabal-version: >= 1.18+cabal-version:  1.18 name:           ghc-lib-parser-ex-version:        8.10.0.21+version:        8.10.0.22 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/GHC/Driver/Session.hs view
@@ -44,6 +44,9 @@ instance Ord Extension where   compare = compare `on` fromEnum #endif+#if defined (GHCLIB_API_HEAD)+import GHC.Driver.Config.Parser+#endif  -- | Parse a GHC extension. readExtension :: String -> Maybe Extension@@ -158,7 +161,12 @@                          -> IO (Either String DynFlags) parsePragmasIntoDynFlags flags (enable, disable) file str =   catchErrors $ do-    let opts = getOptions flags (stringToStringBuffer str) file+    let opts =+#if defined (GHCLIB_API_HEAD)+          getOptions (initParserOpts flags) (stringToStringBuffer str) file+#else+          getOptions flags (stringToStringBuffer str) file+#endif     -- Important : apply enables, disables *before* parsing dynamic     -- file pragmas.     let flags' =  foldl' xopt_set flags enable
src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs view
@@ -9,7 +9,7 @@   isTag, isDol, isDot, isReturn, isSection, isRecConstr, isRecUpdate,   isVar, isPar, isApp, isOpApp, isAnyApp, isLexeme, isLambda, isQuasiQuote,   isDotApp, isTypeApp, isWHNF, isLCase,-  isFieldPun, isFieldPunUpdate, isRecStmt, isParComp, isMDo, isTupleSection, isString, isPrimLiteral,+  isFieldPun, isFieldPunUpdate, isRecStmt, isParComp, isMDo, isListComp, isMonadComp, isTupleSection, isString, isPrimLiteral,   isSpliceDecl, isFieldWildcard, isUnboxed, isWholeFrac, isStrictMatch, isMultiIf, isProc, isTransStmt,   hasFieldsDotDot,   varToStr, strToVar,@@ -117,12 +117,21 @@ isParComp :: StmtLR GhcPs GhcPs (LHsExpr GhcPs) -> Bool isParComp = \case ParStmt{} -> True; _ -> False +-- TODO: Seems `HsStmtContext (HsDoRn p)` on master right now. #if defined (GHCLIB_API_HEAD) || defined(GHCLIB_API_902) || defined (GHCLIB_API_900) isMDo :: HsStmtContext GhcRn -> Bool isMDo = \case MDoExpr _ -> True; _ -> False+isMonadComp :: HsStmtContext GhcRn -> Bool+isMonadComp = \case MonadComp -> True; _ -> False+isListComp :: HsStmtContext GhcRn -> Bool+isListComp = \case ListComp -> True; _ -> False #else isMDo :: HsStmtContext Name -> Bool isMDo = \case MDoExpr -> True; _ -> False+isMonadComp :: HsStmtContext Name -> Bool+isMonadComp = \case MonadComp -> True; _ -> False+isListComp :: HsStmtContext Name -> Bool+isListComp = \case ListComp -> True; _ -> False #endif  isTupleSection :: HsTupArg GhcPs -> Bool
src/Language/Haskell/GhclibParserEx/GHC/Parser.hs view
@@ -28,7 +28,12 @@ import HsSyn #endif #if defined (GHCLIB_API_HEAD) || defined(GHCLIB_API_902)+#  if defined (GHCLIB_API_902) import GHC.Driver.Config+#  endif+#  if defined (GHCLIB_API_HEAD)+import GHC.Driver.Config.Parser+#  endif #endif #if defined (GHCLIB_API_HEAD) || defined(GHCLIB_API_902) || defined (GHCLIB_API_900) import GHC.Parser.PostProcess
test/Test.hs view
@@ -353,7 +353,13 @@   , testCase "isQuasiQuote" $ test "[expr(1 + 2)]" $ assert' . not . isQuasiQuote   , testCase "isWholeFrac" $ test "3.2e1" $ assert' . isWholeFrac . unLoc   , testCase "isWholeFrac" $ test "3.22e1" $ assert' . not . isWholeFrac . unLoc-  , testCase "isMDo" $ test "mdo { pure () }" $ assert' . any isMDo . universeBi+  , testCase "isMDo" $ test_with_exts [ RecursiveDo ] "mdo { pure () }" $ assert' . any isMDo . universeBi+  , testCase "isListComp (1)" $ test "[ x + y | x <- xs, y <- ys ]" $ assert' . any isListComp . universeBi+  , testCase "isListComp (2)" $ test_with_exts [ MonadComprehensions ] "[ x + y | x <- xs, y <- ys ]" $ assert' . any isMonadComp . universeBi+  , testCase "isMonadComp (0)" $ test_with_exts [ MonadComprehensions ] "[ x + y | x <- Just 1, y <- Just 2 ]" $ assert' . not . any isListComp . universeBi+  , testCase "isMonadComp (1)" $ test_with_exts [ MonadComprehensions ] "[ x + y | x <- Just 1, y <- Just 2 ]" $ assert' . any isMonadComp . universeBi+  , testCase "isMonadComp (2)" $ test_with_exts [] "[ x + y | x <- Just 1, y <- Just 2 ]" $ assert' . not . any isMonadComp . universeBi+  , testCase "isMonadComp (3)" $ test_with_exts [] "[ x + y | x <- Just 1, y <- Just 2 ]" $ assert' . any isListComp . universeBi   , testCase "strToVar" $ assert' . isVar . strToVar $ "foo"   , testCase "varToStr" $ test "[]" $ assert' . (== "[]") . varToStr   , testCase "varToStr" $ test "foo" $ assert' . (== "foo") . varToStr@@ -361,15 +367,17 @@   ]   where     assert' = assertBool ""-    test s = exprTest s flags-    flags = foldl' xopt_set (defaultDynFlags fakeSettings fakeLlvmConfig)-              [ TemplateHaskell-              , TemplateHaskellQuotes-              , QuasiQuotes-              , TypeApplications-              , LambdaCase-              , RecursiveDo-              ]+    test s = exprTest s (flags [])+    test_with_exts exts s = exprTest s (flags exts)+    flags exts = foldl' xopt_set (defaultDynFlags fakeSettings fakeLlvmConfig)+              (exts +++                 [ TemplateHaskell+                 , TemplateHaskellQuotes+                 , QuasiQuotes+                 , TypeApplications+                 , LambdaCase+                 ]+              )  patternPredicateTests :: TestTree patternPredicateTests = testGroup "Pattern predicate tests"