on master help sign in
Treat (=) as a special function name.

Includes a regression test. Fixes #884

commitbe7d600f0d38f72c3b104437c20658f7b4777511 authorJan Bessai <Jan.Bessai@tu-dortmund.de> dateWed 5 Mar 2014, 12:46 (13 years ago) parentaf082b6
4 files changed+18−2
src/Idris/ParseOps.hs+6−2 test/reg037/expected test/reg037/reg037.idr+9 test/reg037/run+3
src/Idris/ParseOps.hs+6−2
@@ -82,12 +82,16 @@ backtick = Infix (do indentPropHolds gtProp
8282 optional namespace
8383
8484@
85− OperatorFront ::= (Identifier_t '.')? '(' Operator_t ')';
85+ OperatorFront ::=
86+ '(' '=' ')'
87+ | (Identifier_t '.')? '(' Operator_t ')'
88+ ;
8689@
8790
8891-}
8992operatorFront :: IdrisParser Name
90−operatorFront = maybeWithNS (lchar '(' *> operator <* lchar ')') False []
93+operatorFront = try ((lchar '(' *> reservedOp "=" <* lchar ')') >> (return eqTy))
94+ <|> maybeWithNS (lchar '(' *> operator <* lchar ')') False []
9195
9296{- | Parses a function (either normal name or operator)
9397
test/reg037/expectednew file

No changes to the content.

test/reg037/reg037.idrnew file+9
@@ -0,0 +1,9 @@
1+
2+--- Parser regression for (=) as a function name (fnName)
3+
4+class Foo (t : (A : Type) -> (B : Type) -> A -> B -> Type) where
5+ foo : (A : Type) -> (B : Type) -> (x : A) -> (y : B) -> t A B x y -> t A B x y
6+
7+instance Foo (=) where
8+ foo A B x y prf = prf
9+
test/reg037/runnew file+3
@@ -0,0 +1,3 @@
1+#!/usr/bin/env bash
2+idris --check reg037.idr
3+rm -f reg037 *.ibc