@@ -6,8 +6,6 @@ module Parse.Expression
66 where
77
88
9−import Control.Monad (guard)
10−
119import qualified AST.Source as Src
1210import qualified Elm.Name as N
1311import Parse.Primitives
@@ -300,34 +298,36 @@ exprHelp start (State ops expr args end pos) =
300298 spos <- W.whitespace
301299 hint (E.AfterOpExpr opName) (checkSpace spos)
302300 newStart <- getPosition
303− hint (E.AfterOpExpr opName) $ oneOf $
304− [ -- negative terms
305− do guard ("-" == opName && end /= opStart && opEnd == newStart)
306− rawTerm <- term
301+ hint (E.AfterOpExpr opName) $
302+ if "-" == opName && end /= opStart && opEnd == newStart
303+ then
304+ -- negative terms
305+ do rawTerm <- term
307306 newEnd <- getPosition
308307 newPos <- W.whitespace
309308 let arg = A.at opStart newEnd (Src.Negate rawTerm)
310309 exprHelp start (State ops expr (arg:args) newEnd newPos)
311−
312− , -- term
313− do newExpr <- possiblyNegativeTerm newStart
314− newEnd <- getPosition
315− newPos <- W.whitespace
316− let newOps = (toCall expr args, op) : ops
317− exprHelp start (State newOps newExpr [] newEnd newPos)
318−
319− , -- final term
320− do (newLast, newEnd, newPos) <-
321− oneOf
322− [ let_ newStart
323− , case_ newStart
324− , if_ newStart
325− , function newStart
326− ]
327− let newOps = (toCall expr args, op) : ops
328− let finalExpr = A.at start newEnd (Src.Binops (reverse newOps) newLast)
329− return ( finalExpr, newEnd, newPos )
330− ]
310+ else
311+ oneOf
312+ [ -- term
313+ do newExpr <- possiblyNegativeTerm newStart
314+ newEnd <- getPosition
315+ newPos <- W.whitespace
316+ let newOps = (toCall expr args, op) : ops
317+ exprHelp start (State newOps newExpr [] newEnd newPos)
318+
319+ , -- final term
320+ do (newLast, newEnd, newPos) <-
321+ oneOf
322+ [ let_ newStart
323+ , case_ newStart
324+ , if_ newStart
325+ , function newStart
326+ ]
327+ let newOps = (toCall expr args, op) : ops
328+ let finalExpr = A.at start newEnd (Src.Binops (reverse newOps) newLast)
329+ return ( finalExpr, newEnd, newPos )
330+ ]
331331
332332 , -- done
333333 let finalExpr = toCall expr args in