Update test expectation after making interface methods abstract
Change-Id: I20de52a6df2b9fea2c1b009ae2f63a787162d2dd
diff --git a/src/test/java/com/android/tools/r8/graph/invokespecial/InvokeSpecialToImmediateInterfaceTest.java b/src/test/java/com/android/tools/r8/graph/invokespecial/InvokeSpecialToImmediateInterfaceTest.java
index 455e037..d55815d 100644
--- a/src/test/java/com/android/tools/r8/graph/invokespecial/InvokeSpecialToImmediateInterfaceTest.java
+++ b/src/test/java/com/android/tools/r8/graph/invokespecial/InvokeSpecialToImmediateInterfaceTest.java
@@ -9,10 +9,12 @@
import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
+import com.android.tools.r8.R8TestBuilder;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.utils.AndroidApiLevel;
import java.io.IOException;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -63,13 +65,26 @@
.addProgramClasses(I.class, Main.class)
.addProgramClassFileData(getClassWithTransformedInvoked())
.addKeepMainRule(Main.class)
+ // Illegal invoke-super to interface method.
+ .applyIf(
+ parameters.isDexRuntime()
+ && parameters.getApiLevel().isLessThanOrEqualTo(AndroidApiLevel.K),
+ R8TestBuilder::allowDiagnosticWarningMessages)
.setMinApi(parameters)
.run(parameters.getRuntime(), Main.class)
// TODO(b/313065227): Should succeed.
.applyIf(
parameters.isCfRuntime(),
runResult -> runResult.assertFailureWithErrorThatThrows(NoSuchMethodError.class),
- runResult -> runResult.assertFailureWithErrorThatThrows(NullPointerException.class));
+ parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isDalvik(),
+ runResult -> runResult.assertFailureWithErrorThatThrows(VerifyError.class),
+ parameters.canUseDefaultAndStaticInterfaceMethods(),
+ runResult -> runResult.assertFailureWithErrorThatThrows(NullPointerException.class),
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isEqualToOneOf(Version.V5_1_1, Version.V6_0_1),
+ runResult ->
+ runResult.assertFailureWithErrorThatThrows(IncompatibleClassChangeError.class),
+ runResult -> runResult.assertFailureWithErrorThatThrows(AbstractMethodError.class));
}
private byte[] getClassWithTransformedInvoked() throws IOException {