Enable operator precedence rule of error prone

- Explicit operator precedence to avoid misunderstanding seems to
be a good approach. It is already done in most of the cases.

Change-Id: Ide93cfc8d45e105265c1add1da1fbe69f2c79128
diff --git a/build.gradle b/build.gradle
index 2899f58..bef3010 100644
--- a/build.gradle
+++ b/build.gradle
@@ -13,6 +13,7 @@
     tasks.withType(JavaCompile) {
         options.compilerArgs += [
                 '-XepDisableAllChecks',
+                '-Xep:OperatorPrecedence:ERROR',
                 '-Xep:RemoveUnusedImports:ERROR']
     }
 }
diff --git a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java b/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java
index 885a8af..a61ad5d 100644
--- a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java
+++ b/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java
@@ -89,7 +89,7 @@
       // For element width 1 split the 16-bit data units into bytes.
       for (int i = 0; i < data.length; i++) {
         for (int j = 0; j < 2; j++) {
-          int value = (data[i] >> j * 8) & 0xff;
+          int value = (data[i] >> (j * 8)) & 0xff;
           if (i * 2 + j < size) {
             builder.append("      ");
             builder.append(StringUtils.hexString(value, 2));
diff --git a/src/main/java/com/android/tools/r8/code/Instruction.java b/src/main/java/com/android/tools/r8/code/Instruction.java
index 504b605..a91d8f2 100644
--- a/src/main/java/com/android/tools/r8/code/Instruction.java
+++ b/src/main/java/com/android/tools/r8/code/Instruction.java
@@ -78,7 +78,7 @@
   }
 
   protected static int makeByte(int high, int low) {
-    return ((high & 0xf) << 4) | low & 0xf;
+    return ((high & 0xf) << 4) | (low & 0xf);
   }
 
   protected void writeFirst(int aa, ShortBuffer dest) {
diff --git a/src/main/java/com/android/tools/r8/graph/DexString.java b/src/main/java/com/android/tools/r8/graph/DexString.java
index 75a6d35..e0d336b 100644
--- a/src/main/java/com/android/tools/r8/graph/DexString.java
+++ b/src/main/java/com/android/tools/r8/graph/DexString.java
@@ -161,8 +161,8 @@
         }
         // If either of the strings have the null character starting here, the null character
         // sort lowest.
-        if (b1 == 0xc0 && (content[index + 1] & 0xff) == 0x80 ||
-            b2 == 0xc0 && (other.content[index + 1] & 0xff) == 0x80) {
+        if ((b1 == 0xc0 && (content[index + 1] & 0xff) == 0x80) ||
+            (b2 == 0xc0 && (other.content[index + 1] & 0xff) == 0x80)) {
           return b1 == 0xc0 && (content[index + 1] & 0xff) == 0x80 ? -1 : 1;
         }
         return diff;
diff --git a/src/main/java/com/android/tools/r8/graph/DexType.java b/src/main/java/com/android/tools/r8/graph/DexType.java
index 0d81ea4..244e8ad 100644
--- a/src/main/java/com/android/tools/r8/graph/DexType.java
+++ b/src/main/java/com/android/tools/r8/graph/DexType.java
@@ -397,7 +397,7 @@
         assert next.hierarchyLevel == ROOT_LEVEL;
       } else {
         assert superType.hierarchyLevel == next.hierarchyLevel - 1
-            || superType.hierarchyLevel == ROOT_LEVEL && next.hierarchyLevel == INTERFACE_LEVEL;
+            || (superType.hierarchyLevel == ROOT_LEVEL && next.hierarchyLevel == INTERFACE_LEVEL);
         assert superType.directSubtypes.contains(next);
       }
       if (next.hierarchyLevel != INTERFACE_LEVEL) {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 7a8895d..f6a860d 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -457,7 +457,7 @@
     return instruction.isArgument()
         || instruction.isDebugLocalsChange()
         || (instruction.isConstNumber() && !instruction.outValue().needsRegister())
-        || instruction.isGoto() && instruction.asGoto().getTarget() == nextBlock;
+        || (instruction.isGoto() && instruction.asGoto().getTarget() == nextBlock);
   }
 
   public void addDebugPosition(DebugPosition position) {
diff --git a/src/main/java/com/android/tools/r8/naming/Minifier.java b/src/main/java/com/android/tools/r8/naming/Minifier.java
index 6a58866..fa85364 100644
--- a/src/main/java/com/android/tools/r8/naming/Minifier.java
+++ b/src/main/java/com/android/tools/r8/naming/Minifier.java
@@ -115,13 +115,13 @@
           directTarget != null ? appInfo.definitionFor(directTarget.method.getHolder()) : null;
       DexClass virtualTargetHolder =
           virtualTarget != null ? appInfo.definitionFor(virtualTarget.method.getHolder()) : null;
-      return directTarget == null && staticTarget == null && virtualTarget == null
-          || virtualTarget != null && virtualTarget.method == item
-          || directTarget != null && directTarget.method == item
-          || staticTarget != null && staticTarget.method == item
-          || directTargetHolder != null && directTargetHolder.isLibraryClass()
-          || virtualTargetHolder != null && virtualTargetHolder.isLibraryClass()
-          || staticTargetHolder != null && staticTargetHolder.isLibraryClass();
+      return (directTarget == null && staticTarget == null && virtualTarget == null)
+          || (virtualTarget != null && virtualTarget.method == item)
+          || (directTarget != null && directTarget.method == item)
+          || (staticTarget != null && staticTarget.method == item)
+          || (directTargetHolder != null && directTargetHolder.isLibraryClass())
+          || (virtualTargetHolder != null && virtualTargetHolder.isLibraryClass())
+          || (staticTargetHolder != null && staticTargetHolder.isLibraryClass());
     }
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
index c5d78f3..2d9154a 100644
--- a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
+++ b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
@@ -377,7 +377,7 @@
         assert bufferLocal != null;
         do {
           char ch = bufferLocal[pos];
-          if ((ch >= 'a') && (ch <= 'z') || (ch >= 'A') && (ch <= 'Z')
+          if (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))
               || !isStopSymbol(ch)) {
             identBuf.append(bufferLocal[pos]);
             pos++;
diff --git a/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java b/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
index f538125..a08f521 100644
--- a/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
+++ b/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
@@ -94,7 +94,7 @@
       // Do not forward calls from a bridge method to itself while the bridge method is still
       // a bridge.
       if (target == null ||
-          context.accessFlags.isBridge() && target == context.method) {
+          (context.accessFlags.isBridge() && target == context.method)) {
         return previous;
       } else {
         return target;
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index cd56ef5..50dae72 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -1006,7 +1006,7 @@
       while (!eof(end)) {
         char current = contents.charAt(end);
         if ((start == end && Character.isJavaIdentifierStart(current)) ||
-            (start < end) && (Character.isJavaIdentifierPart(current) || current == '.')) {
+            ((start < end) && (Character.isJavaIdentifierPart(current) || current == '.'))) {
           end++;
         } else {
           break;
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
index bd72a80..aa9c360 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -96,7 +96,7 @@
         return false;
       }
       // TODO(herhut): Maybe it would be better to do this breadth first.
-      if (className.matches(iface) && containsAnnotation(annotation, ifaceClass.annotations)
+      if ((className.matches(iface) && containsAnnotation(annotation, ifaceClass.annotations))
           || anyImplementedInterfaceMatches(ifaceClass, className, annotation)) {
         return true;
       }