git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Simplify indentation rules for guards
4237393Phil Freeman
examples/passing/Operators.purs+4
@@ -61,6 +61,9 @@ module Main where
61 test15 :: Number -> Number -> Boolean
61 test15 :: Number -> Number -> Boolean
62 test15 a b = const false $ a `test14` b
62 test15 a b = const false $ a `test14` b
63
63
64+ test16 :: Number -> Number -> Number
65+ test16 x y = x .|. y .&. y
66+
64 main = do
67 main = do
65 let t1 = test1 1 2 (\x y -> x + y)
68 let t1 = test1 1 2 (\x y -> x + y)
66 let t2 = test2
69 let t2 = test2
@@ -77,4 +80,5 @@ module Main where
77 let t13 = test13 k 1 2
80 let t13 = test13 k 1 2
78 let t14 = test14 1 2
81 let t14 = test14 1 2
79 let t15 = test15 1 2
82 let t15 = test15 1 2
83+ let t16 = test16 1 2
80 trace "Done"
84 trace "Done"
prelude/prelude.purs+10−10
@@ -17,7 +17,7 @@ module Prelude
17 , negate
17 , negate
18 , Eq, (==), (/=), refEq, refIneq
18 , Eq, (==), (/=), refEq, refIneq
19 , Ord, Ordering(..), compare, (<), (>), (<=), (>=)
19 , Ord, Ordering(..), compare, (<), (>), (<=), (>=)
20− , Bits, (&), (|), (^), shl, shr, zshr, complement
20+ , Bits, (.&.), (.|.), (.^.), shl, shr, zshr, complement
21 , BoolLike, (&&), (||)
21 , BoolLike, (&&), (||)
22 , not
22 , not
23 , Semigroup, (<>), (++)
23 , Semigroup, (<>), (++)
@@ -372,14 +372,14 @@ module Prelude
372 EQ -> compare xs ys
372 EQ -> compare xs ys
373 other -> other
373 other -> other
374
374
375− infixl 10 &
375+ infixl 10 .&.
376− infixl 10 |
376+ infixl 10 .|.
377− infixl 10 ^
377+ infixl 10 .^.
378
378
379 class Bits b where
379 class Bits b where
380− (&) :: b -> b -> b
380+ (.&.) :: b -> b -> b
381− (|) :: b -> b -> b
381+ (.|.) :: b -> b -> b
382− (^) :: b -> b -> b
382+ (.^.) :: b -> b -> b
383 shl :: b -> Number -> b
383 shl :: b -> Number -> b
384 shr :: b -> Number -> b
384 shr :: b -> Number -> b
385 zshr :: b -> Number -> b
385 zshr :: b -> Number -> b
@@ -426,9 +426,9 @@ module Prelude
426 \}" :: Number -> Number
426 \}" :: Number -> Number
427
427
428 instance bitsNumber :: Bits Number where
428 instance bitsNumber :: Bits Number where
429− (&) = numAnd
429+ (.&.) = numAnd
430− (|) = numOr
430+ (.|.) = numOr
431− (^) = numXor
431+ (.^.) = numXor
432 shl = numShl
432 shl = numShl
433 shr = numShr
433 shr = numShr
434 zshr = numZshr
434 zshr = numZshr
src/Language/PureScript/Constants.hs+6−6
@@ -65,14 +65,14 @@ module Language.PureScript.Constants where
65(/=) :: String
65(/=) :: String
66(/=) = "/="
66(/=) = "/="
67
67
68−(&) :: String
68+(.&.) :: String
69−(&) = "&"
69+(.&.) = ".&."
70
70
71−bar :: String
71+(.|.) :: String
72−bar = "|"
72+(.|.) = ".|."
73
73
74−(^) :: String
74+(.^.) :: String
75−(^) = "^"
75+(.^.) = ".^."
76
76
77(&&) :: String
77(&&) :: String
78(&&) = "&&"
78(&&) = "&&"
src/Language/PureScript/Optimizer/Inliner.hs+3−3
@@ -117,9 +117,9 @@ inlineCommonOperators = applyAll $
117 , binaryFunction C.bitsNumber C.shl ShiftLeft
117 , binaryFunction C.bitsNumber C.shl ShiftLeft
118 , binaryFunction C.bitsNumber C.shr ShiftRight
118 , binaryFunction C.bitsNumber C.shr ShiftRight
119 , binaryFunction C.bitsNumber C.zshr ZeroFillShiftRight
119 , binaryFunction C.bitsNumber C.zshr ZeroFillShiftRight
120− , binary C.bitsNumber (C.&) BitwiseAnd
120+ , binary C.bitsNumber (C..&.) BitwiseAnd
121− , binary C.bitsNumber C.bar BitwiseOr
121+ , binary C.bitsNumber (C..|.) BitwiseOr
122− , binary C.bitsNumber (C.^) BitwiseXor
122+ , binary C.bitsNumber (C..^.) BitwiseXor
123 , unary C.bitsNumber C.complement BitwiseNot
123 , unary C.bitsNumber C.complement BitwiseNot
124
124
125 , binary C.boolLikeBoolean (C.&&) And
125 , binary C.boolLikeBoolean (C.&&) And
src/Language/PureScript/Parser/Common.hs+1−1
@@ -71,7 +71,7 @@ reservedTypeNames = [ "forall"
71-- A list of reserved operators
71-- A list of reserved operators
72--
72--
73reservedOpNames :: [String]
73reservedOpNames :: [String]
74−reservedOpNames = [ "=>", "->", "=", ".", "\\" ]
74+reservedOpNames = [ "=>", "->", "=", ".", "\\", "|" ]
75
75
76-- |
76-- |
77-- Valid first characters for an identifier
77-- Valid first characters for an identifier
src/Language/PureScript/Parser/Declarations.hs+6−6
@@ -83,9 +83,9 @@ parseValueDeclaration = do
83 name <- parseIdent
83 name <- parseIdent
84 binders <- P.many parseBinderNoParens
84 binders <- P.many parseBinderNoParens
85 value <- Left <$> (C.indented *>
85 value <- Left <$> (C.indented *>
86− C.mark (P.many1 ((,) <$> (C.same *> parseGuard)
86+ P.many1 ((,) <$> parseGuard
87− <*> (lexeme (indented *> P.char '=') *> parseValueWithWhereClause)
87+ <*> (lexeme (indented *> P.char '=') *> parseValueWithWhereClause)
88− )))
88+ ))
89 <|> Right <$> (lexeme (indented *> P.char '=') *> parseValueWithWhereClause)
89 <|> Right <$> (lexeme (indented *> P.char '=') *> parseValueWithWhereClause)
90 return $ ValueDeclaration name Value binders value
90 return $ ValueDeclaration name Value binders value
91 where
91 where
@@ -304,9 +304,9 @@ parseCase = Case <$> P.between (P.try (C.reserved "case")) (C.indented *> C.rese
304parseCaseAlternative :: P.Parsec String ParseState CaseAlternative
304parseCaseAlternative :: P.Parsec String ParseState CaseAlternative
305parseCaseAlternative = CaseAlternative <$> (return <$> parseBinder)
305parseCaseAlternative = CaseAlternative <$> (return <$> parseBinder)
306 <*> (Left <$> (C.indented *>
306 <*> (Left <$> (C.indented *>
307− C.mark (P.many1 ((,) <$> (C.same *> parseGuard)
307+ P.many1 ((,) <$> parseGuard
308− <*> (lexeme (indented *> C.reservedOp "->") *> parseValue)
308+ <*> (lexeme (indented *> C.reservedOp "->") *> parseValue)
309− )))
309+ ))
310 <|> Right <$> (lexeme (indented *> C.reservedOp "->") *> parseValue))
310 <|> Right <$> (lexeme (indented *> C.reservedOp "->") *> parseValue))
311 P.<?> "case alternative"
311 P.<?> "case alternative"
312
312