on master help sign in
Merge pull request #2516 from david-christiansen/issue/2512

Fix indentation in PCAF parser

commit65f49450e326b93c707088d74696a1f2e5869a58 authorDavid Christiansen <david@davidchristiansen.dk> dateWed 12 Aug 2015, 14:00 (11 years ago) parent650d3dd13adf74
2 files changed+5−3
src/Idris/ParseHelpers.hs+3−2 src/Idris/Parser.hs+2−1
src/Idris/ParseHelpers.hs+3−2
@@ -450,8 +450,9 @@ pushIndent = do pos <- position
450450-- | Pops indentation from stack
451451popIndent :: IdrisParser ()
452452popIndent = do ist <- get
453− let (x : xs) = indent_stack ist
454− put (ist { indent_stack = xs })
453+ case indent_stack ist of
454+ [] -> error "The impossible happened! Tried to pop an indentation level where none was pushed (underflow)."
455+ (x : xs) -> put (ist { indent_stack = xs })
455456
456457
457458-- | Gets current indentation
src/Idris/Parser.hs+2−1
@@ -834,8 +834,9 @@ CAF ::= 'let' FnName '=' Expr Terminator;
834834caf :: SyntaxInfo -> IdrisParser PDecl
835835caf syn = do reservedHL "let"
836836 n_in <- fst <$> fnName; let n = expandNS syn n_in
837+ pushIndent
837838 lchar '='
838− t <- expr syn
839+ t <- indented $ expr syn
839840 terminator
840841 fc <- getFC
841842 return (PCAF fc n t)