on master help sign in
eof should close all open blocks
92f3139raichoo
src/Idris/Parser.hs+6−7
@@ -206,14 +206,13 @@ openBlock = do lchar '{'
206closeBlock :: IParser ()
206closeBlock :: IParser ()
207closeBlock = do ist <- getState
207closeBlock = do ist <- getState
208 bs <- case brace_stack ist of
208 bs <- case brace_stack ist of
209− Nothing : xs -> do lchar '}'
209+ Nothing : xs -> (lchar '}' >> return xs) <|> (eof >> return [])
210− return xs
211− Just lvl : xs -> do i <- indent
210+ Just lvl : xs -> (do i <- indent
212− inp <- getInput
211+ inp <- getInput
213-- trace (show (take 10 inp, i, lvl)) $
212-- trace (show (take 10 inp, i, lvl)) $
214− if i >= lvl && take 1 inp /= ")"
213+ if i >= lvl && take 1 inp /= ")"
215− then fail "Not end of block"
214+ then fail "Not end of block"
216− else return xs
215+ else return xs) <|> (eof >> return [])
217 setState (ist { brace_stack = bs })
216 setState (ist { brace_stack = bs })
218
217
219pTerminator = do lchar ';'; popIndent
218pTerminator = do lchar ';'; popIndent