ghc-lib-parser-ex 9.0.0.6 → 9.2.0.0
raw patch · 7 files changed
+41/−91 lines, 7 filesdep ~ghcdep ~ghc-lib-parserPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: ghc, ghc-lib-parser
API changes (from Hackage documentation)
- Language.Haskell.GhclibParserEx.GHC.Hs.Expr: isQuasiQuoteExpr :: LHsExpr GhcPs -> Bool
- Language.Haskell.GhclibParserEx.GHC.Hs.Expr: isQuasiQuoteSplice :: HsSplice GhcPs -> Bool
- Language.Haskell.GhclibParserEx.GHC.Hs.Type: fromTyParen :: LHsType GhcPs -> LHsType GhcPs
- Language.Haskell.GhclibParserEx.GHC.Hs.Type: isKindTyApp :: LHsType GhcPs -> Bool
- Language.Haskell.GhclibParserEx.GHC.Hs.Type: isTyQuasiQuote :: LHsType GhcPs -> Bool
- Language.Haskell.GhclibParserEx.GHC.Hs.Type: isUnboxedTuple :: HsTupleSort -> Bool
+ Language.Haskell.GhclibParserEx.Dump: BlankEpAnnotations :: BlankEpAnnotations
+ Language.Haskell.GhclibParserEx.Dump: BlankSrcSpanFile :: BlankSrcSpan
+ Language.Haskell.GhclibParserEx.Dump: NoBlankEpAnnotations :: BlankEpAnnotations
+ Language.Haskell.GhclibParserEx.Dump: data BlankEpAnnotations
+ Language.Haskell.GhclibParserEx.GHC.Hs.Types: fromTyParen :: LHsType GhcPs -> LHsType GhcPs
+ Language.Haskell.GhclibParserEx.GHC.Hs.Types: isTyQuasiQuote :: LHsType GhcPs -> Bool
+ Language.Haskell.GhclibParserEx.GHC.Hs.Types: isUnboxedTuple :: HsTupleSort -> Bool
- Language.Haskell.GhclibParserEx.Dump: showAstData :: Data a => BlankSrcSpan -> a -> SDoc
+ Language.Haskell.GhclibParserEx.Dump: showAstData :: Data a => BlankSrcSpan -> BlankEpAnnotations -> a -> SDoc
- Language.Haskell.GhclibParserEx.GHC.Hs.Expr: isStrictMatch :: HsMatchContext RdrName -> Bool
+ Language.Haskell.GhclibParserEx.GHC.Hs.Expr: isStrictMatch :: HsMatchContext GhcPs -> Bool
- Language.Haskell.GhclibParserEx.GHC.Parser: parseIdentifier :: String -> DynFlags -> ParseResult (Located RdrName)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseIdentifier :: String -> DynFlags -> ParseResult (LocatedN RdrName)
- Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: fromQual :: Located RdrName -> Maybe OccName
+ Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: fromQual :: LocatedN RdrName -> Maybe OccName
- Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: isSpecial :: Located RdrName -> Bool
+ Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: isSpecial :: LocatedN RdrName -> Bool
- Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: rdrNameStr :: Located RdrName -> String
+ Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: rdrNameStr :: LocatedN RdrName -> String
- Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: unqual :: Located RdrName -> Located RdrName
+ Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: unqual :: LocatedN RdrName -> LocatedN RdrName
Files
- ChangeLog.md +0/−14
- README.md +1/−1
- ghc-lib-parser-ex.cabal +7/−8
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs +4/−8
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Type.hs +0/−36
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Types.hs +27/−4
- test/Test.hs +2/−20
ChangeLog.md view
@@ -1,19 +1,5 @@ # Changelog for ghc-lib-parser-ex -## 9.0.0.5 released 2021-12-25-- Bugfix to `isFieldPunUpdate`-- New module `Language.Haskell.GHC.Hs.Type.hs` to replace `Language.Haskell.GHC.Hs.Types.hs` (which remains for now but deprecated and will be removed in a future release)- - New function `isKindTyApp`-- Rename `isQuasiQuote` to `isQuasiQuoteExpr`-- Add new function `isQuasiQuoteSplice`-- Update to `ghc-lib-parser-9.0.2.20211226`--## 9.2.0.1 released 2021-11-01-- Update to `ghc-lib-parser-9.2.1.20211101`--## 0.20211101 released 2021-11-01-- Update to `ghc-lib-parser-0.20211101`- ## 9.2.0.0 released 2021-10-30 - Update to `ghc-lib-parser-9.2.1.20211030`
README.md view
@@ -27,7 +27,7 @@ ``` Run `stack runhaskell --package extra --package optparse-applicative CI.hs -- --help` for more options. -To run [`hlint`](https://github.com/ndmitchell/hlint) on this repository, `hlint --cpp-include cbits --cpp-define GHCLIB_API_XXX .` (where `XXX` at this time is one of `808`, `810`, `900`, `902` or `HEAD`).+To run [`hlint`](https://github.com/ndmitchell/hlint) on this repository, `hlint --cpp-include cbits --cpp-define GHCLIB_API_XXX .` (where `XXX` at this time is one of `808`, `810` or `900`). ## Releasing `ghc-lib-parser-ex` (notes for maintainers)
ghc-lib-parser-ex.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: ghc-lib-parser-ex-version: 9.0.0.6+version: 9.2.0.0 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@@ -41,7 +41,6 @@ Language.Haskell.GhclibParserEx.GHC.Hs Language.Haskell.GhclibParserEx.GHC.Hs.Expr Language.Haskell.GhclibParserEx.GHC.Hs.Pat- Language.Haskell.GhclibParserEx.GHC.Hs.Type Language.Haskell.GhclibParserEx.GHC.Hs.Types Language.Haskell.GhclibParserEx.GHC.Hs.Decls Language.Haskell.GhclibParserEx.GHC.Hs.Binds@@ -63,15 +62,15 @@ uniplate >= 1.5, bytestring >= 0.10.8.2, containers >= 0.5.8.1- if flag(auto) && impl(ghc >= 9.0.0) && impl(ghc < 9.1.0)+ if flag(auto) && impl(ghc >= 9.2.0) && impl(ghc < 9.3.0) build-depends:- ghc == 9.0.*,+ ghc == 9.2.*, ghc-boot-th, ghc-boot else if flag(auto) build-depends:- ghc-lib-parser == 9.0.*+ ghc-lib-parser == 9.2.* else if flag(no-ghc-lib) build-depends:@@ -107,15 +106,15 @@ , extra >=1.6 , uniplate >= 1.6.12 , ghc-lib-parser-ex- if flag(auto) && impl(ghc >= 9.0.0) && impl(ghc < 9.1.0)+ if flag(auto) && impl(ghc >= 9.2.0) && impl(ghc < 9.3.0) build-depends:- ghc == 9.0.*,+ ghc == 9.2.*, ghc-boot-th, ghc-boot else if flag(auto) build-depends:- ghc-lib-parser == 9.0.*+ ghc-lib-parser == 9.2.* else if flag(no-ghc-lib) build-depends:
src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs view
@@ -7,7 +7,7 @@ #include "ghclib_api.h" module Language.Haskell.GhclibParserEx.GHC.Hs.Expr( isTag, isDol, isDot, isReturn, isSection, isRecConstr, isRecUpdate,- isVar, isPar, isApp, isOpApp, isAnyApp, isLexeme, isLambda, isQuasiQuote, isQuasiQuoteExpr, isQuasiQuoteSplice,+ isVar, isPar, isApp, isOpApp, isAnyApp, isLexeme, isLambda, isQuasiQuote, isDotApp, isTypeApp, isWHNF, isLCase, isFieldPun, isFieldPunUpdate, isRecStmt, isParComp, isMDo, isListComp, isMonadComp, isTupleSection, isString, isPrimLiteral, isSpliceDecl, isFieldWildcard, isUnboxed, isWholeFrac, isStrictMatch, isMultiIf, isProc, isTransStmt,@@ -45,7 +45,7 @@ isTag tag = \case (L _ (HsVar _ (L _ s))) -> occNameString (rdrNameOcc s) == tag; _ -> False isDot, isDol, isReturn, isSection, isRecConstr, isRecUpdate,- isVar, isPar, isApp, isOpApp, isAnyApp, isLexeme, isQuasiQuoteExpr,+ isVar, isPar, isApp, isOpApp, isAnyApp, isLexeme, isQuasiQuote, isLambda, isDotApp, isTypeApp, isWHNF, isLCase :: LHsExpr GhcPs -> Bool isDol = isTag "$" isDot = isTag "."@@ -60,8 +60,7 @@ isAnyApp x = isApp x || isOpApp x isLexeme = \case (L _ HsVar{}) -> True; (L _ HsOverLit{}) -> True; (L _ HsLit{}) -> True; _ -> False isLambda = \case (L _ HsLam{}) -> True; _ -> False-isQuasiQuoteExpr = \case (L _ (HsSpliceE _ HsQuasiQuote{})) -> True; _ -> False-isQuasiQuote = isQuasiQuoteExpr -- Backwards compat.+isQuasiQuote = \case (L _ (HsSpliceE _ HsQuasiQuote{})) -> True; _ -> False isDotApp = \case (L _ (OpApp _ _ op _)) -> isDot op; _ -> False isTypeApp = \case (L _ HsAppType{}) -> True; _ -> False isWHNF = \case@@ -83,9 +82,6 @@ _ -> False isLCase = \case (L _ HsLamCase{}) -> True; _ -> False -isQuasiQuoteSplice :: HsSplice GhcPs -> Bool-isQuasiQuoteSplice = \case HsQuasiQuote{} -> True; _ -> False- #if defined (GHCLIB_API_HEAD) || defined(GHCLIB_API_902) || defined (GHCLIB_API_901) isStrictMatch :: HsMatchContext GhcPs -> Bool #else@@ -104,7 +100,7 @@ -- Field puns in updates have a different type to field puns in -- constructions. #if defined (GHCLIB_API_HEAD)-isFieldPunUpdate :: HsFieldBind (LAmbiguousFieldOcc GhcPs) (LHsExpr GhcPs) -> Bool+isFieldPunUpdate :: HsFieldBind (FieldOcc GhcPs) (LHsExpr GhcPs) -> Bool isFieldPunUpdate = \case HsFieldBind {hfbPun=True} -> True; _ -> False #else isFieldPunUpdate :: HsRecField' (AmbiguousFieldOcc GhcPs) (LHsExpr GhcPs) -> Bool
− src/Language/Haskell/GhclibParserEx/GHC/Hs/Type.hs
@@ -1,36 +0,0 @@--- Copyright (c) 2021, Shayne Fletcher. All rights reserved.--- SPDX-License-Identifier: BSD-3-Clause.--{-# LANGUAGE CPP #-}-{-# LANGUAGE LambdaCase #-}-#include "ghclib_api.h"-module Language.Haskell.GhclibParserEx.GHC.Hs.Type (- fromTyParen- , isTyQuasiQuote, isUnboxedTuple, isKindTyApp-) where--#if defined (GHCLIB_API_HEAD) || defined (GHCLIB_API_902) || defined (GHCLIB_API_900) || defined (GHCLIB_API_810)-import GHC.Hs-#else-import HsSyn-#endif-#if defined (GHCLIB_API_HEAD) || defined (GHCLIB_API_902) || defined (GHCLIB_API_900)-import GHC.Types.SrcLoc-#else-import SrcLoc-#endif--isKindTyApp :: LHsType GhcPs -> Bool-isKindTyApp = \case (L _ HsAppKindTy{}) -> True; _ -> False--fromTyParen :: LHsType GhcPs -> LHsType GhcPs-fromTyParen (L _ (HsParTy _ x)) = x-fromTyParen x = x--isTyQuasiQuote :: LHsType GhcPs -> Bool-isTyQuasiQuote (L _ (HsSpliceTy _ HsQuasiQuote{})) = True-isTyQuasiQuote _ = False--isUnboxedTuple :: HsTupleSort -> Bool-isUnboxedTuple HsUnboxedTuple = True-isUnboxedTuple _ = False
src/Language/Haskell/GhclibParserEx/GHC/Hs/Types.hs view
@@ -1,9 +1,32 @@ -- Copyright (c) 2020, Shayne Fletcher. All rights reserved. -- SPDX-License-Identifier: BSD-3-Clause. -module Language.Haskell.GhclibParserEx.GHC.Hs.Types- {-# DEPRECATED "Use Language.Haskell.GhclibParserEx.GHC.Hs.Type instead" #-} (- module Language.Haskell.GhclibParserEx.GHC.Hs.Type+{-# LANGUAGE CPP #-}+#include "ghclib_api.h"+module Language.Haskell.GhclibParserEx.GHC.Hs.Types(+ fromTyParen+ , isTyQuasiQuote, isUnboxedTuple ) where -import Language.Haskell.GhclibParserEx.GHC.Hs.Type+#if defined (GHCLIB_API_HEAD) || defined (GHCLIB_API_902) || defined (GHCLIB_API_900) || defined (GHCLIB_API_810)+import GHC.Hs+#else+import HsSyn+#endif+#if defined (GHCLIB_API_HEAD) || defined (GHCLIB_API_902) || defined (GHCLIB_API_900)+import GHC.Types.SrcLoc+#else+import SrcLoc+#endif++fromTyParen :: LHsType GhcPs -> LHsType GhcPs+fromTyParen (L _ (HsParTy _ x)) = x+fromTyParen x = x++isTyQuasiQuote :: LHsType GhcPs -> Bool+isTyQuasiQuote (L _ (HsSpliceTy _ HsQuasiQuote{})) = True+isTyQuasiQuote _ = False++isUnboxedTuple :: HsTupleSort -> Bool+isUnboxedTuple HsUnboxedTuple = True+isUnboxedTuple _ = False
test/Test.hs view
@@ -31,7 +31,6 @@ import Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstances import Language.Haskell.GhclibParserEx.GHC.Hs.Expr import Language.Haskell.GhclibParserEx.GHC.Hs.Pat-import Language.Haskell.GhclibParserEx.GHC.Hs.Type -- We only test 'isImportQualifiedPost' at this time which requires >= -- 8.10; avoid unused import warning. #if defined (MIN_VERSION_ghc_lib_parser)@@ -92,7 +91,6 @@ , fixityTests , extendInstancesTests , expressionPredicateTests- , typePredicateTests , patternPredicateTests , dynFlagsTests , nameTests@@ -226,12 +224,6 @@ POk _ e -> test e _ -> assertFailure "parse error" -typeTest :: String -> DynFlags -> (LHsType GhcPs -> IO ()) -> IO ()-typeTest s flags test =- case parseType s flags of- POk _ e -> test e- _ -> assertFailure "parse error"- patTest :: String -> DynFlags -> (LPat GhcPs -> IO ()) -> IO () patTest s flags test = case parsePattern s flags of@@ -292,16 +284,6 @@ where flags = defaultDynFlags fakeSettings fakeLlvmConfig -typePredicateTests :: TestTree-typePredicateTests = testGroup "Type predicate tests"- [ testCase "isKindTyApp" $ test_with_exts [TypeApplications] "K @T" $ assert' . isKindTyApp- , testCase "isKindTyApp" $ test_with_exts [TypeApplications] "K T" $ assert' . not . isKindTyApp- ]- where- assert' = assertBool ""- test_with_exts exts s = typeTest s (flags exts)- flags = foldl' xopt_set (defaultDynFlags fakeSettings fakeLlvmConfig)- expressionPredicateTests :: TestTree expressionPredicateTests = testGroup "Expression predicate tests" [ testCase "isTag" $ test "foo" $ assert' . isTag "foo"@@ -368,8 +350,8 @@ , testCase "isSpliceDecl" $ test "$x" $ assert' . isSpliceDecl . unLoc , testCase "isSpliceDecl" $ test "f$x" $ assert' . not . isSpliceDecl . unLoc , testCase "isSpliceDecl" $ test "$(a + b)" $ assert' . isSpliceDecl . unLoc- , testCase "isQuasiQuoteExpr" $ test "[expr|1 + 2|]" $ assert' . isQuasiQuoteExpr- , testCase "isQuasiQuoteExpr" $ test "[expr(1 + 2)]" $ assert' . not . isQuasiQuoteExpr+ , testCase "isQuasiQuote" $ test "[expr|1 + 2|]" $ assert' . isQuasiQuote+ , 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_with_exts [ RecursiveDo ] "mdo { pure () }" $ assert' . any isMDo . universeBi