Introduce a base RetraceElement interface.
Change-Id: I6ebd2d5342a251144d6cf8ab9e7511185b644abe
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
index 09db8bd..ab7d854 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
@@ -31,12 +31,10 @@
String methodName, int position, List<TypeReference> formalTypes, TypeReference returnType);
@Keep
- interface Element {
+ interface Element extends RetraceElement<RetraceClassResult> {
RetracedClass getRetracedClass();
- RetraceClassResult getRetraceClassResult();
-
RetraceSourceFileResult retraceSourceFile(String sourceFile);
RetraceFieldResult lookupField(String fieldName);
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceElement.java
new file mode 100644
index 0000000..6070723
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceElement.java
@@ -0,0 +1,14 @@
+// Copyright (c) 2021, 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.retrace;
+
+/**
+ * Base interface for any element in a retrace result.
+ *
+ * <p>The element represents an unambiguous retracing.
+ */
+public interface RetraceElement<R extends RetraceResult<?>> {
+
+ R getRetraceResultContext();
+}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
index ef52314..f0f2a3d 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
@@ -11,14 +11,12 @@
public interface RetraceFieldResult extends RetraceResult<Element> {
@Keep
- interface Element {
+ interface Element extends RetraceElement<RetraceFieldResult> {
boolean isUnknown();
RetracedField getField();
- RetraceFieldResult getRetraceFieldResult();
-
RetraceClassResult.Element getClassElement();
RetraceSourceFileResult retraceSourceFile(String sourceFile);
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java
index f390396..f70f3d2 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceFrameResult.java
@@ -13,7 +13,7 @@
public interface RetraceFrameResult extends RetraceResult<Element> {
@Keep
- interface Element {
+ interface Element extends RetraceElement<RetraceFrameResult> {
boolean isUnknown();
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
index 0a4bb50..f565326 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
@@ -13,14 +13,12 @@
RetraceFrameResult narrowByPosition(int position);
@Keep
- interface Element {
+ interface Element extends RetraceElement<RetraceMethodResult> {
boolean isUnknown();
RetracedMethod getRetracedMethod();
- RetraceMethodResult getRetraceMethodResult();
-
RetraceClassResult.Element getClassElement();
RetraceSourceFileResult retraceSourceFile(String sourceFile);
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceResult.java
index 0fe37a6..1bc6ed6 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceResult.java
@@ -17,7 +17,7 @@
* the result.
*/
@Keep
-public interface RetraceResult<E> {
+public interface RetraceResult<E extends RetraceElement<?>> {
/** Basic operation over 'elements' which represent a possible non-ambiguous retracing. */
Stream<E> stream();
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
index 5028d84..212e8a8 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
@@ -214,7 +214,7 @@
}
@Override
- public RetraceClassResultImpl getRetraceClassResult() {
+ public RetraceClassResultImpl getRetraceResultContext() {
return classResult;
}
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFieldResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFieldResultImpl.java
index 4a82482..c3fe597 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFieldResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFieldResultImpl.java
@@ -115,7 +115,7 @@
}
@Override
- public RetraceFieldResultImpl getRetraceFieldResult() {
+ public RetraceFieldResult getRetraceResultContext() {
return retraceFieldResult;
}
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
index 47635c7..c4a54b0 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
@@ -151,6 +151,11 @@
}
@Override
+ public RetraceFrameResult getRetraceResultContext() {
+ return retraceFrameResult;
+ }
+
+ @Override
public boolean isUnknown() {
return methodReference.isUnknown();
}
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
index 7922955..251518d 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
@@ -147,7 +147,7 @@
}
@Override
- public RetraceMethodResultImpl getRetraceMethodResult() {
+ public RetraceMethodResult getRetraceResultContext() {
return retraceMethodResult;
}