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 {