git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Add value source positions (#2427)
a53031bNicholas Wolverson
src/Language/PureScript/Parser/Declarations.hs+2−2
@@ -392,7 +392,7 @@ parseLet = do
392 return $ Let ds result
392 return $ Let ds result
393
393
394parseValueAtom :: TokenParser Expr
394parseValueAtom :: TokenParser Expr
395−parseValueAtom = P.choice
395+parseValueAtom = withSourceSpan PositionedValue $ P.choice
396 [ parseAnonymousArgument
396 [ parseAnonymousArgument
397 , Literal <$> parseNumericLiteral
397 , Literal <$> parseNumericLiteral
398 , Literal <$> parseCharLiteral
398 , Literal <$> parseCharLiteral
@@ -418,7 +418,7 @@ parseValueAtom = P.choice
418parseInfixExpr :: TokenParser Expr
418parseInfixExpr :: TokenParser Expr
419parseInfixExpr
419parseInfixExpr
420 = P.between tick tick parseValue
420 = P.between tick tick parseValue
421− <|> Op <$> parseQualified parseOperator
421+ <|> withSourceSpan PositionedValue (Op <$> parseQualified parseOperator)
422
422
423parseHole :: TokenParser Expr
423parseHole :: TokenParser Expr
424parseHole = Hole <$> holeLit
424parseHole = Hole <$> holeLit
src/Language/PureScript/Sugar/Operators/Expr.hs+3−1
@@ -20,7 +20,9 @@ matchExprOperators = matchOperators isBinOp extractOp fromOp reapply modOpTable
20 isBinOp _ = False
20 isBinOp _ = False
21
21
22 extractOp :: Expr -> Maybe (Expr, Expr, Expr)
22 extractOp :: Expr -> Maybe (Expr, Expr, Expr)
23− extractOp (BinaryNoParens op l r) = Just (op, l, r)
23+ extractOp (BinaryNoParens op l r)
24+ | PositionedValue _ _ op' <- op = Just (op', l, r)
25+ | otherwise = Just (op, l, r)
24 extractOp _ = Nothing
26 extractOp _ = Nothing
25
27
26 fromOp :: Expr -> Maybe (Qualified (OpName 'ValueOpName))
28 fromOp :: Expr -> Maybe (Qualified (OpName 'ValueOpName))