packages feed

ghc-lib-parser-ex 8.8.5.1 → 8.8.5.2

raw patch · 4 files changed

+38/−3 lines, 4 filesdep +containersPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

Dependencies added: containers

API changes (from Hackage documentation)

+ Language.Haskell.GhclibParserEx.DynFlags: extensionImplications :: [(Extension, ([Extension], [Extension]))]
+ Language.Haskell.GhclibParserEx.DynFlags: readExtension :: String -> Maybe Extension

Files

ChangeLog.md view
@@ -2,6 +2,12 @@  ## Unreleased changes +## 8.8.5.2 released 2020-02-16+- New `DynFlags` functions `readExtension, `extensionImplications`.++## 8.8.5.1 released 2020-02-09+- Expression predicate tests.+ ## 8.8.5.0 released 2020-02-07 - Expose `impliedGFlags` and friends from `DynFlags` (https://github.com/shayne-fletcher/ghc-lib-parser-ex/issues/19). 
ghc-lib-parser-ex.cabal view
@@ -1,6 +1,6 @@ cabal-version: >= 1.18 name:           ghc-lib-parser-ex-version:        8.8.5.1+version:        8.8.5.2 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@@ -44,7 +44,8 @@   build-depends:       base >=4.7 && <5,       uniplate >= 1.5,-      bytestring >= 0.10.8.2+      bytestring >= 0.10.8.2,+      containers >= 0.6.0.1   if !flag(ghc-lib) && impl(ghc >= 8.8.0) && impl(ghc < 8.9.0)       build-depends:         ghc == 8.8.*,
src/Language/Haskell/GhclibParserEx/DynFlags.hs view
@@ -5,9 +5,11 @@ #include "ghclib_api.h"  module Language.Haskell.GhclibParserEx.DynFlags(+      readExtension+    , extensionImplications     -- Copied from DynFlags (see     -- https://gitlab.haskell.org/ghc/ghc/merge_requests/2654).-      TurnOnFlag, turnOn, turnOff, impliedGFlags, impliedOffGFlags, impliedXFlags+    , TurnOnFlag, turnOn, turnOff, impliedGFlags, impliedOffGFlags, impliedXFlags     --     , parsePragmasIntoDynFlags   ) where@@ -20,6 +22,23 @@ import HscTypes import GHC.LanguageExtensions.Type import Data.List+import Data.Maybe+import qualified Data.Map as Map++-- | Parse a GHC extension.+readExtension :: String -> Maybe Extension+readExtension = (`Map.lookup` exts)+  where exts = Map.fromList [(show x, x) | x <- [minBound .. maxBound]]++-- | Implicitly enabled/disabled extensions.+extensionImplications :: [(Extension, ([Extension], [Extension]))]+extensionImplications = map f $ Map.toList implicationsMap+  where+    f (e, ps) = (fromJust (readExtension e), ps)+    implicationsMap :: Map.Map String ([Extension], [Extension])+    implicationsMap = Map.fromListWith (<>)+      [(show a, ([c | b], [c | not b]))+        | (a, flag, c) <- impliedXFlags, let b = flag == turnOn]  -- Copied from 'ghc/compiler/main/DynFlags.hs'. 
test/Test.hs view
@@ -50,6 +50,7 @@   , fixityTests   , extendInstancesTests   , expressionPredicateTests+  , dynFlagsTests   ]  makeFile :: FilePath -> String -> IO FilePath@@ -253,3 +254,11 @@     test s = exprTest s flags     flags = foldl' xopt_set (defaultDynFlags fakeSettings fakeLlvmConfig)               [ TemplateHaskell, QuasiQuotes, TypeApplications, LambdaCase ]++dynFlagsTests :: TestTree+dynFlagsTests = testGroup "DynFlags tests"+  [ testCase "extensionImplications" $ do+      Just (_, (es, ds)) <- return $ find (\(e, _) -> e == DeriveTraversable) extensionImplications+      assertBool "no extensions disabled" (null ds)+      assertBool "two extensions enabled" $ DeriveFunctor `elem` es && DeriveFoldable `elem` es+  ]