on master help sign in
Only allow @ patterns on LHS
f733bf0Edwin Brady
src/Idris/ParseExpr.hs+6−4
@@ -332,10 +332,12 @@ simpleExpr syn =
332 [pexp (PConstant (Str (show str)))])
332 [pexp (PConstant (Str (show str)))])
333 <|> do fc <- getFC
333 <|> do fc <- getFC
334 x <- fnName
334 x <- fnName
335+ if inPattern syn
335− option (PRef fc x)
336+ then option (PRef fc x)
336− (do reservedOp "@"
337+ (do reservedOp "@"
337− s <- simpleExpr syn
338+ s <- simpleExpr syn
338− return (PAs fc x s))
339+ return (PAs fc x s))
340+ else return (PRef fc x)
339 <|> idiom syn
341 <|> idiom syn
340 <|> listExpr syn
342 <|> listExpr syn
341 <|> alt syn
343 <|> alt syn
test/reg050/expected−16
@@ -10,19 +10,3 @@ When elaborating an application of function Prelude.Monad.>>=:
10 List
10 List
11 with
11 with
12 \{uv0} => argTy -> uv
12 \{uv0} => argTy -> uv
13−./baddoublebang.idr:6:26: error: not
14− a terminator, expected: "$",
15− "$>", "&&", "*", "+", "++", "-",
16− "->", ".", "/", "/=", "::", ";",
17− "<", "<#>", "<$", "<$>", "<*>",
18− "<+>", "<->", "<<", "<=", "<|>",
19− "=", "==", ">", ">=", ">>",
20− ">>=", "@", "\\\\", "`", "in",
21− "||", "~=~",
22− ambiguous use of a left-associative operator,
23− ambiguous use of a non-associative operator,
24− ambiguous use of a right-associative operator,
25− end of input, function argument,
26− matching application expression
27−doubleBang mmn = do pure !!mmn
28− ^