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;
}