Remove NonNullParameterHintCollector.

We've no longer used non-null parameter hints from metadata since:
  https://r8-review.googlesource.com/c/r8/+/32444
That is, we already examine code and compute non-null-param-or-throw
(as well as non-null-param-on-normal-exit).

Bug: 138975804, 121377154
Change-Id: Ia22f41de74b789d54df265cad71ab95541c22acf
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 87c976d..be491f4 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -76,7 +76,6 @@
 import com.android.tools.r8.ir.optimize.string.StringOptimizer;
 import com.android.tools.r8.ir.regalloc.LinearScanRegisterAllocator;
 import com.android.tools.r8.ir.regalloc.RegisterAllocator;
-import com.android.tools.r8.kotlin.KotlinInfo;
 import com.android.tools.r8.logging.Log;
 import com.android.tools.r8.naming.IdentifierNameStringMarker;
 import com.android.tools.r8.origin.Origin;
@@ -1359,30 +1358,6 @@
       }
     }
     if (paramsCheckedForNull.length() > 0) {
-      // Check if collected information conforms to non-null parameter hints in Kotlin metadata.
-      // These hints are on the original holder. To find the original holder, we first find the
-      // original method signature (this could have changed as a result of, for example, class
-      // merging). Then, we find the type that now corresponds to the the original holder.
-      DexMethod originalSignature = appView.graphLense().getOriginalMethodSignature(method.method);
-      DexClass originalHolder =
-          appView.definitionFor(appView.graphLense().lookupType(originalSignature.holder));
-      if (originalHolder.hasKotlinInfo()) {
-        KotlinInfo kotlinInfo = originalHolder.getKotlinInfo();
-        if (kotlinInfo.hasNonNullParameterHints()) {
-          BitSet hintFromMetadata =
-              kotlinInfo.lookupNonNullParameterHint(
-                  originalSignature.name.toString(), originalSignature.proto.toDescriptorString());
-          if (hintFromMetadata != null && hintFromMetadata.length() > 0) {
-            if (!paramsCheckedForNull.equals(hintFromMetadata) && Log.ENABLED) {
-              Log.debug(getClass(), "Mismatching non-null param hints for %s: %s v.s. %s\n%s",
-                  paramsCheckedForNull.toString(),
-                  hintFromMetadata.toString(),
-                  method.toSourceString(),
-                  logCode(options, method));
-            }
-          }
-        }
-      }
       feedback.setNonNullParamOrThrow(method, paramsCheckedForNull);
     }
   }
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClass.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClass.java
index 4f79660..e25e05d 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClass.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClass.java
@@ -4,8 +4,6 @@
 
 package com.android.tools.r8.kotlin;
 
-import static kotlinx.metadata.Flag.Property.IS_VAR;
-
 import com.android.tools.r8.graph.DexClass;
 import kotlinx.metadata.KmClassVisitor;
 import kotlinx.metadata.KmConstructorVisitor;
@@ -29,26 +27,24 @@
   @Override
   void processMetadata(KotlinClassMetadata.Class metadata) {
     // To avoid lazy parsing/verifying metadata.
+    // TODO(jsjeon): once migration is complete, use #toKmClass and store a mutable model.
     metadata.accept(new ClassVisitorForNonNullParameterHints());
   }
 
