@@ -1843,7 +1843,7 @@ translateExpression (SOp op vars)
1844 | (LLSHR (ITFixed IT64)) <- op
1844 | (LLSHR (ITFixed IT64)) <- op
1845 , (lhs:rhs:_) <- vars =
1845 , (lhs:rhs:_) <- vars =
1846− jsMeth (jsMeth (JSVar lhs) "shiftRight" [JSVar rhs]) "intValue" []
1846+ jsMeth (JSVar lhs) "shiftRight" [JSVar rhs]
1848 | (LZExt _ ITBig) <- op = jsBigInt $ jsCall "String" [JSVar (last vars)]
1848 | (LZExt _ ITBig) <- op = jsBigInt $ jsCall "String" [JSVar (last vars)]
1849 | (LPlus (ATInt ITBig)) <- op
1849 | (LPlus (ATInt ITBig)) <- op
@@ -1898,15 +1898,33 @@ translateExpression (SOp op vars)
1899 | (LTrunc (ITFixed IT16) (ITFixed IT8)) <- op
1899 | (LTrunc (ITFixed IT16) (ITFixed IT8)) <- op
1900 , (arg:_) <- vars =
1900 , (arg:_) <- vars =
1901− JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFF))
1901+ JSParens $ JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFF))
1903 | (LTrunc (ITFixed IT32) (ITFixed IT16)) <- op
1903 | (LTrunc (ITFixed IT32) (ITFixed IT16)) <- op
1904 , (arg:_) <- vars =
1904 , (arg:_) <- vars =
1905− JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFFFF))
1905+ JSParens $ JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFFFF))
1907 | (LTrunc (ITFixed IT64) (ITFixed IT32)) <- op
1907 | (LTrunc (ITFixed IT64) (ITFixed IT32)) <- op
1908 , (arg:_) <- vars =
1908 , (arg:_) <- vars =
1909+ jsMeth (jsMeth (JSVar arg) "and" [
1910+ jsBigInt (JSString $ show 0xFFFFFFFF)
1913+ | (LTrunc ITBig (ITFixed IT64)) <- op
1914+ , (arg:_) <- vars =
1915+ jsMeth (JSVar arg) "and" [
1909− jsMeth (JSVar arg) "and" [jsBigInt (JSString $ show 0xFFFFFFFF)]
1916+ jsBigInt (JSString $ show 0xFFFFFFFF)
1919+ | (LAnd (ITFixed IT64)) <- op
1920+ , (lhs:rhs:_) <- vars =
1921+ jsMeth (JSVar lhs) "and" [JSVar rhs]
1923+ | (LPlus (ATInt (ITFixed IT64))) <- op
1924+ , (lhs:rhs:_) <- vars =
1925+ jsMeth (jsMeth (JSVar lhs) "add" [JSVar rhs]) "and" [
1926+ jsBigInt (JSString $ show 0xFFFFFFFFFFFFFFFF)
1911 | (LPlus _) <- op
1929 | (LPlus _) <- op
1912 , (lhs:rhs:_) <- vars = translateBinaryOp "+" lhs rhs
1930 , (lhs:rhs:_) <- vars = translateBinaryOp "+" lhs rhs
@@ -2017,7 +2035,7 @@ translateExpression (SOp op vars)
2019 translateBinaryOp :: String -> LVar -> LVar -> JS
2037 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)
2023 invokeMeth :: LVar -> String -> [LVar] -> JS
2041 invokeMeth :: LVar -> String -> [LVar] -> JS