@@ -1843,7 +1843,7 @@ translateExpression (SOp op vars)
18431843
18441844 | (LLSHR (ITFixed IT64)) <- op
18451845 , (lhs:rhs:_) <- vars =
1846− jsMeth (jsMeth (JSVar lhs) "shiftRight" [JSVar rhs]) "intValue" []
1846+ jsMeth (JSVar lhs) "shiftRight" [JSVar rhs]
18471847
18481848 | (LZExt _ ITBig) <- op = jsBigInt $ jsCall "String" [JSVar (last vars)]
18491849 | (LPlus (ATInt ITBig)) <- op
@@ -1898,15 +1898,33 @@ translateExpression (SOp op vars)
18981898
18991899 | (LTrunc (ITFixed IT16) (ITFixed IT8)) <- op
19001900 , (arg:_) <- vars =
1901− JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFF))
1901+ JSParens $ JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFF))
19021902
19031903 | (LTrunc (ITFixed IT32) (ITFixed IT16)) <- op
19041904 , (arg:_) <- vars =
1905− JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFFFF))
1905+ JSParens $ JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFFFF))
19061906
19071907 | (LTrunc (ITFixed IT64) (ITFixed IT32)) <- op
19081908 , (arg:_) <- vars =
1909− jsMeth (JSVar arg) "and" [jsBigInt (JSString $ show 0xFFFFFFFF)]
1909+ jsMeth (jsMeth (JSVar arg) "and" [
1910+ jsBigInt (JSString $ show 0xFFFFFFFF)
1911+ ]) "intValue" []
1912+
1913+ | (LTrunc ITBig (ITFixed IT64)) <- op
1914+ , (arg:_) <- vars =
1915+ jsMeth (JSVar arg) "and" [
1916+ jsBigInt (JSString $ show 0xFFFFFFFF)
1917+ ]
1918+
1919+ | (LAnd (ITFixed IT64)) <- op
1920+ , (lhs:rhs:_) <- vars =
1921+ jsMeth (JSVar lhs) "and" [JSVar rhs]
1922+
1923+ | (LPlus (ATInt (ITFixed IT64))) <- op
1924+ , (lhs:rhs:_) <- vars =
1925+ jsMeth (jsMeth (JSVar lhs) "add" [JSVar rhs]) "and" [
1926+ jsBigInt (JSString $ show 0xFFFFFFFFFFFFFFFF)
1927+ ]
19101928
19111929 | (LPlus _) <- op
19121930 , (lhs:rhs:_) <- vars = translateBinaryOp "+" lhs rhs
@@ -2017,7 +2035,7 @@ translateExpression (SOp op vars)
20172035
20182036 where
20192037 translateBinaryOp :: String -> LVar -> LVar -> JS
2020− translateBinaryOp f lhs rhs = JSBinOp f (JSVar lhs) (JSVar rhs)
2038+ translateBinaryOp f lhs rhs = JSParens $ JSBinOp f (JSVar lhs) (JSVar rhs)
20212039
20222040
20232041 invokeMeth :: LVar -> String -> [LVar] -> JS