@@ -5,38 +5,39 @@ Copyright :
55License : BSD3
66Maintainer : The Idris Community.
77-}
8−{-# LANGUAGE GeneralizedNewtypeDeriving, ConstraintKinds #-}
9−{-# LANGUAGE PatternGuards, TupleSections #-}
8+{-# LANGUAGE ConstraintKinds, GeneralizedNewtypeDeriving, PatternGuards,
9+ TupleSections #-}
1010module Idris.Parser.Expr where
1111
1212import Idris.AbsSyntax
13+import Idris.Core.TT
14+import Idris.DSL
1315import Idris.Parser.Helpers
1416import Idris.Parser.Ops
15−import Idris.DSL
16−import Idris.Core.TT
1717
1818import Prelude hiding (pi)
1919
20−import Text.Trifecta.Delta
21−import Text.Trifecta hiding (span, stringLiteral, charLiteral, natural, symbol, char, string, whiteSpace, Err)
22−import Text.Parser.LookAhead
23−import Text.Parser.Expression
24−import qualified Text.Parser.Token as Tok
25−import qualified Text.Parser.Char as Chr
26−import qualified Text.Parser.Token.Highlight as Hi
2720import Control.Applicative
2821import Control.Monad
2922import Control.Monad.State.Strict
23+import qualified Data.ByteString.UTF8 as UTF8
24+import Data.Char
3025import Data.Function (on)
31−import Data.Maybe
32−import qualified Data.List.Split as Spl
26+import qualified Data.HashSet as HS
3327import Data.List
28+import qualified Data.List.Split as Spl
29+import Data.Maybe
3430import Data.Monoid
35−import Data.Char
36−import qualified Data.HashSet as HS
3731import qualified Data.Text as T
38−import qualified Data.ByteString.UTF8 as UTF8
3932import Debug.Trace
33+import qualified Text.Parser.Char as Chr
34+import Text.Parser.Expression
35+import Text.Parser.LookAhead
36+import qualified Text.Parser.Token as Tok
37+import qualified Text.Parser.Token.Highlight as Hi
38+import Text.Trifecta hiding (Err, char, charLiteral, natural, span, string,
39+ stringLiteral, symbol, whiteSpace)
40+import Text.Trifecta.Delta
4041
4142-- | Allow implicit type declarations
4243allowImp :: SyntaxInfo -> SyntaxInfo
@@ -678,16 +679,17 @@ app syn = do f <- simpleExpr syn
678679 f
679680 (PMatchApp fc ff)
680681 (PRef fc [] (sMN 0 "match")))
681− <?> "matching application expression") <|> (do
682− fc <- getFC
683− i <- get
684− args <- many (do notEndApp; arg syn)
685− wargs <- if withAppAllowed syn && not (inPattern syn)
686− then many (do notEndApp; reservedOp "|"; expr' syn)
687− else return []
688− case args of
689− [] -> return f
690− _ -> return (withApp fc (flattenFromInt fc f args) wargs))
682+ <?> "matching application expression") <|>
683+ (do
684+ fc <- getFC
685+ i <- get
686+ args <- many (do notEndApp; arg syn)
687+ wargs <- if withAppAllowed syn && not (inPattern syn)
688+ then many (do notEndApp; reservedOp "|"; expr' syn)
689+ else return []
690+ case args of
691+ [] -> return f
692+ _ -> return (withApp fc (flattenFromInt fc f args) wargs))
691693 <?> "function application"
692694 where
693695 -- bit of a hack to deal with the situation where we're applying a