ghc-lib-parser-ex
Programming with GHC parse trees
https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme
| LTS Haskell 24.18: | 9.12.0.0 | 
| Stackage Nightly 2025-11-04: | 9.12.0.0 | 
| Latest on Hackage: | 9.12.0.0 | 
ghc-lib-parser-ex-9.12.0.0@sha256:84310cab4612e96ce312954e6ced73f8565f6c723864862356dfc6d9b2cc725a,3344Module documentation for 9.12.0.0
- Language
- Language.Haskell
- Language.Haskell.GhclibParserEx
- Language.Haskell.GhclibParserEx.Dump
 - Language.Haskell.GhclibParserEx.Fixity
 - Language.Haskell.GhclibParserEx.GHC
- Language.Haskell.GhclibParserEx.GHC.Driver
 - Language.Haskell.GhclibParserEx.GHC.Hs
- Language.Haskell.GhclibParserEx.GHC.Hs.Binds
 - Language.Haskell.GhclibParserEx.GHC.Hs.Decls
 - Language.Haskell.GhclibParserEx.GHC.Hs.Dump
 - Language.Haskell.GhclibParserEx.GHC.Hs.Expr
 - Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstances
 - Language.Haskell.GhclibParserEx.GHC.Hs.ImpExp
 - Language.Haskell.GhclibParserEx.GHC.Hs.Pat
 - Language.Haskell.GhclibParserEx.GHC.Hs.Type
 - Language.Haskell.GhclibParserEx.GHC.Hs.Types
 
 - Language.Haskell.GhclibParserEx.GHC.Parser
 - Language.Haskell.GhclibParserEx.GHC.Settings
 - Language.Haskell.GhclibParserEx.GHC.Types
- Language.Haskell.GhclibParserEx.GHC.Types.Name
 
 - Language.Haskell.GhclibParserEx.GHC.Utils
 
 
 
 - Language.Haskell.GhclibParserEx
 
 - Language.Haskell
 
ghc-lib-parser-ex
Copyright © 2020-2024 Shayne Fletcher. All rights reserved. SPDX-License-Identifier: BSD-3-Clause
The ghc-lib-parser-ex package contains GHC API parse tree utilities. It works with or without ghc-lib-parser.
Using ghc-lib-parser-ex
Package ghc-lib-parser-ex is on Hackage e.g. cabal install ghc-lib-parser-ex. Like ghc-lib-parser, there are two release streams within the ghc-lib-parser-ex name.
Versioning policy
Package ghc-lib-parser-ex does not conform to the Haskell Package Versioning Policy.
Version numbers are of the form α.β.γ.δ where α.β corresponds to a GHC series and γ.δ are the major and minor parts of the ghc-lib-ex-parser package release. Examples:
- Version 8.10.1.3 is compatible with any 
ghc-lib-parser-8.10.*(orghc-8.10.*) package; - Version 0.20190204.2.0 is compatible with 
ghc-lib-parser-0.20190204. 
The major part γ of the release number indicates an interface breaking change from the previous release. The minor part δ indicates a non-interface breaking change from the previous release.
Building ghc-lib-parser-ex
Produce and test ghc-lib-parser-ex package distributions by executing the CI script:
    git clone [email protected]:shayne-fletcher/ghc-lib-parser-ex.git
    cd ghc-lib-parser-ex
    cabal run exe:ghc-lib-parser-ex-build-tool --allow-newer="ghc-lib-parser-ex:ghc-lib-parser" --constraint="ghc-lib-parser == 9.10.1.20240511" -- --version-tag 9.10.0.1
