Use that no lambda classes are synthesized during wave processing in R8

Bug: 142233246
Change-Id: Ifb605376adab2c5018c0d32b5ee6011ec6828a36
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
index 9cc26c4..dfb1787 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
@@ -156,8 +156,12 @@
             continue;
           }
 
-          // We have a descriptor, get or create lambda class.
-          LambdaClass lambdaClass = getOrCreateLambdaClass(descriptor, currentType);
+          // We have a descriptor, get the lambda class. In D8, we synthesize the lambda classes
+          // during IR processing, and therefore we may need to create it now.
+          LambdaClass lambdaClass =
+              appView.enableWholeProgramOptimizations()
+                  ? getKnownLambdaClass(descriptor, currentType)
+                  : getOrCreateLambdaClass(descriptor, currentType);
           assert lambdaClass != null;
 
           // We rely on patch performing its work in a way which
@@ -325,6 +329,11 @@
     return lambdaClass;
   }
 
+  private LambdaClass getKnownLambdaClass(LambdaDescriptor descriptor, DexType accessedFrom) {
+    DexType lambdaClassType = LambdaClass.createLambdaClassType(this, accessedFrom, descriptor);
+    return getKnown(knownLambdaClasses, lambdaClassType);
+  }
+
   private void addRewritingPrefix(DexType type, DexType rewritten, DexType lambdaClassType) {
     String javaName = lambdaClassType.toString();
     String typeString = type.toString();