diff --git a/src/fast-path.js b/src/fast-path.js index 80f7d613..a8579262 100644 --- a/src/fast-path.js +++ b/src/fast-path.js @@ -342,6 +342,12 @@ FPp.needsParens = function(assumeExpressionContext) { return true; } + // Add parenthesis when working with binary operators + // It's not stricly needed but helps with code understanding + if (["|", "^", "&", ">>", "<<", ">>>"].indexOf(po) !== -1) { + return true; + } + default: return false; } diff --git a/tests/binary_math/__snapshots__/jsfmt.spec.js.snap b/tests/binary_math/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 00000000..45ee59c6 --- /dev/null +++ b/tests/binary_math/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,25 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`parens.js 1`] = ` +"const result = (a + b) >>> 1; +var sizeIndex = ((index - 1) >>> level) & MASK; +var from = offset > left ? 0 : (left - offset) >> level; +var to = ((right - offset) >> level) + 1; +if (rawIndex < 1 << (list._level + SHIFT)) {} +var res = size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT); +sign = 1 - (2 * (b[3] >> 7)); +exponent = (((b[3] << 1) & 0xff) | (b[2] >> 7)) - 127; +mantissa = ((b[2] & 0x7f) << 16) | (b[1] << 8) | b[0]; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +const result = (a + b) >>> 1; +var sizeIndex = ((index - 1) >>> level) & MASK; +var from = offset > left ? 0 : (left - offset) >> level; +var to = ((right - offset) >> level) + 1; +if (rawIndex < 1 << (list._level + SHIFT)) { +} +var res = size < SIZE ? 0 : (size - 1) >>> SHIFT << SHIFT; +sign = 1 - 2 * (b[3] >> 7); +exponent = (((b[3] << 1) & 0xff) | (b[2] >> 7)) - 127; +mantissa = ((b[2] & 0x7f) << 16) | (b[1] << 8) | b[0]; +" +`; diff --git a/tests/binary_math/jsfmt.spec.js b/tests/binary_math/jsfmt.spec.js new file mode 100644 index 00000000..c426c19c --- /dev/null +++ b/tests/binary_math/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, null, ["babylon", "typescript"]); diff --git a/tests/binary_math/parens.js b/tests/binary_math/parens.js new file mode 100644 index 00000000..8e0f73de --- /dev/null +++ b/tests/binary_math/parens.js @@ -0,0 +1,9 @@ +const result = (a + b) >>> 1; +var sizeIndex = ((index - 1) >>> level) & MASK; +var from = offset > left ? 0 : (left - offset) >> level; +var to = ((right - offset) >> level) + 1; +if (rawIndex < 1 << (list._level + SHIFT)) {} +var res = size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT); +sign = 1 - (2 * (b[3] >> 7)); +exponent = (((b[3] << 1) & 0xff) | (b[2] >> 7)) - 127; +mantissa = ((b[2] & 0x7f) << 16) | (b[1] << 8) | b[0];