@@ -2562,7 +2562,7 @@ parseTactic :: IState -> String -> Result PTactic
25622562parseTactic st = parseString (evalStateT (fullTactic defaultSyntax) st) (Directed (UTF8.fromString "(input)") 0 0 0 0)
25632563
25642564-- | Parse module header and imports
2565−parseImports :: FilePath -> String -> Idris ([String], [String], Delta)
2565+parseImports :: FilePath -> String -> Idris ([String], [String], Maybe Delta)
25662566parseImports fname input
25672567 = do i <- getIState
25682568 case parseString (evalStateT imports i) (Directed (UTF8.fromString fname) 0 0 0 0) input of
@@ -2570,18 +2570,22 @@ parseImports fname input
25702570 Success (x, i) -> do -- Discard state updates (there should be
25712571 -- none anyway)
25722572 return x
2573− where imports :: IdrisParser (([String], [String], Delta), IState)
2573+ where imports :: IdrisParser (([String], [String], Maybe Delta), IState)
25742574 imports = do whiteSpace
25752575 mname <- moduleHeader
25762576 ps <- many import_
25772577 mrk <- mark
2578+ isEof <- lookAheadMatches eof
2579+ let mrk' = if isEof
2580+ then Nothing
2581+ else Just mrk
25782582 i <- get
2579− return ((mname, ps, mrk), i)
2583+ return ((mname, ps, mrk'), i)
25802584
25812585
25822586-- | A program is a list of declarations, possibly with associated
25832587-- documentation strings.
2584−parseProg :: SyntaxInfo -> FilePath -> String -> Delta ->
2588+parseProg :: SyntaxInfo -> FilePath -> String -> Maybe Delta ->
25852589 Idris [PDecl]
25862590parseProg syn fname input mrk
25872591 = do i <- getIState
@@ -2595,10 +2599,13 @@ parseProg syn fname input mrk
25952599 Success (x, i) -> do putIState i
25962600 return $ collect x
25972601 where mainProg :: IdrisParser ([PDecl], IState)
2598− mainProg = do release mrk
2599− ds <- prog syn
2600− i' <- get
2601− return (ds, i')
2602+ mainProg = case mrk of
2603+ Nothing -> do i <- get; return ([], i)
2604+ Just mrk -> do
2605+ release mrk
2606+ ds <- prog syn
2607+ i' <- get
2608+ return (ds, i')
26022609
26032610-- | Collect 'PClauses' with the same function name
26042611collect :: [PDecl] -> [PDecl]