on master help sign in
Don't need a newtype for inner parser
8d460e9Jason Felice
src/Idris/Package/Parser.hs+2−2
@@ -11,7 +11,7 @@ module Idris.Package.Parser where
11import Idris.CmdOptions
11import Idris.CmdOptions
12import Idris.Imports
12import Idris.Imports
13import Idris.Package.Common
13import Idris.Package.Common
14−import Idris.Parser.Helpers (IdrisInnerParser, MonadicParsing, eol, iName,
14+import Idris.Parser.Helpers (MonadicParsing, eol, iName,
15 identifier, isEol, lchar, packageName,
15 identifier, isEol, lchar, packageName,
16 parseErrorDoc, reserved, runparser, someSpace')
16 parseErrorDoc, reserved, runparser, someSpace')
17
17
@@ -25,7 +25,7 @@ import qualified Text.PrettyPrint.ANSI.Leijen as PP
25import Text.Trifecta ((<?>))
25import Text.Trifecta ((<?>))
26import qualified Text.Trifecta as P
26import qualified Text.Trifecta as P
27
27
28−type PParser = StateT PkgDesc IdrisInnerParser
28+type PParser = StateT PkgDesc P.Parser
29
29
30#if MIN_VERSION_base(4,9,0)
30#if MIN_VERSION_base(4,9,0)
31instance {-# OVERLAPPING #-} P.DeltaParsing PParser where
31instance {-# OVERLAPPING #-} P.DeltaParsing PParser where
src/Idris/Parser.hs+1−1
@@ -1516,7 +1516,7 @@ parseElabShellStep ist = runparser (Right <$> do_ defaultSyntax <|> Left <$> ela
1516parseImports :: FilePath -> String -> Idris (Maybe (Docstring ()), [String], [ImportInfo], Maybe P.Delta)
1516parseImports :: FilePath -> String -> Idris (Maybe (Docstring ()), [String], [ImportInfo], Maybe P.Delta)
1517parseImports fname input
1517parseImports fname input
1518 = do i <- getIState
1518 = do i <- getIState
1519− case P.parseString (runInnerParser (evalStateT imports i)) (P.Directed (UTF8.fromString fname) 0 0 0 0) input of
1519+ case P.parseString (evalStateT imports i) (P.Directed (UTF8.fromString fname) 0 0 0 0) input of
1520 P.Failure (P.ErrInfo err _) -> ifail $ show err
1520 P.Failure (P.ErrInfo err _) -> ifail $ show err
1521 P.Success (x, annots, i) ->
1521 P.Success (x, annots, i) ->
1522 do putIState i
1522 do putIState i
src/Idris/Parser/Helpers.hs+3−8
@@ -40,12 +40,7 @@ import qualified Text.Trifecta as P
40import qualified Text.Trifecta.Delta as P
40import qualified Text.Trifecta.Delta as P
41
41
42-- | Idris parser with state used during parsing
42-- | Idris parser with state used during parsing
43−type IdrisParser = StateT IState IdrisInnerParser
43+type IdrisParser = StateT IState P.Parser
44−
45−newtype IdrisInnerParser a = IdrisInnerParser { runInnerParser :: P.Parser a }
46− deriving (Monad, Functor, MonadPlus, Applicative, Alternative, P.CharParsing, LookAheadParsing, P.DeltaParsing, P.MarkParsing P.Delta, Monoid, P.TokenParsing)
47−
48−deriving instance P.Parsing IdrisInnerParser
49
44
50#if MIN_VERSION_base(4,9,0)
45#if MIN_VERSION_base(4,9,0)
51instance {-# OVERLAPPING #-} P.DeltaParsing IdrisParser where
46instance {-# OVERLAPPING #-} P.DeltaParsing IdrisParser where
@@ -87,9 +82,9 @@ instance HasLastTokenSpan IdrisParser where
87newtype ParseError = ParseError { parseErrorDoc :: PP.Doc }
82newtype ParseError = ParseError { parseErrorDoc :: PP.Doc }
88
83
89-- | Helper to run Idris inner parser based stateT parsers
84-- | Helper to run Idris inner parser based stateT parsers
90−runparser :: StateT st IdrisInnerParser res -> st -> String -> String -> Either ParseError res
85+runparser :: StateT st P.Parser res -> st -> String -> String -> Either ParseError res
91runparser p i inputname s =
86runparser p i inputname s =
92− case P.parseString (runInnerParser (evalStateT p i))
87+ case P.parseString (evalStateT p i)
93 (P.Directed (UTF8.fromString inputname) 0 0 0 0) s of
88 (P.Directed (UTF8.fromString inputname) 0 0 0 0) s of
94 P.Failure (P.ErrInfo doc _) -> Left (ParseError doc)
89 P.Failure (P.ErrInfo doc _) -> Left (ParseError doc)
95 P.Success value -> Right value
90 P.Success value -> Right value