ghc-parser 0.2.4.0 → 0.2.5.0
raw patch · 4 files changed
+122/−9 lines, 4 filesdep ~ghcPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: ghc
API changes (from Hackage documentation)
Files
- generic-src/Language/Haskell/GHC/Parser.hs +34/−5
- ghc-parser.cabal +8/−4
- src-9.4/Language/Haskell/GHC/HappyParser.hs +40/−0
- src-9.6/Language/Haskell/GHC/HappyParser.hs +40/−0
generic-src/Language/Haskell/GHC/Parser.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE TypeApplications #-} module Language.Haskell.GHC.Parser ( -- Parser handling runParser,@@ -28,7 +29,18 @@ import Data.List (intercalate, findIndex, isInfixOf) import Data.Char (isAlphaNum) -#if MIN_VERSION_ghc(9,2,0)+#if MIN_VERSION_ghc(9,6,0)+import GHC.Driver.Config.Parser (initParserOpts)+import GHC.Parser.Errors.Types (PsMessage(..))+import GHC.Types.Error (getMessages, MsgEnvelope(..))+import GHC.Utils.Error (diagnosticMessage, defaultDiagnosticOpts, formatBulleted)+import GHC.Utils.Outputable (defaultSDocContext, renderWithContext)+#elif MIN_VERSION_ghc(9,4,0)+import GHC.Driver.Config.Parser (initParserOpts)+import GHC.Types.Error (diagnosticMessage, getMessages, MsgEnvelope(..))+import GHC.Utils.Error (formatBulleted)+import GHC.Utils.Outputable (defaultSDocContext)+#elif MIN_VERSION_ghc(9,2,0) import GHC.Driver.Config (initParserOpts) import GHC.Parser.Errors.Ppr (pprError) #endif@@ -132,7 +144,9 @@ #endif parserTypeSignature = Parser Parse.fullTypeSignature -#if MIN_VERSION_ghc(9,0,0)+#if MIN_VERSION_ghc(9,6,0)+parserModule :: Parser (SrcLoc.Located (HsModule GhcPs))+#elif MIN_VERSION_ghc(9,0,0) parserModule :: Parser (SrcLoc.Located HsModule) #elif MIN_VERSION_ghc(8,4,0) parserModule :: Parser (SrcLoc.Located (HsModule GhcPs))@@ -155,12 +169,19 @@ parseState = mkPState flags buffer location in #endif -- Convert a GHC parser output into our own.- toParseOut $ unP parser parseState+ toParseOut (unP parser parseState) where toParseOut :: ParseResult a -> ParseOutput a-#if MIN_VERSION_ghc(9,2,0)+#if MIN_VERSION_ghc(9,4,0) toParseOut (PFailed pstate) = let realSpan = SrcLoc.psRealSpan $ last_loc pstate+ errMsg = printErrorBag (getMessages $ errors pstate)+ ln = srcLocLine $ SrcLoc.realSrcSpanStart realSpan+ col = srcLocCol $ SrcLoc.realSrcSpanStart realSpan+ in Failure errMsg $ Loc ln col+#elif MIN_VERSION_ghc(9,2,0)+ toParseOut (PFailed pstate) =+ let realSpan = SrcLoc.psRealSpan $ last_loc pstate errMsg = printErrorBag (errors pstate) ln = srcLocLine $ SrcLoc.realSrcSpanStart realSpan col = srcLocCol $ SrcLoc.realSrcSpanStart realSpan@@ -208,7 +229,11 @@ Parsed result -- Convert the bag of errors into an error string.-#if MIN_VERSION_ghc(9,2,0)+#if MIN_VERSION_ghc(9,6,0)+ printErrorBag bag = joinLines . map (renderWithContext defaultSDocContext . formatBulleted defaultSDocContext . diagnosticMessage (defaultDiagnosticOpts @PsMessage) . errMsgDiagnostic) $ bagToList bag+#elif MIN_VERSION_ghc(9,4,0)+ printErrorBag bag = joinLines . map (show . formatBulleted defaultSDocContext . diagnosticMessage . errMsgDiagnostic) $ bagToList bag+#elif MIN_VERSION_ghc(9,2,0) printErrorBag bag = joinLines . map (show . pprError) $ bagToList bag #else printErrorBag bag = joinLines . map show $ bagToList bag@@ -218,7 +243,11 @@ parsePragmasIntoDynFlags :: DynFlags -> FilePath -> String -> IO (Maybe DynFlags) parsePragmasIntoDynFlags flags filepath str = catchErrors $ do+#if MIN_VERSION_ghc(9,4,0)+ let opts = snd $ getOptions (initParserOpts flags) (stringToStringBuffer str) filepath+#else let opts = getOptions flags (stringToStringBuffer str) filepath+#endif (flags', _, _) <- parseDynamicFilePragma flags opts return $ Just flags' where
ghc-parser.cabal view
@@ -2,10 +2,10 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: ghc-parser-version: 0.2.4.0+version: 0.2.5.0 synopsis: Haskell source parser from GHC. -- description:-homepage: https://github.com/gibiansky/IHaskell+homepage: https://github.com/IHaskell/IHaskell license: MIT license-file: LICENSE author: Andrew Gibiansky@@ -23,10 +23,10 @@ -- other-modules: -- other-extensions: build-depends: base >=4.9 && < 5,- ghc >=8.0 && <9.3+ ghc >=8.0 && <9.7 if impl(ghc >= 8.0) && impl(ghc < 8.4)- hs-source-dirs: generic-src src-8.0+ hs-source-dirs: generic-src src-8.0 if impl(ghc >= 8.4) && impl(ghc < 8.10) hs-source-dirs: generic-src src-8.4 if impl(ghc >= 8.10) && impl(ghc < 9.0)@@ -35,6 +35,10 @@ hs-source-dirs: generic-src src-9.0 if impl(ghc >= 9.2) && impl(ghc < 9.4) hs-source-dirs: generic-src src-9.2+ if impl(ghc >= 9.4) && impl(ghc < 9.6)+ hs-source-dirs: generic-src src-9.4+ if impl(ghc >= 9.6) && impl(ghc < 9.8)+ hs-source-dirs: generic-src src-9.6 default-language: Haskell2010
+ src-9.4/Language/Haskell/GHC/HappyParser.hs view
@@ -0,0 +1,40 @@+module Language.Haskell.GHC.HappyParser+ ( fullStatement+ , fullImport+ , fullDeclaration+ , fullExpression+ , fullTypeSignature+ , fullModule+ ) where++import GHC.Parser+import GHC.Types.SrcLoc++-- compiler/hsSyn+import GHC.Hs++-- compiler/utils+import GHC.Data.OrdList++-- compiler/parser+import GHC.Parser.Lexer++import GHC.Parser.PostProcess (ECP(..), runPV)++fullStatement :: P (Maybe (LStmt GhcPs (LHsExpr GhcPs)))+fullStatement = parseStmt++fullImport :: P (LImportDecl GhcPs)+fullImport = parseImport++fullDeclaration :: P (OrdList (LHsDecl GhcPs))+fullDeclaration = fmap unitOL parseDeclaration++fullExpression :: P (LHsExpr GhcPs)+fullExpression = parseExpression >>= \p -> runPV $ unECP p++fullTypeSignature :: P (Located (OrdList (LHsDecl GhcPs)))+fullTypeSignature = fmap (noLoc . unitOL) parseTypeSignature++fullModule :: P (Located HsModule)+fullModule = parseModule
+ src-9.6/Language/Haskell/GHC/HappyParser.hs view
@@ -0,0 +1,40 @@+module Language.Haskell.GHC.HappyParser+ ( fullStatement+ , fullImport+ , fullDeclaration+ , fullExpression+ , fullTypeSignature+ , fullModule+ ) where++import GHC.Parser+import GHC.Types.SrcLoc++-- compiler/hsSyn+import GHC.Hs++-- compiler/utils+import GHC.Data.OrdList++-- compiler/parser+import GHC.Parser.Lexer++import GHC.Parser.PostProcess (ECP(..), runPV)++fullStatement :: P (Maybe (LStmt GhcPs (LHsExpr GhcPs)))+fullStatement = parseStmt++fullImport :: P (LImportDecl GhcPs)+fullImport = parseImport++fullDeclaration :: P (OrdList (LHsDecl GhcPs))+fullDeclaration = fmap unitOL parseDeclaration++fullExpression :: P (LHsExpr GhcPs)+fullExpression = parseExpression >>= \p -> runPV $ unECP p++fullTypeSignature :: P (Located (OrdList (LHsDecl GhcPs)))+fullTypeSignature = fmap (noLoc . unitOL) parseTypeSignature++fullModule :: P (Located (HsModule GhcPs))+fullModule = parseModule