To run hlint on this repository, hlint --cpp-include cbits --cpp-define GHC_XXXX . (where XXXX at this time is one of 8_8, 8_10, 9_0, 9_2, 9_4, 9_6, 9_8 or 9_10).
Releasing ghc-lib-parser-ex (notes for maintainers)
Update the changelog, git tag <version> && git push origin <version> then build via the above instructions and upload the resulting .tar.gz files to Hackage.
Changes
Changelog for ghc-lib-parser-ex
9.12.0.0 released
- Add support for ghc-9.12 series: 
GHCLIB_API_912 
9.10.0.0 released
- Deprecate 
Dump - New module 
GHC.Hs.Dump - Add support for ghc-9.10 series: 
GHCLIB_API_910 
9.8.0.2 released
- Fix broken cpp in 
isStrictMatch 
9.8.0.1 released
- New functions 
isWildPat 
9.8.0.0 released
- Companion to 
ghc-lib-parser-9.8.1.20231009 
9.6.0.2 released
- New functions 
isTypedSplice,isUntypedSpice 
9.6.0.1 released
- Add 
&tobaseFixities - Add support for ghc-9.8 series: 
GH_9_8 - New functions 
isLetStmtandisDo 
9.6.0.0 released
- Add support for ghc-9.6 series: 
GHC_9_6 
0.20221201 released
- Update to 
ghc-lib-parser-0.20221201 
0.20221101 released
- Update to 
ghc-lib-parser-0.20221101 
0.20221001 released
- Update to 
ghc-lib-parser-0.20221001 
0.20220901 released
- Update to 
ghc-lib-parser-0.20220901 
9.4.0.0 released
- Update to 
ghc-lib-parser-9.4.1.20220807 
0.20220801 released
- Update to 
ghc-lib-parser-0.20220801 
9.2.1.1 released
- Update to 
ghc-lib-parser-9.2.4.20220527 
0.20220701 released
- Update to 
ghc-lib-parser-0.20220701 
9.2.1.0 released
- The Cabal flag 
autonow defaults toFalse:- When 
autohas the valueFalse:ghc-lib-parser-exdepends onghc-lib-parser
 - When 
autohas the valueTrue:- When the build compiler is >=9.2.2 && <9.3.0
ghc-lib-parser-exdepends on the compiler libs
 - Otherwise, 
ghc-lib-parser-exdepends onghc-lib-parser 
 - When the build compiler is >=9.2.2 && <9.3.0
 
 - When 
 - Deprecated modues removed:
Language.Haskell.GhclibParserEx.ConfigLanguage.Haskell.GhclibParserEx.ParseLanguage.Haskell.GhclibParserEx.Outputable
 
0.20220601 released
- Update to 
ghc-lib-parser-0.20220601 fakeLlvmConfigremoved forGHCLIB_API_HEAD
9.2.0.4 released
- Update to 
ghc-lib-parser-9.2.3.20220527 - Add support for ghc-9.4 series: 
GHCLIB_API_904 
0.20220501 released
- Update to 
ghc-lib-parser-0.20220501 
0.20220401 released
- Update to 
ghc-lib-parser-0.20220401 
9.2.0.3 released
- Fix ghc bounds in auto mode to use ghc-lib not ghc if build compiler ghc-9.2.1 (see issue)
 
9.2.0.2 released
- Update to 
ghc-lib-parser-9.2.2.20220307 
0.20220301 released
- Update to 
ghc-lib-parser-0.20220301 
8.10.0.24 released
- Update to 
ghc-lib-parser-8.10.7.20220219 
0.20220201 released
- Update to 
ghc-lib-parser-0.20220201 
0.20220103 released
- New function 
isOverLabel - Update to 
ghc-lib-parser-0.20220103 
9.0.0.6 released 2021-12-26
- Add back 
isQuasiQuotefor backwards compatibility 
9.0.0.5 released 2021-12-25
- Bugfix to 
isFieldPunUpdate - New module 
Language.Haskell.GHC.Hs.Type.hsto replaceLanguage.Haskell.GHC.Hs.Types.hs(which remains for now but deprecated and will be removed in a future release)- New function 
isKindTyApp 
 - New function 
 - Rename 
isQuasiQuotetoisQuasiQuoteExpr - 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 
0.20211001 released 2021-10-01
- Add 
isSplicePattoLanguage.Haskell.GhclibParserEx.GHC.Hs.Pat - Use 
genericPlatformonGHCLIB_API_HEADinGhclibParserEx.GHC.Settings.Config.hs - Update to 
ghc-lib-parser-0.20211001 
0.20210901 released 2021-09-01
- Update to 
ghc-lib-parser-0.20210901 
8.10.0.23 released 2021-08-28
- Update to 
ghc-lib-parser-8.10.7.20210828 
8.10.0.22 released 2021-08-14
- Update to 
ghc-lib-parser-0.20210814 - Added to 
GhclibParserEx.GHC.Hs.Expr:isMonadCompisListComp
 
