packages feed

ghc-parser 0.2.3.0 → 0.2.4.0

raw patch · 3 files changed

+71/−12 lines, 3 filesdep ~ghc

Dependency ranges changed: ghc

Files

generic-src/Language/Haskell/GHC/Parser.hs view
@@ -28,6 +28,11 @@ import Data.List (intercalate, findIndex, isInfixOf) import Data.Char (isAlphaNum) +#if MIN_VERSION_ghc(9,2,0)+import GHC.Driver.Config (initParserOpts)+import GHC.Parser.Errors.Ppr (pprError)+#endif+ #if MIN_VERSION_ghc(9,0,0) import GHC.Data.Bag import GHC.Driver.Session (parseDynamicFilePragma)@@ -144,14 +149,25 @@   let filename = "<interactive>"       location = SrcLoc.mkRealSrcLoc (mkFastString filename) 1 1       buffer = stringToStringBuffer str+#if MIN_VERSION_ghc(9,2,0)+      parseState = initParserState (initParserOpts flags) buffer location in+#else       parseState = mkPState flags buffer location in+#endif     -- Convert a GHC parser output into our own.     toParseOut $ unP parser parseState   where     toParseOut :: ParseResult a -> ParseOutput a-#if MIN_VERSION_ghc(9,0,0)+#if 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+        in Failure errMsg $ Loc ln col+#elif MIN_VERSION_ghc(9,0,0)+    toParseOut (PFailed pstate) =+      let realSpan = SrcLoc.psRealSpan $ last_loc pstate           errMsg = printErrorBag $ snd $ (messages pstate) flags           ln = srcLocLine $ SrcLoc.realSrcSpanStart realSpan           col = srcLocCol $ SrcLoc.realSrcSpanStart realSpan@@ -192,7 +208,11 @@       Parsed result      -- Convert the bag of errors into an error string.+#if MIN_VERSION_ghc(9,2,0)+    printErrorBag bag = joinLines . map (show . pprError) $ bagToList bag+#else     printErrorBag bag = joinLines . map show $ bagToList bag+#endif  -- Taken from http://blog.shaynefletcher.org/2019/06/have-ghc-parsing-respect-dynamic-pragmas.html parsePragmasIntoDynFlags :: DynFlags -> FilePath -> String -> IO (Maybe DynFlags)
ghc-parser.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                ghc-parser-version:             0.2.3.0+version:             0.2.4.0 synopsis:            Haskell source parser from GHC. -- description: homepage:            https://github.com/gibiansky/IHaskell@@ -17,25 +17,24 @@ cabal-version:       1.16  library-  build-tools:         happy, cpphs   ghc-options:         -Wall   exposed-modules:     Language.Haskell.GHC.Parser,                        Language.Haskell.GHC.HappyParser   -- other-modules:   -- other-extensions:   build-depends:       base                 >=4.9 && < 5,-                       ghc                  >=8.0 && <9.1+                       ghc                  >=8.0 && <9.3    if impl(ghc >= 8.0) && impl(ghc < 8.4)     hs-source-dirs:    generic-src src-8.0-  else-    if impl(ghc >= 8.4) && impl(ghc < 8.10)-      hs-source-dirs:  generic-src src-8.4-    else-      if impl(ghc >= 8.10) && impl(ghc < 9.0)-        hs-source-dirs:  generic-src src-8.10-      else-        hs-source-dirs:  generic-src src-9.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)+    hs-source-dirs:  generic-src src-8.10+  if impl(ghc >= 9.0) && impl(ghc < 9.2)+    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     default-language:    Haskell2010
+ src-9.2/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