@@ -797,13 +797,11 @@ Pi ::=
797797@
798798 -}
799799
800+pi :: SyntaxInfo -> IdrisParser PTerm
800801pi :: SyntaxInfo -> IdrisParser PTerm
801802pi syn =
802− do opts <- -- if implicitAllowed syn -- laziness is top level only
803− -- then option [] (do lchar '|'; return [Lazy])
804− -- else return []
805− return []
806− st <- static
803+ do opts <- piOpts syn
804+ st <- static
807805 (do try (lchar '('); xt <- typeDeclList syn; lchar ')'
808806 symbol "->"
809807 sc <- expr syn
@@ -835,6 +833,12 @@ pi syn =
835833 else do fail "no implicit arguments allowed here"))
836834 <?> "dependent type signature"
837835
836+piOpts :: SyntaxInfo -> IdrisParser [ArgOpt]
837+piOpts syn | implicitAllowed syn =
838+ lchar '.' *> return [ErasedArg]
839+ <|> return []
840+piOpts syn = return []
841+
838842{- | Parses a type constraint list
839843
840844@