Fix bug during computation of methods to implement
Bug: 62016927
Change-Id: Ia74e31a6f0c0ba6acafe0195a474f4aef9c4319e
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
index ba15c9d..ecda01e 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
@@ -115,7 +115,7 @@
// by this class as well as its superclasses.
DexClass current = clazz;
while (true) {
- for (DexType type : clazz.interfaces.values) {
+ for (DexType type : current.interfaces.values) {
helper.merge(getOrCreateInterfaceInfo(type));
}
@@ -139,7 +139,7 @@
current = clazz;
while (true) {
// Hide candidates by virtual method of the class.
- hideCandidates(clazz.virtualMethods, candidates, toBeImplemented);
+ hideCandidates(current.virtualMethods, candidates, toBeImplemented);
if (candidates.isEmpty()) {
return toBeImplemented;
}
diff --git a/src/test/examplesAndroidN/interfacemethods/DefaultMethods.java b/src/test/examplesAndroidN/interfacemethods/DefaultMethods.java
index 49e792c..ef49f4e 100644
--- a/src/test/examplesAndroidN/interfacemethods/DefaultMethods.java
+++ b/src/test/examplesAndroidN/interfacemethods/DefaultMethods.java
@@ -6,7 +6,24 @@
public class DefaultMethods {
+ interface I3 {
+ default int getValue() {
+ return 1;
+ }
+
+ }
+
+ static class C3 {
+ public int getValue() {
+ return 2;
+ }
+ }
+
+ static class C4 extends C3 implements I3 {
+ }
+
public static void main(String[] args) {
new C2().d1();
+ System.out.println(new C4().getValue());
}
}