Commit a84934d3 authored by Ben Gamari's avatar Ben Gamari

ghc-parser: Kill partial parsers

parent b1f0d035
...@@ -17,12 +17,6 @@ module Language.Haskell.GHC.Parser ( ...@@ -17,12 +17,6 @@ module Language.Haskell.GHC.Parser (
parserTypeSignature, parserTypeSignature,
parserModule, parserModule,
parserExpression, parserExpression,
partialStatement,
partialImport,
partialDeclaration,
partialTypeSignature,
partialModule,
partialExpression,
-- Haskell string preprocessing. -- Haskell string preprocessing.
removeComments, removeComments,
...@@ -71,27 +65,20 @@ data Located a = Located { ...@@ -71,27 +65,20 @@ data Located a = Located {
} deriving (Eq, Show, Functor) } deriving (Eq, Show, Functor)
data ParserType = FullParser | PartialParser data Parser a = Parser (P a)
data Parser a = Parser ParserType (P a)
-- Our parsers. -- Our parsers.
parserStatement = Parser FullParser Parse.fullStatement parserStatement = Parser Parse.fullStatement
parserImport = Parser FullParser Parse.fullImport parserImport = Parser Parse.fullImport
parserDeclaration = Parser FullParser Parse.fullDeclaration parserDeclaration = Parser Parse.fullDeclaration
parserExpression = Parser FullParser Parse.fullExpression parserExpression = Parser Parse.fullExpression
parserTypeSignature = Parser FullParser Parse.fullTypeSignature parserTypeSignature = Parser Parse.fullTypeSignature
parserModule = Parser FullParser Parse.fullModule parserModule = Parser Parse.fullModule
partialStatement = Parser PartialParser Parse.partialStatement
partialImport = Parser PartialParser Parse.partialImport
partialDeclaration = Parser PartialParser Parse.partialDeclaration
partialExpression = Parser PartialParser Parse.partialExpression
partialTypeSignature = Parser PartialParser Parse.partialTypeSignature
partialModule = Parser PartialParser Parse.partialModule
-- | Run a GHC parser on a string. Return success or failure with -- | Run a GHC parser on a string. Return success or failure with
-- associated information for both. -- associated information for both.
runParser :: DynFlags -> Parser a -> String -> ParseOutput a runParser :: DynFlags -> Parser a -> String -> ParseOutput a
runParser flags (Parser parserType parser) str = runParser flags (Parser parser) str =
-- Create an initial parser state. -- Create an initial parser state.
let filename = "<interactive>" let filename = "<interactive>"
location = mkRealSrcLoc (mkFastString filename) 1 1 location = mkRealSrcLoc (mkFastString filename) 1 1
...@@ -115,10 +102,8 @@ runParser flags (Parser parserType parser) str = ...@@ -115,10 +102,8 @@ runParser flags (Parser parserType parser) str =
let parseEnd = realSrcSpanStart $ last_loc parseState let parseEnd = realSrcSpanStart $ last_loc parseState
endLine = srcLocLine parseEnd endLine = srcLocLine parseEnd
endCol = srcLocCol parseEnd endCol = srcLocCol parseEnd
(before, after) = splitAtLoc endLine endCol str in (before, after) = splitAtLoc endLine endCol str
case parserType of in Parsed result
PartialParser -> Partial result (before, after)
FullParser -> Parsed result
-- Convert the bag of errors into an error string. -- Convert the bag of errors into an error string.
printErrorBag bag = joinLines . map show $ bagToList bag printErrorBag bag = joinLines . map show $ bagToList bag
......
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