Add utility to DexDefinitionSupplier for finding program classes

Bug: 140121897
Change-Id: Ib51ebb389895c429b32f62b91e2e4adc8b6fffb0
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 3514da5..2e352a2 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfo.java
@@ -130,6 +130,11 @@
     return app.definitionFor(type);
   }
 
+  @Override
+  public DexProgramClass definitionForProgramType(DexType type) {
+    return app.programDefinitionFor(type);
+  }
+
   public Origin originFor(DexType type) {
     assert checkIfObsolete();
     DexClass definition = app.definitionFor(type);
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index 7ba24cf..623da28 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -124,6 +124,11 @@
     return appInfo().definitionFor(type);
   }
 
+  @Override
+  public final DexProgramClass definitionForProgramType(DexType type) {
+    return appInfo.app().programDefinitionFor(type);
+  }
+
   public OptionalBool isInterface(DexType type) {
     // Without whole program information we should not assume anything about any other class than
     // the current holder in a given context.
diff --git a/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java b/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
index 7d9888e..b616649 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
@@ -14,5 +14,7 @@
 
   DexClass definitionFor(DexType type);
 
+  DexProgramClass definitionForProgramType(DexType type);
+
   DexItemFactory dexItemFactory();
 }