Merge "Fix some raw types"
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 9e76f31..ef17aa7 100644
--- a/src/main/java/com/android/tools/r8/dex/Marker.java
+++ b/src/main/java/com/android/tools/r8/dex/Marker.java
@@ -34,7 +34,7 @@
     content = new TreeMap<>();
     // This loop is necessary to make the type checker to shut up.
     for (Object e : object.entrySet()) {
-      Map.Entry entry = (Map.Entry) e;
+      Map.Entry<?,?> entry = (Map.Entry<?,?>) e;
       content.put(String.valueOf(entry.getKey()), entry.getValue());
     }
   }
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfo.java b/src/main/java/com/android/tools/r8/graph/AppInfo.java
index 820e49d..9ec288c 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfo.java
@@ -18,7 +18,7 @@
 
   public final DexApplication app;
   public final DexItemFactory dexItemFactory;
-  private final ConcurrentHashMap<DexType, Map<Descriptor, KeyedDexItem>> definitions =
+  private final ConcurrentHashMap<DexType, Map<Descriptor<?,?>, KeyedDexItem<?>>> definitions =
       new ConcurrentHashMap<>();
 
   public AppInfo(DexApplication application) {
@@ -40,8 +40,8 @@
     this(application);
   }
 
-  private Map<Descriptor, KeyedDexItem> computeDefinitions(DexType type) {
-    Builder<Descriptor, KeyedDexItem> builder = ImmutableMap.builder();
+  private Map<Descriptor<?,?>, KeyedDexItem<?>> computeDefinitions(DexType type) {
+    Builder<Descriptor<?,?>, KeyedDexItem<?>> builder = ImmutableMap.builder();
     DexClass clazz = app.definitionFor(type);
     if (clazz != null) {
       clazz.forEachMethod(method -> builder.put(method.getKey(), method));
@@ -66,14 +66,14 @@
     return (DexEncodedField) getDefinitions(field.getHolder()).get(field);
   }
 
-  private Map<Descriptor, KeyedDexItem> getDefinitions(DexType type) {
-    Map<Descriptor, KeyedDexItem> typeDefinitions = definitions.get(type);
+  private Map<Descriptor<?,?>, KeyedDexItem<?>> getDefinitions(DexType type) {
+    Map<Descriptor<?,?>, KeyedDexItem<?>> typeDefinitions = definitions.get(type);
     if (typeDefinitions != null) {
       return typeDefinitions;
     }
 
     typeDefinitions = computeDefinitions(type);
-    Map<Descriptor, KeyedDexItem> existing = definitions.putIfAbsent(type, typeDefinitions);
+    Map<Descriptor<?,?>, KeyedDexItem<?>> existing = definitions.putIfAbsent(type, typeDefinitions);
     return existing != null ? existing : typeDefinitions;
   }
 
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java b/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
index a98ec9e..093442b 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
@@ -188,7 +188,7 @@
     return result;
   }
 
-  private boolean holderIsAbstract(Descriptor desc) {
+  private boolean holderIsAbstract(Descriptor<?,?> desc) {
     DexClass holder = definitionFor(desc.getHolder());
     return holder.accessFlags.isAbstract();
   }
diff --git a/src/main/java/com/android/tools/r8/graph/Descriptor.java b/src/main/java/com/android/tools/r8/graph/Descriptor.java
index 9065839..c49dabd 100644
--- a/src/main/java/com/android/tools/r8/graph/Descriptor.java
+++ b/src/main/java/com/android/tools/r8/graph/Descriptor.java
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.graph;
 
-public abstract class Descriptor<T extends DexItem, S extends Descriptor>
+public abstract class Descriptor<T extends DexItem, S extends Descriptor<T,S>>
     extends IndexedDexItem implements PresortedComparable<S> {
 
   public abstract boolean match(T entry);
diff --git a/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java b/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java
index 7defdaa..6f959c7 100644
--- a/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java
+++ b/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java
@@ -6,7 +6,7 @@
 import com.android.tools.r8.dex.IndexedItemCollection;
 import com.android.tools.r8.dex.MixedSectionCollection;
 
-public class DexMemberAnnotation<T extends Descriptor, S extends DexItem> extends DexItem {
+public class DexMemberAnnotation<T extends Descriptor<?,?>, S extends DexItem> extends DexItem {
 
   public final T item;
   public final S annotations;
diff --git a/src/main/java/com/android/tools/r8/logging/Log.java b/src/main/java/com/android/tools/r8/logging/Log.java
index 8869bf0..6cb91b4 100644
--- a/src/main/java/com/android/tools/r8/logging/Log.java
+++ b/src/main/java/com/android/tools/r8/logging/Log.java
@@ -12,35 +12,35 @@
   static private final boolean DEBUG_ENABLED = true;
   static private final boolean WARN_ENABLED = true;
 
-  public static void verbose(Class from, String message, Object... arguments) {
+  public static void verbose(Class<?> from, String message, Object... arguments) {
     if (ENABLED && VERBOSE_ENABLED && isClassEnabled(from)) {
       log("VERB", from, message, arguments);
     }
   }
 
-  public static void info(Class from, String message, Object... arguments) {
+  public static void info(Class<?> from, String message, Object... arguments) {
     if (ENABLED && INFO_ENABLED && isClassEnabled(from)) {
       log("INFO", from, message, arguments);
     }
   }
 
-  public static void debug(Class from, String message, Object... arguments) {
+  public static void debug(Class<?> from, String message, Object... arguments) {
     if (ENABLED && DEBUG_ENABLED && isClassEnabled(from)) {
       log("DBG", from, message, arguments);
     }
   }
 
-  public static void warn(Class from, String message, Object... arguments) {
+  public static void warn(Class<?> from, String message, Object... arguments) {
     if (ENABLED && WARN_ENABLED && isClassEnabled(from)) {
       log("WARN", from, message, arguments);
     }
   }
 
-  private static boolean isClassEnabled(Class clazz) {
+  private static boolean isClassEnabled(Class<?> clazz) {
     return true;
   }
 
-  synchronized private static void log(String kind, Class from, String message, Object... args) {
+  synchronized private static void log(String kind, Class<?> from, String message, Object... args) {
     if (args.length > 0) {
       message = String.format(message, args);
     }
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index ed4d34d..39aadcb 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -85,7 +85,7 @@
   private Map<DexType, Set<DexField>> staticFieldsWritten = Maps.newIdentityHashMap();
 
   private final List<SemanticsProvider> extensions = new ArrayList<>();
-  private final Map<Class, Object> extensionsState = new HashMap<>();
+  private final Map<Class<?>, Object> extensionsState = new HashMap<>();
 
   /**
    * This map keeps a view of all virtual methods that are reachable from virtual invokes. A method
@@ -921,22 +921,22 @@
 
   SortedSet<DexField> collectInstanceFieldsRead() {
     return ImmutableSortedSet.copyOf(
-        PresortedComparable::slowCompareTo, collectFields(instanceFieldsRead));
+        PresortedComparable<DexField>::slowCompareTo, collectFields(instanceFieldsRead));
   }
 
   SortedSet<DexField> collectInstanceFieldsWritten() {
     return ImmutableSortedSet.copyOf(
-        PresortedComparable::slowCompareTo, collectFields(instanceFieldsWritten));
+        PresortedComparable<DexField>::slowCompareTo, collectFields(instanceFieldsWritten));
   }
 
   SortedSet<DexField> collectStaticFieldsRead() {
     return ImmutableSortedSet.copyOf(
-        PresortedComparable::slowCompareTo, collectFields(staticFieldsRead));
+        PresortedComparable<DexField>::slowCompareTo, collectFields(staticFieldsRead));
   }
 
   SortedSet<DexField> collectStaticFieldsWritten() {
     return ImmutableSortedSet.copyOf(
-        PresortedComparable::slowCompareTo, collectFields(staticFieldsWritten));
+        PresortedComparable<DexField>::slowCompareTo, collectFields(staticFieldsWritten));
   }
 
   private Set<DexField> collectReachedFields(Map<DexType, Set<DexField>> map,
@@ -956,13 +956,13 @@
   }
 
   SortedSet<DexField> collectFieldsRead() {
-    return ImmutableSortedSet.copyOf(PresortedComparable::slowCompareTo,
+    return ImmutableSortedSet.copyOf(PresortedComparable<DexField>::slowCompareTo,
         Sets.union(collectReachedFields(instanceFieldsRead, this::tryLookupInstanceField),
             collectReachedFields(staticFieldsRead, this::tryLookupStaticField)));
   }
 
   SortedSet<DexField> collectFieldsWritten() {
-    return ImmutableSortedSet.copyOf(PresortedComparable::slowCompareTo,
+    return ImmutableSortedSet.copyOf(PresortedComparable<DexField>::slowCompareTo,
         Sets.union(collectReachedFields(instanceFieldsWritten, this::tryLookupInstanceField),
             collectReachedFields(staticFieldsWritten, this::tryLookupStaticField)));
   }
@@ -1129,7 +1129,7 @@
     /**
      * Map from the class of an extension to the state it produced.
      */
-    final Map<Class, Object> extensions;
+    final Map<Class<?>, Object> extensions;
     /**
      * A set of types that have been removed by the {@link TreePruner}.
      */
@@ -1137,10 +1137,10 @@
 
     private AppInfoWithLiveness(AppInfoWithSubtyping appInfo, Enqueuer enqueuer) {
       super(appInfo);
-      this.liveTypes =
-          ImmutableSortedSet.copyOf(PresortedComparable::slowCompareTo, enqueuer.liveTypes);
+      this.liveTypes = ImmutableSortedSet.copyOf(
+          PresortedComparable<DexType>::slowCompareTo, enqueuer.liveTypes);
       this.instantiatedTypes = ImmutableSortedSet.copyOf(
-          PresortedComparable::slowCompareTo, enqueuer.instantiatedTypes.getItems());
+          PresortedComparable<DexType>::slowCompareTo, enqueuer.instantiatedTypes.getItems());
       this.targetedMethods = toSortedDescriptorSet(enqueuer.targetedMethods.getItems());
       this.liveMethods = toSortedDescriptorSet(enqueuer.liveMethods.getItems());
       this.liveFields = toSortedDescriptorSet(enqueuer.liveFields.getItems());
@@ -1275,7 +1275,7 @@
     private <T extends PresortedComparable<T>> SortedSet<T> toSortedDescriptorSet(
         Set<? extends KeyedDexItem<T>> set) {
       ImmutableSortedSet.Builder<T> builder =
-          new ImmutableSortedSet.Builder<>(PresortedComparable::slowCompareTo);
+          new ImmutableSortedSet.Builder<>(PresortedComparable<T>::slowCompareTo);
       for (KeyedDexItem<T> item : set) {
         builder.add(item.getKey());
       }
@@ -1335,7 +1335,7 @@
     }
 
     @SuppressWarnings("unchecked")
-    public <T> T getExtension(Class extension, T defaultValue) {
+    public <T> T getExtension(Class<?> extension, T defaultValue) {
       if (extensions.containsKey(extension)) {
         return (T) extensions.get(extension);
       } else {
@@ -1343,7 +1343,7 @@
       }
     }
 
-    public <T> void setExtension(Class extension, T value) {
+    public <T> void setExtension(Class<?> extension, T value) {
       assert !extensions.containsKey(extension);
       extensions.put(extension, value);
     }