Revert "Determine addition of ACC_SUPER at write time."

This reverts commit 2ae1dfef226c48077dbded8ab7baa65733563ad7.

Reason for revert: Breaks CovariantReturnTypeTest (and maybe others)

Change-Id: Ibeb927ad3fb4d64df76c99fac8b0541621ab763f
diff --git a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
index 36f43ba..4dcc108 100644
--- a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
+++ b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
@@ -64,7 +64,8 @@
   }
 
   public static ClassAccessFlags fromDexAccessFlags(int access) {
-    return new ClassAccessFlags(access & DEX_FLAGS);
+    // Assume that the SUPER flag should be set (behaviour for Java versions > 1.1).
+    return new ClassAccessFlags((access & DEX_FLAGS) | Constants.ACC_SUPER);
   }
 
   public static ClassAccessFlags fromCfAccessFlags(int access) {
@@ -83,10 +84,6 @@
 
   @Override
   public int getAsCfAccessFlags() {
-    assert !isInterface() || isAbstract();
-    assert !isInterface() || !isSuper();
-    assert !isInterface() || !isFinal();
-    assert !isInterface() || !isEnum();
     return materialize();
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroupIdFactory.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroupIdFactory.java
index 349f3d7..e9ab954 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroupIdFactory.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroupIdFactory.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8.ir.optimize.lambda.kotlin;
 
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.ClassAccessFlags;
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexType;
@@ -28,9 +27,8 @@
     assert lambda.getKotlinInfo().isSyntheticClass();
     assert lambda.getKotlinInfo().asSyntheticClass().isJavaStyleLambda();
 
-    ClassAccessFlags copy = lambda.accessFlags.copy();
-    copy.unsetSuper();
-    checkAccessFlags("class access flags", copy, PUBLIC_LAMBDA_CLASS_FLAGS, LAMBDA_CLASS_FLAGS);
+    checkAccessFlags("class access flags", lambda.accessFlags,
+        PUBLIC_LAMBDA_CLASS_FLAGS, LAMBDA_CLASS_FLAGS);
 
     // Class and interface.
     validateSuperclass(kotlin, lambda);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroupIdFactory.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroupIdFactory.java
index 6f7650b..495ab0b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroupIdFactory.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroupIdFactory.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8.ir.optimize.lambda.kotlin;
 
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.ClassAccessFlags;
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexType;
@@ -28,10 +27,8 @@
     assert lambda.getKotlinInfo().isSyntheticClass();
     assert lambda.getKotlinInfo().asSyntheticClass().isKotlinStyleLambda();
 
-    // Ignore ACC_SUPER.
-    ClassAccessFlags copy = lambda.accessFlags.copy();
-    copy.unsetSuper();
-    checkAccessFlags("class access flags", copy, PUBLIC_LAMBDA_CLASS_FLAGS, LAMBDA_CLASS_FLAGS);
+    checkAccessFlags("class access flags", lambda.accessFlags,
+        PUBLIC_LAMBDA_CLASS_FLAGS, LAMBDA_CLASS_FLAGS);
 
     // Class and interface.
     validateSuperclass(kotlin, lambda);
diff --git a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
index 9ccc19c..e13331f 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -163,15 +163,6 @@
     String sourceDebug = getSourceDebugExtension(clazz.annotations());
     writer.visitSource(clazz.sourceFile != null ? clazz.sourceFile.toString() : null, sourceDebug);
     int version = getClassFileVersion(clazz);
-    if (version >= V1_8) {
-      // JDK8 and after ignore ACC_SUPER so unset it.
-      clazz.accessFlags.unsetSuper();
-    } else {
-      // In all other cases set the super bit as D8/R8 do not support targeting pre 1.0.2 JDKs.
-      if (!clazz.accessFlags.isInterface()) {
-        clazz.accessFlags.setSuper();
-      }
-    }
     int access = clazz.accessFlags.getAsCfAccessFlags();
     String desc = namingLens.lookupDescriptor(clazz.type).toString();
     String name = namingLens.lookupInternalName(clazz.type);
diff --git a/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java b/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java
index f06d96d..74d62e0 100644
--- a/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java
+++ b/src/test/java/com/android/tools/r8/jasmin/JasminBuilder.java
@@ -8,14 +8,12 @@
 import com.android.tools.r8.ByteDataView;
 import com.android.tools.r8.ClassFileConsumer;
 import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.TestBase;
 import com.android.tools.r8.dex.ApplicationReader;
 import com.android.tools.r8.graph.DexApplication;
 import com.android.tools.r8.naming.MemberNaming.FieldSignature;
 import com.android.tools.r8.naming.MemberNaming.MethodSignature;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.origin.PathOrigin;
-import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.InternalOptions;
@@ -455,15 +453,7 @@
     file.readJasmin(new StringReader(builder.toString()), builder.name, false);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     file.write(out);
-    // Jasmin incorrectly sets super on interfaces: https://sourceforge.net/p/jasmin/bugs/5/
-    return TestBase.transformer(out.toByteArray(), Reference.classFromTypeName(file.getClassName()))
-        .setAccessFlags(
-            flags -> {
-              if (flags.isInterface()) {
-                flags.unsetSuper();
-              }
-            })
-        .transform();
+    return out.toByteArray();
   }
 
   public ImmutableList.Builder<byte[]> buildClasses(ImmutableList.Builder<byte[]> builder)