Update test expectations after rewriting throwing instructions
Change-Id: I4ca348ef5e2dd486324d8f1e659212d76c3f3cd7
diff --git a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/DefaultInterfaceMethodDesugaringWithPrivateStaticResolutionInvokeVirtualTest.java b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/DefaultInterfaceMethodDesugaringWithPrivateStaticResolutionInvokeVirtualTest.java
index 363e539..3feba89 100644
--- a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/DefaultInterfaceMethodDesugaringWithPrivateStaticResolutionInvokeVirtualTest.java
+++ b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/DefaultInterfaceMethodDesugaringWithPrivateStaticResolutionInvokeVirtualTest.java
@@ -83,7 +83,8 @@
testForRuntime(parameters)
.addProgramClasses(getProgramClasses())
.addProgramClassFileData(getProgramClassData())
- .run(parameters.getRuntime(), TestClass.class));
+ .run(parameters.getRuntime(), TestClass.class),
+ false);
}
@Test
@@ -95,21 +96,24 @@
.addKeepAllClassesRule()
.setMinApi(parameters.getApiLevel())
.compile()
- .run(parameters.getRuntime(), TestClass.class));
+ .run(parameters.getRuntime(), TestClass.class),
+ true);
}
- private void checkResult(TestRunResult<?> result) {
+ private void checkResult(TestRunResult<?> result, boolean isR8) {
// Invalid invoke case is where the invoke-virtual targets C.m.
if (invalidInvoke) {
- // Up to 4.4 the exception for targeting a private static was ICCE.
- if (isDexOlderThanOrEqual(Version.V4_4_4)) {
- result.assertFailureWithErrorThatThrows(IncompatibleClassChangeError.class);
- return;
- }
- // Then up to 6.0 the runtime just ignores privates leading to incorrectly hitting I.m
- if (isDexOlderThanOrEqual(Version.V6_0_1)) {
- result.assertSuccessWithOutput(EXPECTED);
- return;
+ if (!isR8) {
+ // Up to 4.4 the exception for targeting a private static was ICCE.
+ if (isDexOlderThanOrEqual(Version.V4_4_4)) {
+ result.assertFailureWithErrorThatThrows(IncompatibleClassChangeError.class);
+ return;
+ }
+ // Then up to 6.0 the runtime just ignores privates leading to incorrectly hitting I.m
+ if (isDexOlderThanOrEqual(Version.V6_0_1)) {
+ result.assertSuccessWithOutput(EXPECTED);
+ return;
+ }
}
// The expected behavior is IAE since the resolved method is private.
result.assertFailureWithErrorThatThrows(IllegalAccessError.class);
diff --git a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java
index 473f349..9a14cad 100644
--- a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java
@@ -131,10 +131,6 @@
}
private Class<? extends Throwable> expectedRuntimeError() {
- if (parameters.isDexRuntime()
- && parameters.getRuntime().asDex().getVm().isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)) {
- return IncompatibleClassChangeError.class;
- }
return IllegalAccessError.class;
}
}
diff --git a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java
index cc2005d..8171081 100644
--- a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java
@@ -150,7 +150,8 @@
// virtual dispatch to C.f. See b/140013075.
runResult.assertSuccessWithOutputLines("Called C.f");
} else {
- runResult.assertFailureWithErrorThatMatches(containsString(expectedRuntimeError()));
+ runResult.assertFailureWithErrorThatMatches(
+ containsString(expectedRuntimeError(isCorrectedByR8)));
}
}
@@ -161,9 +162,10 @@
&& runtime.asDex().getVm().isOlderThanOrEqual(DexVm.ART_7_0_0_HOST);
}
- private String expectedRuntimeError() {
+ private String expectedRuntimeError(boolean isCorrectedByR8) {
if (parameters.isDexRuntime()
- && parameters.getRuntime().asDex().getVm().isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)) {
+ && parameters.getRuntime().asDex().getVm().isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)
+ && !isCorrectedByR8) {
return "IncompatibleClassChangeError";
}
return "IllegalAccessError";