Revert "Update repackaging to check for accessiblity for protected members"
This reverts commit 65617f4f5f0b7fef416f9a43ccadfdf70440874b.
Reason for revert: Breaking a test
Change-Id: I2147a504c9f7c4103792b0c9d3b4a518197465e5
diff --git a/src/main/java/com/android/tools/r8/repackaging/RepackagingUseRegistry.java b/src/main/java/com/android/tools/r8/repackaging/RepackagingUseRegistry.java
index e061d86..91484f7 100644
--- a/src/main/java/com/android/tools/r8/repackaging/RepackagingUseRegistry.java
+++ b/src/main/java/com/android/tools/r8/repackaging/RepackagingUseRegistry.java
@@ -25,15 +25,12 @@
import com.android.tools.r8.graph.SuccessfulMemberResolutionResult;
import com.android.tools.r8.graph.UseRegistry;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
-import com.android.tools.r8.utils.InternalOptions;
-import com.android.tools.r8.utils.VerificationUtils;
import java.util.function.Consumer;
import java.util.function.Predicate;
public class RepackagingUseRegistry extends UseRegistry {
private final AppInfoWithLiveness appInfo;
- private final InternalOptions options;
private final RepackagingConstraintGraph constraintGraph;
private final ProgramDefinition context;
private final InitClassLens initClassLens;
@@ -45,7 +42,6 @@
ProgramDefinition context) {
super(appView.dexItemFactory());
this.appInfo = appView.appInfo();
- this.options = appView.options();
this.constraintGraph = constraintGraph;
this.context = context;
this.initClassLens = appView.initClassLens();
@@ -69,9 +65,11 @@
if (accessFlags.isPackagePrivate()) {
return true;
}
- return accessFlags.isProtected()
- && !VerificationUtils.isValidProtectedMemberAccess(
- appInfo, options, member.getHolderType(), context.getContextType());
+ if (accessFlags.isProtected()
+ && !appInfo.isSubtype(context.getContextType(), member.getHolderType())) {
+ return true;
+ }
+ return false;
}
public void registerFieldAccess(DexField field) {
diff --git a/src/main/java/com/android/tools/r8/utils/VerificationUtils.java b/src/main/java/com/android/tools/r8/utils/VerificationUtils.java
deleted file mode 100644
index 0979e27..0000000
--- a/src/main/java/com/android/tools/r8/utils/VerificationUtils.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.utils;
-
-import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
-import com.android.tools.r8.graph.DexType;
-
-public class VerificationUtils {
-
- public static boolean isValidProtectedMemberAccess(
- AppInfoWithClassHierarchy appInfo, InternalOptions options, DexType member, DexType context) {
- // Check for assignability if we are generating CF:
- // https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.10.1.8
- return (options.isGeneratingClassFiles() && appInfo.isSubtype(member, context))
- || (!options.isGeneratingClassFiles() && appInfo.isSubtype(context, member));
- }
-}
diff --git a/src/test/java/com/android/tools/r8/repackage/RepackageProtectedInSeparatePackageTest.java b/src/test/java/com/android/tools/r8/repackage/RepackageProtectedInSeparatePackageTest.java
index a5e0ea3..a455d0e 100644
--- a/src/test/java/com/android/tools/r8/repackage/RepackageProtectedInSeparatePackageTest.java
+++ b/src/test/java/com/android/tools/r8/repackage/RepackageProtectedInSeparatePackageTest.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.repackage;
-import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import com.android.tools.r8.NeverClassInline;
@@ -47,14 +46,15 @@
.compile()
.inspect(
inspector -> {
- if (parameters.isCfRuntime()) {
- assertThat(Sub.class, not(isRepackaged(inspector)));
- } else {
- assertThat(Sub.class, isRepackaged(inspector));
- }
+ // TODO(b/173584786): We should not repackage Sub when generating CF.
+ assertThat(Sub.class, isRepackaged(inspector));
})
- .run(parameters.getRuntime(), Main.class)
- .assertSuccessWithOutputLines(EXPECTED);
+ .run(parameters.getRuntime(), Main.class);
+ if (parameters.isCfRuntime()) {
+ runResult.assertFailureWithErrorThatThrows(VerifyError.class);
+ } else {
+ runResult.assertSuccessWithOutputLines(EXPECTED);
+ }
}
public static class Base {