0.20210701 released 2021-07-01
- Update to 
ghc-lib-0.20210701 
8.10.0.21 released 2021-06-07
- Bugfix cabal files
 
8.10.0.20 released 2021-06-06
- Update to 
ghc-lib-8.10.5.20210606 
0.20210601 released 2021-06-01
- Update to 
ghc-lib-parser-0.20210601 - Update types in 
GHC.Types.Name.Readerfor ghc-9.2.1,LocatedbecomesLocatedN 
0.20210501 released 2021-05-01
- Update to 
ghc-lib-0.20210501 
0.20210331 released 2021-02-31
- Update to 
ghc-lib-0.20210331 - Update to 
ghc-lib-parser-9.0.1.20210324 
9.0.0.4 released 2021-03-11
- Bugfix for 
GHC.Hs.Dump 
0.20210228 released 2021-02-28
- Update to 
ghc-lib-0.20210228 
9.0.0.3 released 2021-02-08
- Cabal bugfix
 
9.0.0.2 released 2021-02-08
- Cabal bugfix
 
8.10.0.19 released 2021-02-08
- Cabal bugfix
 
8.10.0.18 released 2021-02-06
- Update to ghc-8.10.4.
 
9.0.0.1 released 2021-02-05
- Upgrade Cabal defaults flag to 9.0.1
 
9.0.0.0 released 2021-02-05
- Update to ghc-9.0.1
 
0.20210201 released 2021-02-01
- Update to 
ghc-lib-0.20210201 
0.20210101 released 2021-01-01
- Update to 
ghc-lib-0.20210101 
8.10.0.17 released 2020-12-20
- Update to ghc-8.10.3.
 
0.20201101 released 2020-11-01
- Update to 
ghc-lib-0.20201101 
0.20201001 released 2020-10-01
- Update to 
ghc-lib-0.20201001 GHCLIB_API_811->GHCLIB_API_HEAD- Add support for 
GHCLIB_API_900 
0.20200901 released 2020-09-01
- Update to 
ghc-lib-0.20200901 
8.10.0.16 released 2020-08-08
- Update to ghc-8.10.2.
 
0.20200801 released 2020-08-01
- Update to 
ghc-lib-0.20200801 
8.8.6.1 released 2020-07-16
0.20200704 released 2020-07-04
- New function 
isImportQualifiedPost 
8.10.0.15 released 2020-07-04
- New function 
isImportQualifiedPost 
8.10.0.14 released 2020-06-10
- New function 
isSymbolRdrName - New module
Language.Haskell.GhclibParserEx.GHC.Settings.Configto replaceLanguage.Haskell.GhclibParserEx.Config(which remains for now but deprecated and will be removed in a future release)
 
0.20200601 released 2020-06-01
8.10.0.13 released 2020-05-31
- Sync 
extrawith HLint 
8.10.0.12 released 2020-05-31
- New module 
Language.Haskell.GhclibParserEx.GHC.Hs 
8.10.0.11 released 2020-05-18
- Upgrade to 
ghc-lib-parser-8.10.1.20200523 
8.10.0.10 released 2020-05-18
- Upgrade to 
ghc-lib-parser-8.10.1.20200518 
8.10.0.9 released 2020-05-16
- New modules
Language.Haskell.GhclibParserEx.GHC.Hs.BindsLanguage.Haskell.GhclibParserEx.GHC.Hs.ImpExp
 
8.10.0.8 released 2020-05-14
- New module 
Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader 
8.10.0.7 released 2020-05-13
- New function 
fixitiesFromModule 
8.10.0.6 released 2020-05-05
- Bugfix in 
parsePragmasIntoDynFlagsthat meant that default enabled/disabled extensions subsequently disabled/enabled via pragma weren’t getting disabled/enabled 
8.10.0.5 released 2020-05-02
- New modules
Language.Haskell.GhclibParserEx.GHC.Parser,Language.Haskell.GhcLibParserEx.GHC.Utils.Outputableto replaceLanguage.Haskell.GhclibParserEx.ParseandLanguage.Haskell.GhclibParserEx.Outputable(which remain for now but deprecated and will be removed in a future release)
 