-  private class ClassVisitorForNonNullParameterHints extends KmClassVisitor {
+  private static class ClassVisitorForNonNullParameterHints extends KmClassVisitor {
     @Override
     public KmFunctionVisitor visitFunction(int functionFlags, String functionName) {
-      return new NonNullParameterHintCollector.FunctionVisitor(nonNullparamHints);
+      return null;
     }
 
     @Override
     public KmConstructorVisitor visitConstructor(int ctorFlags) {
-      return new NonNullParameterHintCollector.ConstructorVisitor(nonNullparamHints, clazz);
+      return null;
     }
 
     @Override
     public KmPropertyVisitor visitProperty(
         int propertyFlags, String name, int getterFlags, int setterFlags) {
-      if (IS_VAR.invoke(propertyFlags)) {
-        return new NonNullParameterHintCollector.PropertyVisitor(nonNullparamHints);
-      }
       return null;
     }
   }
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassPart.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassPart.java
index 225e63a..633788f 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassPart.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassPart.java
@@ -4,8 +4,6 @@
 
 package com.android.tools.r8.kotlin;
 
-import static kotlinx.metadata.Flag.Property.IS_VAR;
-
 import kotlinx.metadata.KmFunctionVisitor;
 import kotlinx.metadata.KmPackageVisitor;
 import kotlinx.metadata.KmPropertyVisitor;
@@ -27,21 +25,19 @@
   @Override
   void processMetadata(KotlinClassMetadata.MultiFileClassPart metadata) {
     // To avoid lazy parsing/verifying metadata.
+    // TODO(jsjeon): once migration is complete, use #toKmPackage and store a mutable model.
     metadata.accept(new PackageVisitorForNonNullParameterHints());
   }
 
-  private class PackageVisitorForNonNullParameterHints extends KmPackageVisitor {
+  private static class PackageVisitorForNonNullParameterHints extends KmPackageVisitor {
     @Override
     public KmFunctionVisitor visitFunction(int functionFlags, String functionName) {
-      return new NonNullParameterHintCollector.FunctionVisitor(nonNullparamHints);
+      return null;
     }
 
     @Override
     public KmPropertyVisitor visitProperty(
         int propertyFlags, String name, int getterFlags, int setterFlags) {
-      if (IS_VAR.invoke(propertyFlags)) {
-        return new NonNullParameterHintCollector.PropertyVisitor(nonNullparamHints);
-      }
       return null;
     }
   }
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFile.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFile.java
index 2f9477e..2b4c326 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFile.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFile.java
@@ -4,8 +4,6 @@
 
 package com.android.tools.r8.kotlin;
 
-import static kotlinx.metadata.Flag.Property.IS_VAR;
-
 import kotlinx.metadata.KmFunctionVisitor;
 import kotlinx.metadata.KmPackageVisitor;
 import kotlinx.metadata.KmPropertyVisitor;
@@ -27,21 +25,19 @@
   @Override
   void processMetadata(KotlinClassMetadata.FileFacade metadata) {
     // To avoid lazy parsing/verifying metadata.
+    // TODO(jsjeon): once migration is complete, use #toKmPackage and store a mutable model.
     metadata.accept(new PackageVisitorForNonNullParameterHints());
   }
 
-  private class PackageVisitorForNonNullParameterHints extends KmPackageVisitor {
+  private static class PackageVisitorForNonNullParameterHints extends KmPackageVisitor {
     @Override
     public KmFunctionVisitor visitFunction(int functionFlags, String functionName) {
-      return new NonNullParameterHintCollector.FunctionVisitor(nonNullparamHints);
+      return null;
     }
 
     @Override
     public KmPropertyVisitor visitProperty(
         int propertyFlags, String name, int getterFlags, int setterFlags) {
-      if (IS_VAR.invoke(propertyFlags)) {
-        return new NonNullParameterHintCollector.PropertyVisitor(nonNullparamHints);
-      }
       return null;
     }
   }
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinInfo.java
index ef90173..9d7be0e 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinInfo.java
@@ -5,18 +5,12 @@
 package com.android.tools.r8.kotlin;
 
 import com.android.tools.r8.graph.DexClass;
-import com.google.common.collect.HashBasedTable;
-import java.util.BitSet;
 import kotlinx.metadata.jvm.KotlinClassMetadata;
 
 // Provides access to kotlin information.
 public abstract class KotlinInfo<MetadataKind extends KotlinClassMetadata> {
   MetadataKind metadata;
   DexClass clazz;
-  final HashBasedTable<String, String, BitSet> nonNullparamHints = HashBasedTable.create();
-
-  KotlinInfo() {
-  }
 
   KotlinInfo(MetadataKind metadata) {
     this(metadata, null);
@@ -76,12 +70,4 @@
   public KotlinClassFacade asClassFacade() {
     return null;
   }
-
-  public boolean hasNonNullParameterHints() {
-    return !nonNullparamHints.isEmpty();
-  }
-
-  public BitSet lookupNonNullParameterHint(String name, String descriptor) {
-    return nonNullparamHints.get(name, descriptor);
-  }
 }
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClass.java b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClass.java
index fc11f8c..12823c5 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClass.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClass.java
@@ -41,14 +41,15 @@
   void processMetadata(KotlinClassMetadata.SyntheticClass metadata) {
     if (metadata.isLambda()) {
       // To avoid lazy parsing/verifying metadata.
+      // TODO(jsjeon): once migration is complete, use #toKmLambda and store a mutable model.
       metadata.accept(new LambdaVisitorForNonNullParameterHints());
     }
   }
 
-  private class LambdaVisitorForNonNullParameterHints extends KmLambdaVisitor {
+  private static class LambdaVisitorForNonNullParameterHints extends KmLambdaVisitor {
     @Override
     public KmFunctionVisitor visitFunction(int functionFlags, String functionName) {
-      return new NonNullParameterHintCollector.FunctionVisitor(nonNullparamHints);
+      return null;
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/NonNullParameterHintCollector.java b/src/main/java/com/android/tools/r8/kotlin/NonNullParameterHintCollector.java
deleted file mode 100644
index 0fee156..0000000
--- a/src/main/java/com/android/tools/r8/kotlin/NonNullParameterHintCollector.java
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.kotlin;
-
-import static kotlinx.metadata.Flag.Type.IS_NULLABLE;
-
-import com.android.tools.r8.graph.DexClass;
-import com.google.common.collect.HashBasedTable;
-import java.util.BitSet;
-import kotlinx.metadata.KmConstructorExtensionVisitor;
-import kotlinx.metadata.KmConstructorVisitor;
-import kotlinx.metadata.KmExtensionType;
-import kotlinx.metadata.KmFunctionExtensionVisitor;
-import kotlinx.metadata.KmFunctionVisitor;
-import kotlinx.metadata.KmPropertyExtensionVisitor;
-import kotlinx.metadata.KmPropertyVisitor;
-import kotlinx.metadata.KmTypeVisitor;
-import kotlinx.metadata.KmValueParameterVisitor;
-import kotlinx.metadata.jvm.JvmConstructorExtensionVisitor;
-import kotlinx.metadata.jvm.JvmFieldSignature;
-import kotlinx.metadata.jvm.JvmFunctionExtensionVisitor;
-import kotlinx.metadata.jvm.JvmMethodSignature;
-import kotlinx.metadata.jvm.JvmPropertyExtensionVisitor;
-
-class NonNullParameterHintCollector {
-
-  static class FunctionVisitor extends KmFunctionVisitor {
-
-    private final HashBasedTable<String, String, BitSet> paramHints;
-
-    private BitSet paramHint = new BitSet();
-    private int paramIndex = 0;
-    private String name = "";
-    private String descriptor = "";
-
-    FunctionVisitor(HashBasedTable<String, String, BitSet> paramHints) {
-      this.paramHints = paramHints;
-    }
-
-    @Override
-    public KmTypeVisitor visitReceiverParameterType(int typeFlags) {
-      if (!IS_NULLABLE.invoke(typeFlags)) {
-        paramHint.set(paramIndex);
-      }
-      paramIndex++;
-      return null;
-    }
-
-    @Override
-    public KmValueParameterVisitor visitValueParameter(int paramFlags, String paramName) {
-      return new KmValueParameterVisitor() {
-        @Override
-        public KmTypeVisitor visitType(int typeFlags) {
-          if (!IS_NULLABLE.invoke(typeFlags)) {
-            paramHint.set(paramIndex);
-          }
-          paramIndex++;
-          return null;
-        }
-      };
-    }
-
-    @Override
-    public KmFunctionExtensionVisitor visitExtensions(KmExtensionType type) {
-      if (type != JvmFunctionExtensionVisitor.TYPE) {
-        return null;
-      }
-      return new JvmFunctionExtensionVisitor() {
-        @Override
-        public void visit(JvmMethodSignature desc) {
-          if (desc != null) {
-            name = desc.getName();
-            descriptor = desc.getDesc();
-          }
-        }
-      };
-    }
-
-    @Override
-    public void visitEnd() {
-      if (name.isEmpty() || descriptor.isEmpty()) {
-        return;
-      }
-      paramHints.put(name, descriptor, paramHint);
-    }
-  }
-
-  static class ConstructorVisitor extends KmConstructorVisitor {
-    private final HashBasedTable<String, String, BitSet> paramHints;
-
-    private BitSet paramHint = new BitSet();
-    private int paramIndex = 0;
-    private final String name = "<init>";
-    private String descriptor = "";
-
-    ConstructorVisitor(HashBasedTable<String, String, BitSet> paramHints, DexClass clazz) {
-      this.paramHints = paramHints;
-      // Enum constructor has two synthetic arguments to java.lang.Enum's sole constructor:
-      // https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#Enum-java.lang.String-int-
-      // whereas Kotlin @Metadata is still based on constructor signature, not descriptor.
-      if (clazz != null && clazz.isEnum()) {
-        // name - The name of this enum constant, which is the identifier used to declare it.
-        paramIndex++;
-        // ordinal - The ordinal of this enumeration constant (its position in the enum declaration,
-        // where the initial constant is assigned an ordinal of zero).
-        paramIndex++;
-      }
-    }
-
-    @Override
-    public KmValueParameterVisitor visitValueParameter(int paramFlags, String paramName) {
-      return new KmValueParameterVisitor() {
-        @Override
-        public KmTypeVisitor visitType(int typeFlags) {
-          if (!IS_NULLABLE.invoke(typeFlags)) {
-            paramHint.set(paramIndex);
-          }
-          paramIndex++;
-          return null;
-        }
-      };
-    }
-
-    @Override
-    public KmConstructorExtensionVisitor visitExtensions(KmExtensionType type) {
-      if (type != JvmConstructorExtensionVisitor.TYPE) {
-        return null;
-      }
-      return new JvmConstructorExtensionVisitor() {
-        @Override
-        public void visit(JvmMethodSignature desc) {
-          descriptor = desc.getDesc();
-        }
-      };
-    }
-
-    @Override
-    public void visitEnd() {
-      if (descriptor.isEmpty()) {
-        return;
-      }
-      paramHints.put(name, descriptor, paramHint);
-    }
-  }
-
-  static class PropertyVisitor extends KmPropertyVisitor {
-    private final HashBasedTable<String, String, BitSet> paramHints;
-
-    private BitSet paramHint = new BitSet();
-    private int paramIndex = 0;
-    private String name = "";
-    private String descriptor = "";
-
-    PropertyVisitor(HashBasedTable<String, String, BitSet> paramHints) {
-      this.paramHints = paramHints;
-    }
-
-    @Override
-    public KmTypeVisitor visitReturnType(int typeFlags) {
-      if (!IS_NULLABLE.invoke(typeFlags)) {
-        paramHint.set(paramIndex);
-      }
-      paramIndex++;
-      return null;
-    }
-
-    @Override
-    public KmPropertyExtensionVisitor visitExtensions(KmExtensionType type) {
-      if (type != JvmPropertyExtensionVisitor.TYPE) {
-        return null;
-      }
-      return new JvmPropertyExtensionVisitor() {
-        @Override
-        public void visit(
-            JvmFieldSignature fieldDesc,
-            JvmMethodSignature getterDesc,
-            JvmMethodSignature setterDesc) {
-          if (setterDesc != null) {
-            name = setterDesc.getName();
-            descriptor = setterDesc.getDesc();
-          }
-        }
-      };
-    }
-
-    @Override
-    public void visitEnd() {
-      if (name.isEmpty() || descriptor.isEmpty()) {
-        return;
-      }
-      paramHints.put(name, descriptor, paramHint);
-    }
-  }
-}
\ No newline at end of file