Assert that D8 never inserts zero-line numbers in CF output.

Bug: b/260389461
Change-Id: I43cc564afb87f3151c5a6319b2f414fa6e3f0ccc
diff --git a/src/main/java/com/android/tools/r8/graph/CfCode.java b/src/main/java/com/android/tools/r8/graph/CfCode.java
index cb150e6..5b71a42 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCode.java
@@ -400,18 +400,25 @@
 
   private static class PrunePreambleMethodVisitor extends MethodVisitor {
 
+    private final AppView<?> appView;
     private boolean inPreamble = true;
 
-    public PrunePreambleMethodVisitor(MethodVisitor methodVisitor) {
+    public PrunePreambleMethodVisitor(MethodVisitor methodVisitor, AppView<?> appView) {
       super(InternalOptions.ASM_VERSION, methodVisitor);
+      this.appView = appView;
     }
 
     @Override
     public void visitLineNumber(int line, Label start) {
-      if (!inPreamble || line != 0) {
-        inPreamble = false;
-        super.visitLineNumber(line, start);
+      if (line == 0) {
+        if (inPreamble) {
+          inPreamble = false;
+          return;
+        }
+        // We must be in R8 if inserting a zero-line entry outside the method preamble.
+        assert appView.enableWholeProgramOptimizations();
       }
+      super.visitLineNumber(line, start);
     }
   }
 
@@ -440,7 +447,8 @@
             || (appView.enableWholeProgramOptimizations()
                 && classFileVersion.isEqualTo(CfVersion.V1_6)
                 && !options.shouldKeepStackMapTable());
-    PrunePreambleMethodVisitor prunePreambleVisitor = new PrunePreambleMethodVisitor(visitor);
+    PrunePreambleMethodVisitor prunePreambleVisitor =
+        new PrunePreambleMethodVisitor(visitor, appView);
     for (CfInstruction instruction : instructions) {
       if (discardFrames && instruction instanceof CfFrame) {
         continue;