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)