ghc-lib-parser-ex 8.10.0.4 → 8.10.0.5
raw patch · 13 files changed
+271/−211 lines, 13 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.Haskell.GhclibParserEx.Outputable: unsafePrettyPrint :: Outputable a => a -> String
- Language.Haskell.GhclibParserEx.Parse: parse :: P a -> String -> DynFlags -> ParseResult a
- Language.Haskell.GhclibParserEx.Parse: parseBackpack :: String -> DynFlags -> ParseResult [LHsUnit PackageName]
- Language.Haskell.GhclibParserEx.Parse: parseDeclaration :: String -> DynFlags -> ParseResult (LHsDecl GhcPs)
- Language.Haskell.GhclibParserEx.Parse: parseExpression :: String -> DynFlags -> ParseResult (LHsExpr GhcPs)
- Language.Haskell.GhclibParserEx.Parse: parseFile :: String -> DynFlags -> String -> ParseResult (Located (HsModule GhcPs))
- Language.Haskell.GhclibParserEx.Parse: parseHeader :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))
- Language.Haskell.GhclibParserEx.Parse: parseIdentifier :: String -> DynFlags -> ParseResult (Located RdrName)
- Language.Haskell.GhclibParserEx.Parse: parseImport :: String -> DynFlags -> ParseResult (LImportDecl GhcPs)
- Language.Haskell.GhclibParserEx.Parse: parseModule :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))
- Language.Haskell.GhclibParserEx.Parse: parsePattern :: String -> DynFlags -> ParseResult (LPat GhcPs)
- Language.Haskell.GhclibParserEx.Parse: parseSignature :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))
- Language.Haskell.GhclibParserEx.Parse: parseStatement :: String -> DynFlags -> ParseResult (LStmt GhcPs (LHsExpr GhcPs))
- Language.Haskell.GhclibParserEx.Parse: parseStmt :: String -> DynFlags -> ParseResult (Maybe (LStmt GhcPs (LHsExpr GhcPs)))
- Language.Haskell.GhclibParserEx.Parse: parseType :: String -> DynFlags -> ParseResult (LHsType GhcPs)
- Language.Haskell.GhclibParserEx.Parse: parseTypeSignature :: String -> DynFlags -> ParseResult (LHsDecl GhcPs)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parse :: P a -> String -> DynFlags -> ParseResult a
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseBackpack :: String -> DynFlags -> ParseResult [LHsUnit PackageName]
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseDeclaration :: String -> DynFlags -> ParseResult (LHsDecl GhcPs)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseExpression :: String -> DynFlags -> ParseResult (LHsExpr GhcPs)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseFile :: String -> DynFlags -> String -> ParseResult (Located (HsModule GhcPs))
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseHeader :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseIdentifier :: String -> DynFlags -> ParseResult (Located RdrName)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseImport :: String -> DynFlags -> ParseResult (LImportDecl GhcPs)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseModule :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))
+ Language.Haskell.GhclibParserEx.GHC.Parser: parsePattern :: String -> DynFlags -> ParseResult (LPat GhcPs)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseSignature :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseStatement :: String -> DynFlags -> ParseResult (LStmt GhcPs (LHsExpr GhcPs))
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseStmt :: String -> DynFlags -> ParseResult (Maybe (LStmt GhcPs (LHsExpr GhcPs)))
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseType :: String -> DynFlags -> ParseResult (LHsType GhcPs)
+ Language.Haskell.GhclibParserEx.GHC.Parser: parseTypeSignature :: String -> DynFlags -> ParseResult (LHsDecl GhcPs)
+ Language.Haskell.GhclibParserEx.GHC.Utils.Outputable: unsafePrettyPrint :: Outputable a => a -> String
Files
- ChangeLog.md +6/−0
- ghc-lib-parser-ex.cabal +4/−1
- src/Language/Haskell/GhclibParserEx/Config.hs +7/−6
- src/Language/Haskell/GhclibParserEx/Fixity.hs +32/−19
- src/Language/Haskell/GhclibParserEx/GHC/Driver/Session.hs +12/−7
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs +6/−15
- src/Language/Haskell/GhclibParserEx/GHC/Hs/ExtendInstances.hs +8/−3
- src/Language/Haskell/GhclibParserEx/GHC/Hs/Pat.hs +23/−7
- src/Language/Haskell/GhclibParserEx/GHC/Parser.hs +139/−0
- src/Language/Haskell/GhclibParserEx/GHC/Utils/Outputable.hs +18/−0
- src/Language/Haskell/GhclibParserEx/Outputable.hs +6/−6
- src/Language/Haskell/GhclibParserEx/Parse.hs +4/−141
- test/Test.hs +6/−6
ChangeLog.md view
@@ -1,5 +1,11 @@ # Changelog for ghc-lib-parser-ex +## 8.10.0.5 released 2020-05-02+- New modules+ - `Language.Haskell.GhclibParserEx.GHC.Parser`, `Language.Haskell.GhcLibParserEx.GHC.Utils.Outputable` to replace `Language.Haskell.GhclibParserEx.Parse` and `Language.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`.
ghc-lib-parser-ex.cabal view
@@ -1,6 +1,6 @@ cabal-version: >= 1.18 name: ghc-lib-parser-ex-version: 8.10.0.4+version: 8.10.0.5 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,6 +44,9 @@ Language.Haskell.GhclibParserEx.GHC.Hs.Types Language.Haskell.GhclibParserEx.GHC.Hs.Decls Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstances+ Language.Haskell.GhclibParserEx.GHC.Parser+ Language.Haskell.GhclibParserEx.GHC.Utils.Outputable+ -- Deprecated and will be removed in a future release. Language.Haskell.GhclibParserEx.Parse Language.Haskell.GhclibParserEx.Outputable other-modules:
src/Language/Haskell/GhclibParserEx/Config.hs view
@@ -4,25 +4,26 @@ {-# OPTIONS_GHC -Wno-missing-fields #-} {-# LANGUAGE CPP #-} #include "ghclib_api.h"- module Language.Haskell.GhclibParserEx.Config( fakeSettings , fakeLlvmConfig )- where+where import Config #if defined (GHCLIB_API_811) import GHC.Driver.Session-#else+import GHC.Utils.Fingerprint+import GHC.Platform+import GHC.Settings+#elif defined (GHCLIB_API_810) import DynFlags-#endif import Fingerprint--#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) import GHC.Platform import ToolSettings #else+import DynFlags+import Fingerprint import Platform #endif
src/Language/Haskell/GhclibParserEx/Fixity.hs view
@@ -16,28 +16,22 @@ ) where #if defined (GHCLIB_API_811)+import GHC.Hs import GHC.Types.Basic-#else-import BasicTypes-#endif-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+import GHC.Types.Name.Reader+import GHC.Types.Name+import GHC.Types.SrcLoc+#elif defined (GHCLIB_API_810) import GHC.Hs+import BasicTypes+import RdrName+import OccName+import SrcLoc #else import HsSyn-#endif-#if defined (GHCLIB_API_811)-import GHC.Types.Name.Reader-#else+import BasicTypes 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@@ -64,7 +58,10 @@ -- LPat and Pat have gone through a lot of churn. See -- https://gitlab.haskell.org/ghc/ghc/merge_requests/1925 for details. patFix :: [(String, Fixity)] -> LPat GhcPs -> LPat GhcPs-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+#if defined (GHCLIB_API_811)+patFix fixities (L loc (ConPat _ op (InfixCon pat1 pat2))) =+ L loc (mkConOpPat (getFixities fixities) op (findFixity' (getFixities fixities) op) pat1 pat2)+#elif defined (GHCLIB_API_810) patFix fixities (L loc (ConPatIn op (InfixCon pat1 pat2))) = L loc (mkConOpPat (getFixities fixities) op (findFixity' (getFixities fixities) op) pat1 pat2) #else@@ -78,22 +75,38 @@ -> Located RdrName -> Fixity -> LPat GhcPs -> LPat GhcPs -> Pat GhcPs-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+#if defined (GHCLIB_API_811)+mkConOpPat fs op2 fix2 p1@(L loc (ConPat _ op1 (InfixCon p11 p12))) p2+#elif defined (GHCLIB_API_810) mkConOpPat fs op2 fix2 p1@(L loc (ConPatIn op1 (InfixCon p11 p12))) p2 #else mkConOpPat fs op2 fix2 p1@(dL->L loc (ConPatIn op1 (InfixCon p11 p12))) p2 #endif+#if defined (GHCLIB_API_811)+ | nofix_error = ConPat noExtField op2 (InfixCon p1 p2)+#else | nofix_error = ConPatIn op2 (InfixCon p1 p2)-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+#endif+#if defined (GHCLIB_API_811)+ | associate_right = ConPat noExtField op1 (InfixCon p11 (L loc (mkConOpPat fs op2 fix2 p12 p2)))+#elif defined (GHCLIB_API_810) | associate_right = ConPatIn op1 (InfixCon p11 (L loc (mkConOpPat fs op2 fix2 p12 p2))) #else | associate_right = ConPatIn op1 (InfixCon p11 (cL loc (mkConOpPat fs op2 fix2 p12 p2))) #endif+#if defined (GHCLIB_API_811)+ | otherwise = ConPat noExtField op2 (InfixCon p1 p2)+#else | otherwise = ConPatIn op2 (InfixCon p1 p2)+#endif where fix1 = findFixity' fs op1 (nofix_error, associate_right) = compareFixity fix1 fix2+#if defined (GHCLIB_API_811)+mkConOpPat _ op _ p1 p2 = ConPat noExtField op (InfixCon p1 p2)+#else mkConOpPat _ op _ p1 p2 = ConPatIn op (InfixCon p1 p2)+#endif mkOpApp :: [(String, Fixity)]
src/Language/Haskell/GhclibParserEx/GHC/Driver/Session.hs view
@@ -4,7 +4,6 @@ {-# LANGUAGE CPP #-} {-# OPTIONS_GHC -Wno-orphans #-} #include "ghclib_api.h"- module Language.Haskell.GhclibParserEx.GHC.Driver.Session( readExtension , extensionImplications@@ -16,26 +15,32 @@ ) where import qualified GHC.LanguageExtensions as LangExt-import Panic-import HeaderInfo-import StringBuffer-#if defined(GHCLIB_API_811)+#if defined (GHCLIB_API_811)+import GHC.Utils.Panic+import GHC.Parser.Header+import GHC.Data.StringBuffer import GHC.Driver.Session import GHC.Driver.Types #else+import Panic+import HeaderInfo+import StringBuffer import DynFlags import HscTypes #endif import GHC.LanguageExtensions.Type import Data.List import Data.Maybe-import Data.Function import qualified Data.Map as Map-+#if !defined(GHCLIB_API_811)+import Data.Function -- For `compareOn`. -- Oprhan instance until -- https://gitlab.haskell.org/ghc/ghc/merge_requests/2707 lands. instance Ord Extension where compare = compare `on` fromEnum+#else+-- Update : It's landed.+#endif -- | Parse a GHC extension. readExtension :: String -> Maybe Extension
src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs view
@@ -5,7 +5,6 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE LambdaCase #-} #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,@@ -22,28 +21,20 @@ #else import HsSyn #endif-#if defined (GHCLIB_API_811)+#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+import GHC.Types.Basic+import GHC.Builtin.Types #else+import SrcLoc+import RdrName import OccName import Name-#endif-#if defined (GHCLIB_API_811)-import GHC.Types.Basic-#else import BasicTypes-#endif import TysWiredIn+#endif import Data.Ratio -- 'True' if the provided expression is a variable with name 'tag'.
src/Language/Haskell/GhclibParserEx/GHC/Hs/ExtendInstances.hs view
@@ -2,6 +2,8 @@ -- SPDX-License-Identifier: BSD-3-Clause. {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE CPP #-}+#include "ghclib_api.h" module Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstances ( HsExtendInstances(..), extendInstances, astEq, astListEq)@@ -16,10 +18,13 @@ -- representations rather than the terms themselves, leads to -- identical results. +#if defined (GHCLIB_API_811)+import GHC.Utils.Outputable+#else import Outputable+#endif import Data.Data import Data.Function- import Language.Haskell.GhclibParserEx.Dump newtype HsExtendInstances a =@@ -34,7 +39,7 @@ -- string representations. toStr :: Data a => HsExtendInstances a -> String toStr (HsExtendInstances e) =- Outputable.showSDocUnsafe $ showAstData BlankSrcSpan e+ showSDocUnsafe $ showAstData BlankSrcSpan e instance Data a => Eq (HsExtendInstances a) where (==) a b = toStr a == toStr b instance Data a => Ord (HsExtendInstances a) where compare = compare `on` toStr@@ -47,4 +52,4 @@ -- Use 'ppr' for 'Show'. instance Outputable a => Show (HsExtendInstances a) where- show (HsExtendInstances e) = Outputable.showSDocUnsafe $ Outputable.ppr e+ show (HsExtendInstances e) = showSDocUnsafe $ ppr e
src/Language/Haskell/GhclibParserEx/GHC/Hs/Pat.hs view
@@ -18,21 +18,25 @@ #endif #if defined (GHCLIB_API_811) import GHC.Types.SrcLoc-#else-import SrcLoc-#endif-import TysWiredIn-#if defined (GHCLIB_API_811)+import GHC.Builtin.Types import GHC.Types.Name.Reader import GHC.Types.Name+import GHC.Data.FastString #else+import SrcLoc+import TysWiredIn import RdrName import OccName-#endif import FastString+#endif patToStr :: LPat GhcPs -> String-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+#if defined (GHCLIB_API_811)+patToStr (L _ (ConPat _ (L _ x) (PrefixCon []))) | occNameString (rdrNameOcc x) == "True" = "True"+patToStr (L _ (ConPat _ (L _ x) (PrefixCon []))) | occNameString (rdrNameOcc x) == "False" = "False"+patToStr (L _ (ConPat _ (L _ x) (PrefixCon []))) | occNameString (rdrNameOcc x) == "[]" = "[]"+patToStr _ = ""+#elif defined (GHCLIB_API_810) patToStr (L _ (ConPatIn (L _ x) (PrefixCon []))) | occNameString (rdrNameOcc x) == "True" = "True" patToStr (L _ (ConPatIn (L _ x) (PrefixCon []))) | occNameString (rdrNameOcc x) == "False" = "False" patToStr (L _ (ConPatIn (L _ x) (PrefixCon []))) | occNameString (rdrNameOcc x) == "[]" = "[]"@@ -50,17 +54,29 @@ #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) noLoc $ #endif+#if defined (GHCLIB_API_811)+ ConPat noExtField (noLoc true_RDR) (PrefixCon [])+#else ConPatIn (noLoc true_RDR) (PrefixCon [])+#endif | z == "False" = #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) noLoc $ #endif+#if defined (GHCLIB_API_811)+ ConPat noExtField (noLoc false_RDR) (PrefixCon [])+#else ConPatIn (noLoc false_RDR) (PrefixCon [])+#endif | z == "[]" = #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) noLoc $ #endif+#if defined (GHCLIB_API_811)+ ConPat noExtField (noLoc $ nameRdrName nilDataConName) (PrefixCon [])+#else ConPatIn (noLoc $ nameRdrName nilDataConName) (PrefixCon [])+#endif | otherwise = #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) noLoc $ VarPat noExtField (noLoc $ mkVarUnqual (fsLit z))
+ src/Language/Haskell/GhclibParserEx/GHC/Parser.hs view
@@ -0,0 +1,139 @@+-- Copyright (c) 2020, Shayne Fletcher. All rights reserved.+-- SPDX-License-Identifier: BSD-3-Clause.++{-# LANGUAGE CPP #-}+#include "ghclib_api.h"+module Language.Haskell.GhclibParserEx.GHC.Parser(+ parseFile+ , parseModule+ , parseSignature+ , parseImport+ , parseStatement+ , parseBackpack+ , parseDeclaration+ , parseExpression+ , parsePattern+ , parseTypeSignature+ , parseStmt+ , parseIdentifier+ , parseType+ , parseHeader+ , parse+ )+ where++#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+import GHC.Hs+#else+import HsSyn+#endif+#if defined (GHCLIB_API_811)+import GHC.Parser.PostProcess+import GHC.Driver.Session+import GHC.Data.StringBuffer+import GHC.Parser.Lexer+import qualified GHC.Parser.Lexer as Lexer+import qualified GHC.Parser as Parser+import GHC.Data.FastString+import GHC.Types.SrcLoc+import GHC.Driver.Backpack.Syntax+import GHC.Unit.Info+import GHC.Types.Name.Reader+#else+import DynFlags+import StringBuffer+import Lexer+import qualified Parser+import FastString+import SrcLoc+import BkpSyn+import PackageConfig+import RdrName+#endif+#if defined (GHCLIB_API_810)+import RdrHsSyn+#endif++parse :: P a -> String -> DynFlags -> ParseResult a+parse p str flags =+ Lexer.unP p parseState+ where+ location = mkRealSrcLoc (mkFastString "<string>") 1 1+ buffer = stringToStringBuffer str+ parseState = mkPState flags buffer location++#if defined (GHCLIB_API_811)+parseModule :: String -> DynFlags -> ParseResult (Located HsModule)+#else+parseModule :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))+#endif+parseModule = parse Parser.parseModule++#if defined (GHCLIB_API_811)+parseSignature :: String -> DynFlags -> ParseResult (Located HsModule)+#else+parseSignature :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))+#endif+parseSignature = parse Parser.parseSignature++parseImport :: String -> DynFlags -> ParseResult (LImportDecl GhcPs)+parseImport = parse Parser.parseImport++parseStatement :: String -> DynFlags -> ParseResult (LStmt GhcPs (LHsExpr GhcPs))+parseStatement = parse Parser.parseStatement++parseBackpack :: String -> DynFlags -> ParseResult [LHsUnit PackageName]+parseBackpack = parse Parser.parseBackpack++parseDeclaration :: String -> DynFlags -> ParseResult (LHsDecl GhcPs)+parseDeclaration = parse Parser.parseDeclaration++parseExpression :: String -> DynFlags -> ParseResult (LHsExpr GhcPs)+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+parseExpression s flags =+ case parse Parser.parseExpression s flags of+ POk s e -> unP (runECP_P e) s+ PFailed ps -> PFailed ps+#else+parseExpression = parse Parser.parseExpression+#endif++parsePattern :: String -> DynFlags -> ParseResult (LPat GhcPs)+parsePattern = parse Parser.parsePattern++parseTypeSignature :: String -> DynFlags -> ParseResult (LHsDecl GhcPs)+parseTypeSignature = parse Parser.parseTypeSignature++parseStmt :: String -> DynFlags -> ParseResult (Maybe (LStmt GhcPs (LHsExpr GhcPs)))+parseStmt = parse Parser.parseStmt++parseIdentifier :: String -> DynFlags -> ParseResult (Located RdrName)+parseIdentifier = parse Parser.parseIdentifier++parseType :: String -> DynFlags -> ParseResult (LHsType GhcPs)+parseType = parse Parser.parseType++#if defined(GHCLIB_API_811)+parseHeader :: String -> DynFlags -> ParseResult (Located HsModule)+#else+parseHeader :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))+#endif+parseHeader = parse Parser.parseHeader++#if defined (GHCLIB_API_811)+parseFile :: String+ -> DynFlags+ -> String+ -> ParseResult (Located HsModule)+#else+parseFile :: String+ -> DynFlags+ -> String+ -> ParseResult (Located (HsModule GhcPs))+#endif+parseFile filename flags str =+ unP Parser.parseModule parseState+ where+ location = mkRealSrcLoc (mkFastString filename) 1 1+ buffer = stringToStringBuffer str+ parseState = mkPState flags buffer location
+ src/Language/Haskell/GhclibParserEx/GHC/Utils/Outputable.hs view
@@ -0,0 +1,18 @@+-- Copyright (c) 2020, Shayne Fletcher. All rights reserved.+-- SPDX-License-Identifier: BSD-3-Clause.++{-# LANGUAGE CPP #-}+#include "ghclib_api.h"+module Language.Haskell.GhclibParserEx.GHC.Utils.Outputable (+ unsafePrettyPrint+)+where++#if defined (GHCLIB_API_811)+import GHC.Utils.Outputable+#else+import Outputable+#endif++unsafePrettyPrint :: Outputable a => a -> String+unsafePrettyPrint = showSDocUnsafe . ppr
src/Language/Haskell/GhclibParserEx/Outputable.hs view
@@ -1,9 +1,9 @@ -- Copyright (c) 2020, Shayne Fletcher. All rights reserved. -- SPDX-License-Identifier: BSD-3-Clause. -module Language.Haskell.GhclibParserEx.Outputable (unsafePrettyPrint) where--import Outputable--unsafePrettyPrint :: (Outputable.Outputable a) => a -> String-unsafePrettyPrint = Outputable.showSDocUnsafe . Outputable.ppr+module Language.Haskell.GhclibParserEx.Outputable+ {-# DEPRECATED "Use Language.Haskell.GhclibParserEx.GHC.Utils.Outputable instead" #-} (+ module Language.Haskell.GhclibParserEx.GHC.Utils.Outputable+ )+ where+import Language.Haskell.GhclibParserEx.GHC.Utils.Outputable
src/Language/Haskell/GhclibParserEx/Parse.hs view
@@ -1,146 +1,9 @@ -- Copyright (c) 2020, Shayne Fletcher. All rights reserved. -- SPDX-License-Identifier: BSD-3-Clause. -{-# OPTIONS_GHC -Wno-missing-fields #-}-{-# LANGUAGE CPP #-}-#include "ghclib_api.h"--module Language.Haskell.GhclibParserEx.Parse(- parseFile- , parseModule- , parseSignature- , parseImport- , parseStatement- , parseBackpack- , parseDeclaration- , parseExpression- , parsePattern- , parseTypeSignature- , parseStmt- , parseIdentifier- , parseType- , parseHeader- , parse+module Language.Haskell.GhclibParserEx.Parse+ {-# DEPRECATED "Use Language.Haskell.GhclibParserEx.GHC.Parser instead" #-} (+ module Language.Haskell.GhclibParserEx.GHC.Parser ) where--#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.Driver.Session-#else-import DynFlags-#endif-import StringBuffer-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-import BkpSyn-#endif-#if defined (GHCLIB_API_811)-import UnitInfo-#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 =- Lexer.unP p parseState- where- location = mkRealSrcLoc (mkFastString "<string>") 1 1- buffer = stringToStringBuffer str- parseState = mkPState flags buffer location--#if defined (GHCLIB_API_811)-parseModule :: String -> DynFlags -> ParseResult (Located HsModule)-#else-parseModule :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))-#endif-parseModule = parse Parser.parseModule--#if defined (GHCLIB_API_811)-parseSignature :: String -> DynFlags -> ParseResult (Located HsModule)-#else-parseSignature :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))-#endif-parseSignature = parse Parser.parseSignature--parseImport :: String -> DynFlags -> ParseResult (LImportDecl GhcPs)-parseImport = parse Parser.parseImport--parseStatement :: String -> DynFlags -> ParseResult (LStmt GhcPs (LHsExpr GhcPs))-parseStatement = parse Parser.parseStatement--parseBackpack :: String -> DynFlags -> ParseResult [LHsUnit PackageName]-parseBackpack = parse Parser.parseBackpack--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)- case parse Parser.parseExpression s flags of- POk s e ->- unP (runECP_P e >>= return) s :: ParseResult (LHsExpr GhcPs)- PFailed ps -> PFailed ps-#else- parse Parser.parseExpression s flags-#endif--parsePattern :: String -> DynFlags -> ParseResult (LPat GhcPs)-parsePattern = parse Parser.parsePattern--parseTypeSignature :: String -> DynFlags -> ParseResult (LHsDecl GhcPs)-parseTypeSignature = parse Parser.parseTypeSignature--parseStmt :: String -> DynFlags -> ParseResult (Maybe (LStmt GhcPs (LHsExpr GhcPs)))-parseStmt = parse Parser.parseStmt--parseIdentifier :: String -> DynFlags -> ParseResult (Located RdrName)-parseIdentifier = parse Parser.parseIdentifier--parseType :: String -> DynFlags -> ParseResult (LHsType GhcPs)-parseType = parse Parser.parseType--#if defined(GHCLIB_API_811)-parseHeader :: String -> DynFlags -> ParseResult (Located HsModule)-#else-parseHeader :: String -> DynFlags -> ParseResult (Located (HsModule GhcPs))-#endif-parseHeader = parse Parser.parseHeader--#if defined (GHCLIB_API_811)-parseFile :: String- -> DynFlags- -> String- -> ParseResult (Located HsModule)-#else-parseFile :: String- -> DynFlags- -> String- -> ParseResult (Located (HsModule GhcPs))-#endif-parseFile filename flags str =- unP Parser.parseModule parseState- where- location = mkRealSrcLoc (mkFastString filename) 1 1- buffer = stringToStringBuffer str- parseState = mkPState flags buffer location+import Language.Haskell.GhclibParserEx.GHC.Parser
test/Test.hs view
@@ -18,9 +18,9 @@ import Data.Maybe import Language.Haskell.GhclibParserEx.Config-import Language.Haskell.GhclibParserEx.Parse import Language.Haskell.GhclibParserEx.Dump import Language.Haskell.GhclibParserEx.Fixity+import Language.Haskell.GhclibParserEx.GHC.Parser import Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstances import Language.Haskell.GhclibParserEx.GHC.Hs.Expr import Language.Haskell.GhclibParserEx.GHC.Hs.Pat@@ -34,17 +34,17 @@ #endif #if defined (GHCLIB_API_811) import GHC.Types.SrcLoc-#else-import SrcLoc-#endif-#if defined (GHCLIB_API_811) import GHC.Driver.Session+import GHC.Parser.Lexer+import GHC.Utils.Outputable+import GHC.Utils.Error #else+import SrcLoc import DynFlags-#endif import Lexer import Outputable import ErrUtils+#endif import GHC.LanguageExtensions.Type #if defined (GHCLIB_API_808) import Bag