0.20200501 released 2020-05-01
8.10.0.4 released 2020-04-04
- Add expression predicates 
isWholeFrac,isFieldPunUpdate,isStrictMatch,isMultiIf,isProc,isTransStmt; - Add pattern predicate 
isPFieldPun. 
8.10.0.3 released 2020-04-03
strToPatnow returns anLPat GhcPsparseExpressionnow returns anParseResult (LHsExpr GhcPs)(>= ghc-8.10)
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 
autoandno-ghc-lib. Default behavior exactly ashlintlinkingghc-lib-parser-8.10.*if not onghc-8.10.*andghc-8.10.*otherwise. 
 - Have two flags 
 
8.10.0.1 released 2020-03-28
- Unless the Cabal flag 
ghc-libistruelink native ghc-libs (without regard for the compiler version) - Change the signature of 
hasPFieldsDotDot- This has no impact on 8.8 parse trees but matters when it comes to >= 8.10
 
 - Change the signature of 
isPFieldWildcard- This has no impact on 8.8 parse trees but matters when it comes to >= 8.10
 
 
8.10.0.0 released 2020-03-24
- First release of the ghc-8.10 series
 
8.8.6.0 released 2020-03-22
Language.Haskell.GhclibParserEx.DynFlagsis nowLanguage.Haskell.GhclibParserEx.GHC.Driver.Session
8.8.5.8 released 2020-03-17
- New module 
Language.Haskell.GhclibParserEx.GHC.Driver.Flags- Export 
Boundedinstance forLanguage(https://github.com/shayne-fletcher/ghc-lib-parser-ex/issues/30) 
 - Export 
 
8.8.5.7 released 2020-03-16
- From 
Language.Haskell.GhclibParserEx.Fixity:- Supply missing fixities (https://github.com/ndmitchell/hlint/issues/913)
 
 - In 
Language.Haskell.GhclibParserEx.DynFlags:- Give 
ExtensionanOrdinstance 
 - Give 
 
8.8.5.6 released 2020-03-13
- From 
Language.Haskell.GhclibParserEx.Fixity:- Expose 
infixr_,infixl_,infix_andfixity 
 - Expose 
 
8.8.5.5 released 2020-03-12
- Remove from 
Language.Haskell.GhclibParserEx.Fixity:preludeFixitiesbaseFixities
 
8.8.5.4 released 2020-03-11
- Expose from 
Language.Haskell.GhclibParserEx.Fixity:preludeFixitiesbaseFixitieslensFixitiesotherFixities
 
0.20200301 released 2020-03-01
8.8.5.3 released 2020-02-25
- New modules:
Language.Haskell.GhclibParserEx.PatLanguage.Haskell.GhclibParserEx.TypesLanguage.Haskell.GhclibParserEx.Decls
 
8.8.5.2 released 2020-02-16
- New 
DynFlagsfunctionsreadExtension,extensionImplications. 
8.8.5.1 released 2020-02-09
- Expression predicate tests.
 
8.8.5.0 released 2020-02-07
- Expose 
impliedGFlagsand friends fromDynFlags(https://github.com/shayne-fletcher/ghc-lib-parser-ex/issues/19). 
8.8.4.0 released 2020-02-01
- New modules:
Language.Haskell.GhclibparserEx.GHC.Hs.Expr
 - Moved modules:
Language.Haskell.GhclibparserEx.HsExtendInstances->Language.Haskell.GhclibparserEx.GHC.Hs.ExtendInstances;
 
0.20200201.1.0 released 2020-02-01
- New modules:
Language.Haskell.GhclibparserEx.HsExtendInstances.
 
8.8.3.0 released 2020-01-25
- Change in versioning scheme;
 - New modules:
Language.Haskell.GhclibParserEx.ConfigLanguage.Haskell.GhclibParserEx.DynFlags
 parsePragmasIntoDynFlagssignature change.
8.8.1.20191204, 8.8.2, 0.20200102 released 2020-01-18
- First releases