Add tests for incorrect virtual target resolutions.
Bug: 139823850
Change-Id: Icb722cf491bf4c9a6602ba9f1c90806d26530c0f
diff --git a/src/test/java/com/android/tools/r8/resolution/SingleTargetLookupTest.java b/src/test/java/com/android/tools/r8/resolution/SingleTargetLookupTest.java
index 59337c1..a90ae25 100644
--- a/src/test/java/com/android/tools/r8/resolution/SingleTargetLookupTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/SingleTargetLookupTest.java
@@ -14,6 +14,10 @@
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.resolution.singletarget.Main;
+import com.android.tools.r8.resolution.singletarget.interfacedefault.A;
+import com.android.tools.r8.resolution.singletarget.interfacedefault.B;
+import com.android.tools.r8.resolution.singletarget.interfacedefault.C;
+import com.android.tools.r8.resolution.singletarget.interfacedefault.I;
import com.android.tools.r8.resolution.singletarget.one.AbstractSubClass;
import com.android.tools.r8.resolution.singletarget.one.AbstractTopClass;
import com.android.tools.r8.resolution.singletarget.one.InterfaceWithDefault;
@@ -81,6 +85,10 @@
OtherSubSubClassTwo.class,
ThirdAbstractTopClass.class,
ThirdSubClassOne.class,
+ A.class,
+ B.class,
+ C.class,
+ I.class,
Main.class
);
@@ -195,7 +203,9 @@
ThirdSubClassOne.class),
singleTarget("instanceMethod", ThirdAbstractTopClass.class, ThirdAbstractTopClass.class),
singleTarget(
- "otherInstanceMethod", ThirdAbstractTopClass.class, ThirdAbstractTopClass.class)
+ "otherInstanceMethod", ThirdAbstractTopClass.class, ThirdAbstractTopClass.class),
+ // TODO(b/139823850): Should not include A#confusing. Rather, include default I#confusing.
+ manyTargets("confusing", B.class, A.class, C.class)
});
}
diff --git a/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/A.java b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/A.java
new file mode 100644
index 0000000..4914380
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/A.java
@@ -0,0 +1,10 @@
+// Copyright (c) 2019, 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.resolution.singletarget.interfacedefault;
+
+public class A {
+ private static void confusing() {
+ System.out.println("A::confusing()");
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/B.java b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/B.java
new file mode 100644
index 0000000..b575db5
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/B.java
@@ -0,0 +1,11 @@
+// Copyright (c) 2019, 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.resolution.singletarget.interfacedefault;
+
+public class B extends A implements I {
+ @Override
+ public void confusing(int i) {
+ System.out.println("B::confusing(" + i + ")");
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/C.java b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/C.java
new file mode 100644
index 0000000..2940ea3
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/C.java
@@ -0,0 +1,11 @@
+// Copyright (c) 2019, 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.resolution.singletarget.interfacedefault;
+
+public class C extends B {
+ @Override
+ public void confusing() {
+ System.out.println("C::confusing()");
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/I.java b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/I.java
new file mode 100644
index 0000000..04ff6ba
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/resolution/singletarget/interfacedefault/I.java
@@ -0,0 +1,13 @@
+// Copyright (c) 2019, 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.resolution.singletarget.interfacedefault;
+
+public interface I {
+ void confusing(int i);
+
+ default void confusing() {
+ System.out.println("I::confusing()");
+ confusing(0);
+ }
+}