Commit 584127f8 authored by Vaibhav Sagar's avatar Vaibhav Sagar

ghc-parser: update

parent b06b52f4
...@@ -28,24 +28,36 @@ module Language.Haskell.GHC.Parser ( ...@@ -28,24 +28,36 @@ module Language.Haskell.GHC.Parser (
import Data.List (intercalate, findIndex, isInfixOf) import Data.List (intercalate, findIndex, isInfixOf)
import Data.Char (isAlphaNum) import Data.Char (isAlphaNum)
#if MIN_VERSION_ghc(9,0,0)
import GHC.Data.Bag
import GHC.Driver.Session (parseDynamicFilePragma)
import GHC.Data.FastString
import GHC.Parser.Header (getOptions)
import GHC.Parser.Lexer hiding (buffer)
import GHC.Data.OrdList
import GHC.Utils.Panic (handleGhcException)
import qualified GHC.Types.SrcLoc as SrcLoc
import GHC.Data.StringBuffer hiding (len)
#else
import Bag import Bag
import DynFlags (parseDynamicFilePragma) import DynFlags (parseDynamicFilePragma)
import FastString
import HeaderInfo (getOptions)
import Lexer hiding (buffer)
import OrdList
import Panic (handleGhcException)
import qualified SrcLoc as SrcLoc
import StringBuffer hiding (len)
#endif
#if MIN_VERSION_ghc(8,10,0) #if MIN_VERSION_ghc(8,10,0)
#else #else
import ErrUtils hiding (ErrMsg) import ErrUtils hiding (ErrMsg)
#endif #endif
import FastString
#if MIN_VERSION_ghc(8,4,0) #if MIN_VERSION_ghc(8,4,0)
import GHC hiding (Located, Parsed, parser) import GHC hiding (Located, Parsed, parser)
#else #else
import GHC hiding (Located, parser) import GHC hiding (Located, parser)
#endif #endif
import HeaderInfo (getOptions)
import Lexer hiding (buffer)
import OrdList
import Panic (handleGhcException)
import qualified SrcLoc as SrcLoc
import StringBuffer hiding (len)
import qualified Language.Haskell.GHC.HappyParser as Parse import qualified Language.Haskell.GHC.HappyParser as Parse
...@@ -115,9 +127,10 @@ parserTypeSignature :: Parser (SrcLoc.Located (OrdList (LHsDecl RdrName))) ...@@ -115,9 +127,10 @@ parserTypeSignature :: Parser (SrcLoc.Located (OrdList (LHsDecl RdrName)))
#endif #endif
parserTypeSignature = Parser Parse.fullTypeSignature parserTypeSignature = Parser Parse.fullTypeSignature
#if MIN_VERSION_ghc(8,4,0) #if MIN_VERSION_ghc(9,0,0)
parserModule :: Parser (SrcLoc.Located HsModule)
#elif MIN_VERSION_ghc(8,4,0)
parserModule :: Parser (SrcLoc.Located (HsModule GhcPs)) parserModule :: Parser (SrcLoc.Located (HsModule GhcPs))
#else #else
parserModule :: Parser (SrcLoc.Located (HsModule RdrName)) parserModule :: Parser (SrcLoc.Located (HsModule RdrName))
#endif #endif
...@@ -136,7 +149,14 @@ runParser flags (Parser parser) str = ...@@ -136,7 +149,14 @@ runParser flags (Parser parser) str =
toParseOut $ unP parser parseState toParseOut $ unP parser parseState
where where
toParseOut :: ParseResult a -> ParseOutput a toParseOut :: ParseResult a -> ParseOutput a
#if MIN_VERSION_ghc(8,10,0) #if 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
in Failure errMsg $ Loc ln col
#elif MIN_VERSION_ghc(8,10,0)
toParseOut (PFailed pstate) = toParseOut (PFailed pstate) =
let realSpan = last_loc pstate let realSpan = last_loc pstate
errMsg = printErrorBag $ snd $ (messages pstate) flags errMsg = printErrorBag $ snd $ (messages pstate) flags
......
...@@ -24,7 +24,7 @@ library ...@@ -24,7 +24,7 @@ library
-- other-modules: -- other-modules:
-- other-extensions: -- other-extensions:
build-depends: base >=4.9 && < 5, build-depends: base >=4.9 && < 5,
ghc >=8.0 && <8.11 ghc >=8.0 && <9.1
if impl(ghc >= 8.0) && impl(ghc < 8.4) 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
...@@ -32,7 +32,10 @@ library ...@@ -32,7 +32,10 @@ library
if impl(ghc >= 8.4) && impl(ghc < 8.10) if impl(ghc >= 8.4) && impl(ghc < 8.10)
hs-source-dirs: generic-src src-8.4 hs-source-dirs: generic-src src-8.4
else else
hs-source-dirs: generic-src src-8.10 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
default-language: Haskell2010 default-language: Haskell2010
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 (runECP_P)
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 = runECP_P =<< parseExpression
fullTypeSignature :: P (Located (OrdList (LHsDecl GhcPs)))
fullTypeSignature = fmap (noLoc . unitOL) parseTypeSignature
fullModule :: P (Located HsModule)
fullModule = parseModule
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment