on master help sign in
Stylize Idris.Parser.Expr
b5d05d6Echo Nolan
src/Idris/Parser/Expr.hs+28−26
@@ -5,38 +5,39 @@ Copyright :
5License : BSD3
5License : BSD3
6Maintainer : The Idris Community.
6Maintainer : The Idris Community.
7-}
7-}
8−{-# LANGUAGE GeneralizedNewtypeDeriving, ConstraintKinds #-}
8+{-# LANGUAGE ConstraintKinds, GeneralizedNewtypeDeriving, PatternGuards,
9−{-# LANGUAGE PatternGuards, TupleSections #-}
9+ TupleSections #-}
10module Idris.Parser.Expr where
10module Idris.Parser.Expr where
11
11
12import Idris.AbsSyntax
12import Idris.AbsSyntax
13+import Idris.Core.TT
14+import Idris.DSL
13import Idris.Parser.Helpers
15import Idris.Parser.Helpers
14import Idris.Parser.Ops
16import Idris.Parser.Ops
15−import Idris.DSL
16−import Idris.Core.TT
17
17
18import Prelude hiding (pi)
18import Prelude hiding (pi)
19
19
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
27import Control.Applicative
20import Control.Applicative
28import Control.Monad
21import Control.Monad
29import Control.Monad.State.Strict
22import Control.Monad.State.Strict
23+import qualified Data.ByteString.UTF8 as UTF8
24+import Data.Char
30import Data.Function (on)
25import Data.Function (on)
31−import Data.Maybe
32−import qualified Data.List.Split as Spl
26+import qualified Data.HashSet as HS
33import Data.List
27import Data.List
28+import qualified Data.List.Split as Spl
29+import Data.Maybe
34import Data.Monoid
30import Data.Monoid
35−import Data.Char
36−import qualified Data.HashSet as HS
37import qualified Data.Text as T
31import qualified Data.Text as T
38−import qualified Data.ByteString.UTF8 as UTF8
39import Debug.Trace
32import 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
40
41
41-- | Allow implicit type declarations
42-- | Allow implicit type declarations
42allowImp :: SyntaxInfo -> SyntaxInfo
43allowImp :: SyntaxInfo -> SyntaxInfo
@@ -678,16 +679,17 @@ app syn = do f <- simpleExpr syn
678 f
679 f
679 (PMatchApp fc ff)
680 (PMatchApp fc ff)
680 (PRef fc [] (sMN 0 "match")))
681 (PRef fc [] (sMN 0 "match")))
681− <?> "matching application expression") <|> (do
682+ <?> "matching application expression") <|>
683+ (do
682− fc <- getFC
684+ fc <- getFC
683− i <- get
685+ i <- get
684− args <- many (do notEndApp; arg syn)
686+ args <- many (do notEndApp; arg syn)
685− wargs <- if withAppAllowed syn && not (inPattern syn)
687+ wargs <- if withAppAllowed syn && not (inPattern syn)
686− then many (do notEndApp; reservedOp "|"; expr' syn)
688+ then many (do notEndApp; reservedOp "|"; expr' syn)
687− else return []
689+ else return []
688− case args of
690+ case args of
689− [] -> return f
691+ [] -> return f
690− _ -> return (withApp fc (flattenFromInt fc f args) wargs))
692+ _ -> return (withApp fc (flattenFromInt fc f args) wargs))
691 <?> "function application"
693 <?> "function application"
692 where
694 where
693 -- bit of a hack to deal with the situation where we're applying a
695 -- bit of a hack to deal with the situation where we're applying a