on master help sign in
Remove backtick-infix syntax

As of 0.17.1 you can write things like (this `andThen` that) where the backticks allow you to make a normal function into an infix operator. We decided this was more harm than good.

commit7a2e15fdfd346630fe84add117b4ef521471cd93 authorEvan Czaplicki <evancz@users.noreply.github.com> dateFri 5 Aug 2016, 17:03 (10 years ago) parent9ebce90
5 files changed+16−22
src/Docs/Check.hs+2−2 src/Parse/Declaration.hs+1−1 src/Parse/Expression.hs+4−4 src/Parse/Helpers.hs+8−14 src/Parse/Module.hs+1−1
src/Docs/Check.hs+2−2
@@ -12,7 +12,7 @@ import qualified Docs.AST as Docs
1212import qualified Elm.Compiler.Type as Type
1313import Elm.Utils ((|>))
1414import Parse.Helpers
15− ( addLocation, anyUntil, commaSep1, iParse, parens, simpleNewline, symOp
15+ ( addLocation, anyUntil, commaSep1, iParse, parens, simpleNewline, infixOp
1616 , var, whitespace
1717 )
1818import qualified Reporting.Annotation as A
@@ -156,7 +156,7 @@ commentedNames (R.Region start _) comment =
156156 choice
157157 [ do string "@docs"
158158 whitespace
159− commaSep1 (addLocation (var <|> parens symOp))
159+ commaSep1 (addLocation (var <|> parens infixOp))
160160 , do anyUntil simpleNewline
161161 return []
162162 ]
src/Parse/Declaration.hs+1−1
@@ -79,7 +79,7 @@ infixDecl =
7979 forcedWS
8080 n <- digit
8181 forcedWS
82− op <- anyOp
82+ op <- infixOp
8383 return $ Decl.Fixity (Decl.Infix op assoc (read [n]))
8484
8585
src/Parse/Expression.hs+4−4
@@ -121,7 +121,7 @@ parensTerm =
121121 in
122122 do (start, mkExpr, end) <-
123123 located $ choice $
124− [ mkBinop <$> try (parens symOp)
124+ [ mkBinop <$> try (parens infixOp)
125125 , parens (tupleFn <|> parenedExpr)
126126 ]
127127 return (mkExpr start end)
@@ -202,7 +202,7 @@ expr =
202202
203203binaryExpr :: IParser Source.Expr
204204binaryExpr =
205− Binop.binops appExpr lastExpr anyOp
205+ Binop.binops appExpr lastExpr infixOp
206206 where
207207 lastExpr =
208208 addLocation (choice [ letExpr, caseExpr, ifExpr ])
@@ -296,7 +296,7 @@ annotation :: (String -> T.Raw -> a) -> IParser (A.Located a)
296296annotation creator =
297297 let
298298 start =
299− do v <- lowVar <|> parens symOp
299+ do v <- lowVar <|> parens infixOp
300300 padded hasType
301301 return v
302302 in
@@ -325,6 +325,6 @@ makeFunction args body@(A.A ann _) =
325325defStart :: IParser (P.Raw, [P.Raw])
326326defStart =
327327 expecting "the definition of a value (x = ...)" $
328− do starter <- try Pattern.term <|> addLocation (P.Var <$> parens symOp)
328+ do starter <- try Pattern.term <|> addLocation (P.Var <$> parens infixOp)
329329 args <- spacePrefix Pattern.term
330330 return (starter, args)
src/Parse/Helpers.hs+8−14
@@ -114,20 +114,14 @@ reserved word =
114114-- INFIX OPERATORS
115115
116116
117−anyOp :: IParser String
118−anyOp =
119− betwixt '`' '`' qualifiedVar
120− <|> symOp
121− <?> "an infix operator like (+)"
122−
123−
124−symOp :: IParser String
125−symOp =
126− do op <- many1 (satisfy (\c -> Help.isSymbol c && c /= '`'))
127− guard (op `notElem` [ "=", "..", "->", "--", "|", ":" ])
128− case op of
129− "." -> notFollowedBy lower >> return op
130− _ -> return op
117+infixOp :: IParser String
118+infixOp =
119+ expecting "an infix operator like (+)" $
120+ do op <- many1 (satisfy (\c -> Help.isSymbol c && c /= '`'))
121+ guard (op `notElem` [ "=", "..", "->", "--", "|", ":" ])
122+ case op of
123+ "." -> notFollowedBy lower >> return op
124+ _ -> return op
131125
132126
133127
src/Parse/Module.hs+1−1
@@ -168,7 +168,7 @@ value =
168168 val <|> tipe <?> "a value or type to expose"
169169 where
170170 val =
171− Var.Value <$> (lowVar <|> parens symOp)
171+ Var.Value <$> (lowVar <|> parens infixOp)
172172
173173 tipe =
174174 do name <- capVar