@@ -1,4 +1,4 @@
1−{-# LANGUAGE GeneralizedNewtypeDeriving, ConstraintKinds, PatternGuards #-}
1+{-# LANGUAGE GeneralizedNewtypeDeriving, ConstraintKinds, PatternGuards, OverlappingInstances #-}
22module Idris.ParseHelpers where
33
44import Prelude hiding (pi)
@@ -41,11 +41,17 @@ import Debug.Trace
4141type IdrisParser = StateT IState IdrisInnerParser
4242
4343newtype IdrisInnerParser a = IdrisInnerParser { runInnerParser :: Parser a }
44− deriving (Monad, Functor, MonadPlus, Applicative, Alternative, CharParsing, LookAheadParsing, Parsing, DeltaParsing, MarkParsing Delta, Monoid)
44+ deriving (Monad, Functor, MonadPlus, Applicative, Alternative, CharParsing, LookAheadParsing, Parsing, DeltaParsing, MarkParsing Delta, Monoid, TokenParsing)
4545
46−instance TokenParsing IdrisInnerParser where
46+instance TokenParsing IdrisParser where
4747 someSpace = many (simpleWhiteSpace <|> singleLineComment <|> multiLineComment) *> pure ()
48−
48+ token p = do s <- get
49+ startFC <- getFC
50+ r <- p
51+ endFC <- getFC
52+ whiteSpace
53+ put (s { lastTokenSpan = Just (startFC, endFC) })
54+ return r
4955-- | Generalized monadic parsing constraint type
5056type MonadicParsing m = (DeltaParsing m, LookAheadParsing m, TokenParsing m, Monad m)
5157