on master help sign in
Changed to not affect normal expression parsing
2c91accZack Grannan
src/Idris/REPLParser.hs+8−4
@@ -163,10 +163,9 @@ pCmd :: P.IdrisParser (Either String Command)
163pCmd = choice [ do c <- cmd names; parser c
163pCmd = choice [ do c <- cmd names; parser c
164 | (names, _, _, parser) <- parserCommandsForHelp ++ parserCommands ]
164 | (names, _, _, parser) <- parserCommandsForHelp ++ parserCommands ]
165 <|> unrecognized
165 <|> unrecognized
166− <|> nop
166+ <|> nop
167 <|> eval
167 <|> eval
168 where nop = do eof; return (Right NOP)
168 where nop = do eof; return (Right NOP)
169− eval = exprArg Eval ""
170 unrecognized = do
169 unrecognized = do
171 P.lchar ':'
170 P.lchar ':'
172 cmd <- many anyChar
171 cmd <- many anyChar
@@ -194,6 +193,11 @@ noArgs cmd name = do
194
193
195 emptyArgs <|> failure
194 emptyArgs <|> failure
196
195
196+eval :: P.IdrisParser (Either String Command)
197+eval = do
198+ t <- P.fullExpr defaultSyntax
199+ return $ Right (Eval t)
200+
197exprArg :: (PTerm -> Command) -> String -> P.IdrisParser (Either String Command)
201exprArg :: (PTerm -> Command) -> String -> P.IdrisParser (Either String Command)
198exprArg cmd name = do
202exprArg cmd name = do
199 let noArg = do
203 let noArg = do
@@ -201,9 +205,9 @@ exprArg cmd name = do
201 return $ Left ("Usage is :" ++ name ++ " <expression>")
205 return $ Left ("Usage is :" ++ name ++ " <expression>")
202
206
203 let justOperator = do
207 let justOperator = do
204− (op, fc) <- P.maybeWithNS P.operatorFC False []
208+ (op, fc) <- P.operatorFC
205 eof
209 eof
206− return $ Right $ cmd (PRef fc [] op)
210+ return $ Right $ cmd (PRef fc [] (sUN op))
207
211
208 let properArg = do
212 let properArg = do
209 t <- P.fullExpr defaultSyntax
213 t <- P.fullExpr defaultSyntax
test/interactive010/expected+11−2
@@ -3,11 +3,20 @@ Prelude.Strings.(++) : String -> String -> String
3Prelude.Classes./ : (__pi_arg : Float) →
3Prelude.Classes./ : (__pi_arg : Float) →
4 (__pi_arg1 : Float) → Float
4 (__pi_arg1 : Float) → Float
5Usage is :doc <functionname>
5Usage is :doc <functionname>
6+Usage is :wc <functionname>
6Usage is :printdef <functionname>
7Usage is :printdef <functionname>
7prim__divFloat
8prim__divFloat
8Prelude.Classes./
9Prelude.Classes./
9
10
10 : Float -> Float -> Float
11 : Float -> Float -> Float
11−prim__divFloat : Double -> Double -> Double
12+(input):1:1: error: expected: ":",
12−(input):Can't infer argument a to (++)
13+ dependent type signature,
14+ end of input
15+/<EOF>
16+^
17+(input):1:1: error: expected: ":",
18+ dependent type signature,
19+ end of input
20+++<EOF>
21+^
13prim__divFloat
22prim__divFloat
test/interactive010/input+1
@@ -1,6 +1,7 @@
1:type ++
1:type ++
2:core /
2:core /
3:doc +
3:doc +
4+:wc +
4:printdef -
5:printdef -
5:spec /
6:spec /
6:patt /
7:patt /