Add FieldReferences to FieldSubject
Change-Id: I99ae2c110d851f117f4bcf670209865b60a4655d
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentFieldSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentFieldSubject.java
index ceafd09..6d7067a 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentFieldSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/AbsentFieldSubject.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexValue;
import com.android.tools.r8.naming.MemberNaming.Signature;
+import com.android.tools.r8.references.FieldReference;
public class AbsentFieldSubject extends FieldSubject {
@@ -68,6 +69,16 @@
}
@Override
+ public FieldReference getOriginalReference() {
+ return null;
+ }
+
+ @Override
+ public FieldReference getFinalReference() {
+ return null;
+ }
+
+ @Override
public AccessFlags<?> getAccessFlags() {
throw new Unreachable("Absent field has no access flags");
}
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java
index 0a4f65a..452669a 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java
@@ -193,6 +193,7 @@
public abstract AnnotationSubject annotation(String name);
+ @Override
public abstract String getOriginalName();
public abstract String getOriginalDescriptor();
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/FieldSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/FieldSubject.java
index aae1912..9b9d373 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/FieldSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/FieldSubject.java
@@ -7,6 +7,7 @@
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexValue;
+import com.android.tools.r8.references.FieldReference;
public abstract class FieldSubject extends MemberSubject {
@@ -43,4 +44,8 @@
}
public abstract String getJvmFieldSignatureAsString();
+
+ public abstract FieldReference getOriginalReference();
+
+ public abstract FieldReference getFinalReference();
}
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundFieldSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundFieldSubject.java
index 26466c1..023c088 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundFieldSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundFieldSubject.java
@@ -13,6 +13,8 @@
import com.android.tools.r8.naming.MemberNaming;
import com.android.tools.r8.naming.MemberNaming.FieldSignature;
import com.android.tools.r8.naming.signature.GenericSignatureParser;
+import com.android.tools.r8.references.FieldReference;
+import com.android.tools.r8.references.Reference;
public class FoundFieldSubject extends FieldSubject {
@@ -130,6 +132,23 @@
}
@Override
+ public FieldReference getOriginalReference() {
+ DexField originalDexField = getOriginalDexField(codeInspector.getFactory());
+ return Reference.field(
+ Reference.classFromDescriptor(originalDexField.holder.toDescriptorString()),
+ getOriginalName(),
+ Reference.typeFromDescriptor(originalDexField.type.toDescriptorString()));
+ }
+
+ @Override
+ public FieldReference getFinalReference() {
+ return Reference.field(
+ Reference.classFromDescriptor(getField().getHolderType().toDescriptorString()),
+ getOriginalName(),
+ Reference.typeFromDescriptor(getField().getType().toDescriptorString()));
+ }
+
+ @Override
public AccessFlags<?> getAccessFlags() {
return getField().getAccessFlags();
}