Enable more ErrorProne checks.

Bug:
Change-Id: I1c16b0485a1549d251d9d900b7afca98a57fea15
diff --git a/build.gradle b/build.gradle
index e189e57..9299592 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,7 +22,16 @@
     '-Xep:MissingOverride:WARN',
     '-Xep:OvershadowingSubclassFields:WARN',
     '-Xep:IntLongMath:WARN',
-    '-Xep:EqualsHashCode:WARN']
+    '-Xep:EqualsHashCode:WARN',
+    '-Xep:ArrayHashCode:WARN',
+    '-Xep:EqualsIncompatibleType:WARN',
+    '-Xep:NonOverridingEquals:WARN',
+    '-Xep:FallThrough:WARN',
+    '-Xep:MissingCasesInEnumSwitch:WARN',
+    '-Xep:MissingDefault:WARN',
+    '-Xep:MultipleTopLevelClasses:WARN',
+    '-Xep:NarrowingCompoundAssignment:WARN',
+    '-Xep:BoxedPrimitiveConstructor:WARN']
 
 apply from: 'copyAdditionalJctfCommonFiles.gradle'
 
diff --git a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
index 93b1b24..356451a 100644
--- a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
+++ b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
@@ -75,6 +75,9 @@
         case "--nolocals":
           noLocals = true;
           break;
+        default:
+          System.err.println("Unsupported option: " + flag);
+          System.exit(1);
       }
     }
 
diff --git a/src/main/java/com/android/tools/r8/dex/Marker.java b/src/main/java/com/android/tools/r8/dex/Marker.java
index ef17aa7..463d484 100644
--- a/src/main/java/com/android/tools/r8/dex/Marker.java
+++ b/src/main/java/com/android/tools/r8/dex/Marker.java
@@ -53,7 +53,7 @@
 
   public Marker put(String key, int value) {
     // value is converted to Long ensuring equals works with the parsed json string.
-    return internalPut(key, new Long(value));
+    return internalPut(key, Long.valueOf(value));
   }
 
   public Marker put(String key, String value) {
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 4d97764..042232b 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
@@ -1219,6 +1219,8 @@
               throw new Unreachable("Unexpected type: " + move.outType());
           }
           break;
+        default:
+          throw new Unreachable("Unexpected size: " + size);
       }
       instruction.setOffset(getOffset());
       instructions.add(instruction);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
index 1862277..3cd2b57 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
@@ -2600,9 +2600,9 @@
         case Type.METHOD:
           return new DexValue.DexValueMethodType(
               application.getProto(((Type) value).getDescriptor()));
+        default:
+          throw new Unreachable("Type sort is not supported: " + type.getSort());
       }
-      throw new Unreachable("Type sort is not supported: " + type.getSort());
-
     } else if (value instanceof Handle) {
       return new DexValue.DexValueMethodHandle(getMethodHandle(application, (Handle) value));
     } else {
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 2d9154a..9a5baaf 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
@@ -360,8 +360,9 @@
       case '<':
       case '.':
         return true;
+      default:
+        return false;
     }
-    return false;
   }
 
   // PRE: symbol is the first char of the identifier.
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 40b7598..d24a357 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -683,6 +683,8 @@
               flags.setVolatile();
             }
             break;
+          default:
+            // Intentionally left empty.
         }
       }
     }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
index f3e6c6f..121641b 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
@@ -203,6 +203,7 @@
         if (method.isClassInitializer()) {
           break;
         }
+        // Fall through for all other methods.
       case ALL:
         // Access flags check.
         if (!method.accessFlags.containsAllOf(getAccessFlags()) ||
@@ -319,6 +320,7 @@
       case METHOD:
         result.append(getType());
         result.append(' ');
+        // Fall through for rest of method signature.
       case CONSTRUCTOR:
       case INIT: {
         result.append(getName());
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java b/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java
index e50a1e3..ef149f7 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java
@@ -48,12 +48,13 @@
         return MatchClassTypes.LEGACY_MATCH_CLASS_TYPES;
       case MATCH_BASIC_PATTERN:
         return MatchBasicTypes.MATCH_BASIC_TYPES;
+      default:
+        if (!pattern.contains("*") && !pattern.contains("%") && !pattern.contains("?")) {
+          return new MatchSpecificType(
+              dexItemFactory.createType(DescriptorUtils.javaTypeToDescriptor(pattern)));
+        }
+        return new MatchTypePattern(pattern, kind);
     }
-    if (!pattern.contains("*") && !pattern.contains("%") && !pattern.contains("?")) {
-      return new MatchSpecificType(
-          dexItemFactory.createType(DescriptorUtils.javaTypeToDescriptor(pattern)));
-    }
-    return new MatchTypePattern(pattern, kind);
   }
 
   public static ProguardTypeMatcher defaultAllMatcher() {