Move test helpers for creating app views to TestBase.
Change-Id: I2f5fd61932adcc31d4af5f0a24d4c6f8cfbdb67a
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index b90b40c..94e0237 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -19,13 +19,32 @@
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppInfo;
+import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppServices;
+import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.graph.DexCode;
import com.android.tools.r8.graph.DexEncodedMethod;
+import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.graph.DexProto;
+import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.SmaliWriter;
import com.android.tools.r8.jasmin.JasminBuilder;
import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.references.MethodReference;
+import com.android.tools.r8.references.TypeReference;
+import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.shaking.EnqueuerFactory;
+import com.android.tools.r8.shaking.ProguardClassFilter;
+import com.android.tools.r8.shaking.ProguardClassNameList;
+import com.android.tools.r8.shaking.ProguardConfigurationRule;
+import com.android.tools.r8.shaking.ProguardKeepRule;
+import com.android.tools.r8.shaking.ProguardKeepRule.Builder;
+import com.android.tools.r8.shaking.ProguardKeepRuleType;
+import com.android.tools.r8.shaking.ProguardTypeMatcher;
+import com.android.tools.r8.shaking.RootSetBuilder;
+import com.android.tools.r8.shaking.RootSetBuilder.RootSet;
import com.android.tools.r8.shaking.serviceloader.ServiceLoaderMultipleTest.Greeter;
import com.android.tools.r8.transformers.ClassFileTransformer;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -34,6 +53,7 @@
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.PreloadedClassFileProvider;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.TestDescriptionWatcher;
@@ -66,6 +86,8 @@
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -387,6 +409,11 @@
return buildClasses(programClasses, libraryClasses).build();
}
+ protected static AndroidApp.Builder buildClasses(Collection<Class<?>> programClasses)
+ throws IOException {
+ return buildClasses(programClasses, Collections.emptyList());
+ }
+
protected static AndroidApp.Builder buildClasses(
Collection<Class<?>> programClasses, Collection<Class<?>> libraryClasses) throws IOException {
AndroidApp.Builder builder = AndroidApp.builder();
@@ -527,6 +554,65 @@
}
}
+ protected static AppView<AppInfoWithSubtyping> computeAppViewWithSubtyping(AndroidApp app)
+ throws Exception {
+ Timing timing = new Timing();
+ InternalOptions options = new InternalOptions();
+ DexApplication application = new ApplicationReader(app, options, timing).read().toDirect();
+ AppView<AppInfoWithSubtyping> appView =
+ AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ appView.setAppServices(AppServices.builder(appView).build());
+ return appView;
+ }
+
+ protected static AppView<AppInfoWithLiveness> computeAppViewWithLiveness(
+ AndroidApp app, Class<?> mainClass) throws Exception {
+ AppView<AppInfoWithSubtyping> appView = computeAppViewWithSubtyping(app);
+ // Run the tree shaker to compute an instance of AppInfoWithLiveness.
+ ExecutorService executor = Executors.newSingleThreadExecutor();
+ DexApplication application = appView.appInfo().app();
+ RootSet rootSet =
+ new RootSetBuilder(
+ appView, application, buildKeepRuleForClass(mainClass, application.dexItemFactory))
+ .run(executor);
+ AppInfoWithLiveness appInfoWithLiveness =
+ EnqueuerFactory.createForInitialTreeShaking(appView)
+ .traceApplication(rootSet, ProguardClassFilter.empty(), executor, application.timing);
+ // We do not run the tree pruner to ensure that the hierarchy is as designed and not modified
+ // due to liveness.
+ return appView.setAppInfo(appInfoWithLiveness);
+ }
+
+ protected static DexType buildType(TypeReference type, DexItemFactory factory) {
+ return factory.createType(type.getDescriptor());
+ }
+
+ protected static DexMethod buildMethod(MethodReference method, DexItemFactory factory) {
+ return factory.createMethod(
+ buildType(method.getHolderClass(), factory),
+ buildProto(method.getReturnType(), method.getFormalTypes(), factory),
+ method.getMethodName());
+ }
+
+ protected static DexProto buildProto(
+ TypeReference returnType, List<TypeReference> formalTypes, DexItemFactory factory) {
+ return factory.createProto(
+ returnType == null ? factory.voidType : buildType(returnType, factory),
+ ListUtils.map(formalTypes, type -> buildType(type, factory)));
+ }
+
+ private static List<ProguardConfigurationRule> buildKeepRuleForClass(
+ Class clazz, DexItemFactory factory) {
+ Builder keepRuleBuilder = ProguardKeepRule.builder();
+ keepRuleBuilder.setSource("buildKeepRuleForClass " + clazz.getTypeName());
+ keepRuleBuilder.setType(ProguardKeepRuleType.KEEP);
+ keepRuleBuilder.setClassNames(
+ ProguardClassNameList.singletonList(
+ ProguardTypeMatcher.create(
+ factory.createType(DescriptorUtils.javaTypeToDescriptor(clazz.getTypeName())))));
+ return Collections.singletonList(keepRuleBuilder.build());
+ }
+
/** Returns a list containing all the data resources in the given app. */
public static List<DataEntryResource> getDataResources(AndroidApp app) throws ResourceException {
List<DataEntryResource> dataResources = new ArrayList<>();
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 ec01f62..f52db8b 100644
--- a/src/test/java/com/android/tools/r8/resolution/SingleTargetLookupTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/SingleTargetLookupTest.java
@@ -6,17 +6,12 @@
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.AsmTestBase;
-import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.graph.AppInfo;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
-import com.android.tools.r8.graph.AppServices;
-import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.graph.DexEncodedMethod;
-import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.ResolutionResult;
+import com.android.tools.r8.references.Reference;
import com.android.tools.r8.resolution.singletarget.Main;
import com.android.tools.r8.resolution.singletarget.one.AbstractSubClass;
import com.android.tools.r8.resolution.singletarget.one.AbstractTopClass;
@@ -34,26 +29,10 @@
import com.android.tools.r8.resolution.singletarget.two.OtherSubSubClassOne;
import com.android.tools.r8.resolution.singletarget.two.OtherSubSubClassTwo;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
-import com.android.tools.r8.shaking.EnqueuerFactory;
-import com.android.tools.r8.shaking.ProguardClassFilter;
-import com.android.tools.r8.shaking.ProguardClassNameList;
-import com.android.tools.r8.shaking.ProguardConfigurationRule;
-import com.android.tools.r8.shaking.ProguardKeepRule;
-import com.android.tools.r8.shaking.ProguardKeepRule.Builder;
-import com.android.tools.r8.shaking.ProguardKeepRuleType;
-import com.android.tools.r8.shaking.ProguardTypeMatcher;
-import com.android.tools.r8.shaking.RootSetBuilder;
-import com.android.tools.r8.shaking.RootSetBuilder.RootSet;
-import com.android.tools.r8.utils.AndroidApp;
-import com.android.tools.r8.utils.DescriptorUtils;
-import com.android.tools.r8.utils.InternalOptions;
-import com.android.tools.r8.utils.Timing;
import com.google.common.collect.ImmutableList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -103,42 +82,11 @@
this.allTargetHolders = allTargetHolders;
}
- public static AppInfoWithLiveness createAppInfoWithLiveness(AndroidApp app, Class<?> mainClass)
- throws Exception {
- // Run the tree shaker to compute an instance of AppInfoWithLiveness.
- Timing timing = new Timing();
- InternalOptions options = new InternalOptions();
- DexApplication application = new ApplicationReader(app, options, timing).read().toDirect();
- AppView<? extends AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(application), options);
- appView.setAppServices(AppServices.builder(appView).build());
-
- ExecutorService executor = Executors.newSingleThreadExecutor();
- RootSet rootSet =
- new RootSetBuilder(
- appView, application, buildKeepRuleForClass(mainClass, application.dexItemFactory))
- .run(executor);
- return EnqueuerFactory.createForInitialTreeShaking(appView)
- .traceApplication(rootSet, ProguardClassFilter.empty(), executor, timing);
- // We do not run the tree pruner to ensure that the hierarchy is as designed and not modified
- // due to liveness.
- }
-
@BeforeClass
public static void computeAppInfo() throws Exception {
- appInfo = createAppInfoWithLiveness(readClassesAndAsmDump(CLASSES, ASM_CLASSES), Main.class);
- }
-
- private static List<ProguardConfigurationRule> buildKeepRuleForClass(Class clazz,
- DexItemFactory factory) {
- Builder keepRuleBuilder = ProguardKeepRule.builder();
- keepRuleBuilder.setSource("buildKeepRuleForClass " + clazz.getTypeName());
- keepRuleBuilder.setType(ProguardKeepRuleType.KEEP);
- keepRuleBuilder.setClassNames(
- ProguardClassNameList.singletonList(
- ProguardTypeMatcher.create(
- factory.createType(DescriptorUtils.javaTypeToDescriptor(clazz.getTypeName())))));
- return Collections.singletonList(keepRuleBuilder.build());
+ appInfo =
+ computeAppViewWithLiveness(readClassesAndAsmDump(CLASSES, ASM_CLASSES), Main.class)
+ .appInfo();
}
private static Object[] singleTarget(String name, Class<?> receiverAndTarget) {
@@ -244,19 +192,14 @@
});
}
- public static DexMethod buildMethod(Class clazz, String name, AppInfo appInfo) {
- return appInfo
- .dexItemFactory()
- .createMethod(
- toType(clazz, appInfo),
- appInfo.dexItemFactory().createProto(appInfo.dexItemFactory().voidType),
- name);
+ public static DexMethod buildNullaryVoidMethod(Class clazz, String name, AppInfo appInfo) {
+ return buildMethod(
+ Reference.method(Reference.classFromClass(clazz), name, Collections.emptyList(), null),
+ appInfo.dexItemFactory());
}
- public static DexType toType(Class clazz, AppInfo appInfo) {
- return appInfo
- .dexItemFactory()
- .createType(DescriptorUtils.javaTypeToDescriptor(clazz.getTypeName()));
+ private static DexType toType(Class clazz, AppInfo appInfo) {
+ return buildType(Reference.classFromClass(clazz), appInfo.dexItemFactory());
}
private final String methodName;
@@ -266,7 +209,7 @@
@Test
public void lookupSingleTarget() {
- DexMethod method = buildMethod(invokeReceiver, methodName, appInfo);
+ DexMethod method = buildNullaryVoidMethod(invokeReceiver, methodName, appInfo);
Assert.assertNotNull(
appInfo.resolveMethod(toType(invokeReceiver, appInfo), method).getSingleTarget());
DexEncodedMethod singleVirtualTarget = appInfo.lookupSingleVirtualTarget(method, method.holder);
@@ -281,7 +224,7 @@
@Test
public void lookupVirtualTargets() {
- DexMethod method = buildMethod(invokeReceiver, methodName, appInfo);
+ DexMethod method = buildNullaryVoidMethod(invokeReceiver, methodName, appInfo);
Assert.assertNotNull(
appInfo.resolveMethod(toType(invokeReceiver, appInfo), method).getSingleTarget());
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
diff --git a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java
index ccdb49b..5fe17d5 100644
--- a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodTest.java
@@ -59,11 +59,11 @@
@BeforeClass
public static void computeAppInfo() throws Exception {
- appInfo = SingleTargetLookupTest.createAppInfoWithLiveness(readClasses(CLASSES), Main.class);
+ appInfo = computeAppViewWithLiveness(readClasses(CLASSES), Main.class).appInfo();
}
private static DexMethod buildMethod(Class clazz, String name) {
- return SingleTargetLookupTest.buildMethod(clazz, name, appInfo);
+ return SingleTargetLookupTest.buildNullaryVoidMethod(clazz, name, appInfo);
}
@Parameters(name = "{0}")
diff --git a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java
index f3191ac..22445e6 100644
--- a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfPrivateStaticMethodWithVirtualParentTest.java
@@ -108,12 +108,11 @@
@BeforeClass
public static void computeAppInfo() throws Exception {
appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- readClassesAndAsmDump(CLASSES, DUMPS), Main.class);
+ computeAppViewWithLiveness(readClassesAndAsmDump(CLASSES, DUMPS), Main.class).appInfo();
}
private static DexMethod buildMethod(Class clazz, String name) {
- return SingleTargetLookupTest.buildMethod(clazz, name, appInfo);
+ return SingleTargetLookupTest.buildNullaryVoidMethod(clazz, name, appInfo);
}
@Parameters(name = "{0}")
diff --git a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentInterfaceTest.java b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentInterfaceTest.java
index 7c435d3..63aa76f 100644
--- a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentInterfaceTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentInterfaceTest.java
@@ -95,12 +95,11 @@
@BeforeClass
public static void computeAppInfo() throws Exception {
appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- readClassesAndAsmDump(CLASSES, DUMPS), Main.class);
+ computeAppViewWithLiveness(readClassesAndAsmDump(CLASSES, DUMPS), Main.class).appInfo();
}
private static DexMethod buildMethod(Class clazz, String name) {
- return SingleTargetLookupTest.buildMethod(clazz, name, appInfo);
+ return SingleTargetLookupTest.buildNullaryVoidMethod(clazz, name, appInfo);
}
@Parameters(name = "{0}")
diff --git a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentTest.java b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentTest.java
index e876ce0..22a12f2 100644
--- a/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/VirtualOverrideOfStaticMethodWithVirtualParentTest.java
@@ -142,12 +142,11 @@
@BeforeClass
public static void computeAppInfo() throws Exception {
appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- readClassesAndAsmDump(CLASSES, DUMPS), Main.class);
+ computeAppViewWithLiveness(readClassesAndAsmDump(CLASSES, DUMPS), Main.class).appInfo();
}
private static DexMethod buildMethod(Class clazz, String name) {
- return SingleTargetLookupTest.buildMethod(clazz, name, appInfo);
+ return SingleTargetLookupTest.buildNullaryVoidMethod(clazz, name, appInfo);
}
@Parameters(name = "{0}")
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/AbstractAllTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/AbstractAllTest.java
index c9a1c5e..2117ed6 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/AbstractAllTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/AbstractAllTest.java
@@ -15,8 +15,8 @@
import com.android.tools.r8.graph.ResolutionResult;
import com.android.tools.r8.resolution.SingleTargetLookupTest;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.AndroidApp;
import com.google.common.collect.ImmutableList;
-import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -43,10 +43,9 @@
public void testResolution() throws Exception {
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
- AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList()).build(), Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ AndroidApp app = readClasses(CLASSES);
+ AppInfoWithLiveness appInfo = computeAppViewWithLiveness(app, Main.class).appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexEncodedMethod resolutionTarget = resolutionResult.getSingleTarget();
// Currently R8 will resolve to L::f as that is the first in the topological search.
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultLeftAbstractRightTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultLeftAbstractRightTest.java
index 075e399..a9c79fc 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultLeftAbstractRightTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultLeftAbstractRightTest.java
@@ -44,12 +44,13 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList())
- .addClassProgramData(Collections.singletonList(transformB()))
- .build(),
- Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(
+ buildClasses(CLASSES)
+ .addClassProgramData(Collections.singletonList(transformB()))
+ .build(),
+ Main.class)
+ .appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexEncodedMethod resolutionTarget = resolutionResult.getSingleTarget();
assertEquals(L.class.getTypeName(), resolutionTarget.method.holder.toSourceString());
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultRightAbstractLeftTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultRightAbstractLeftTest.java
index 58d0891..a65c188 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultRightAbstractLeftTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultRightAbstractLeftTest.java
@@ -44,12 +44,13 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList())
- .addClassProgramData(Collections.singletonList(transformB()))
- .build(),
- Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(
+ buildClasses(CLASSES)
+ .addClassProgramData(Collections.singletonList(transformB()))
+ .build(),
+ Main.class)
+ .appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexEncodedMethod resolutionTarget = resolutionResult.getSingleTarget();
assertEquals(R.class.getTypeName(), resolutionTarget.method.holder.toSourceString());
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractLeftTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractLeftTest.java
index 30295fd..053fba0 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractLeftTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractLeftTest.java
@@ -47,12 +47,13 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList())
- .addClassProgramData(Collections.singletonList(transformB()))
- .build(),
- Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(
+ buildClasses(CLASSES)
+ .addClassProgramData(Collections.singletonList(transformB()))
+ .build(),
+ Main.class)
+ .appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexEncodedMethod resolutionTarget = resolutionResult.getSingleTarget();
assertEquals(L.class.getTypeName(), resolutionTarget.method.holder.toSourceString());
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractRightTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractRightTest.java
index 6c4070e..5163bc2 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractRightTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAbstractRightTest.java
@@ -47,12 +47,13 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList())
- .addClassProgramData(Collections.singletonList(transformB()))
- .build(),
- Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(
+ buildClasses(CLASSES)
+ .addClassProgramData(Collections.singletonList(transformB()))
+ .build(),
+ Main.class)
+ .appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexEncodedMethod resolutionTarget = resolutionResult.getSingleTarget();
assertEquals(R.class.getTypeName(), resolutionTarget.method.holder.toSourceString());
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
index 581554b..75f689f 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
@@ -46,12 +46,13 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList())
- .addClassProgramData(Collections.singletonList(transformB()))
- .build(),
- Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(
+ buildClasses(CLASSES)
+ .addClassProgramData(Collections.singletonList(transformB()))
+ .build(),
+ Main.class)
+ .appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
Set<String> holders = new HashSet<>();
resolutionResult
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndLeftTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndLeftTest.java
index 7ca9525..5772bdc 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndLeftTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndLeftTest.java
@@ -16,7 +16,6 @@
import com.android.tools.r8.resolution.SingleTargetLookupTest;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import com.google.common.collect.ImmutableList;
-import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -44,9 +43,8 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList()).build(), Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(readClasses(CLASSES), Main.class).appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexEncodedMethod resolutionTarget = resolutionResult.getSingleTarget();
assertEquals(L.class.getTypeName(), resolutionTarget.method.holder.toSourceString());
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndRightTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndRightTest.java
index 1cbd668..50e0f8d 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndRightTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndRightTest.java
@@ -16,7 +16,6 @@
import com.android.tools.r8.resolution.SingleTargetLookupTest;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import com.google.common.collect.ImmutableList;
-import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -44,9 +43,8 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList()).build(), Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(readClasses(CLASSES), Main.class).appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexEncodedMethod resolutionTarget = resolutionResult.getSingleTarget();
assertEquals(R.class.getTypeName(), resolutionTarget.method.holder.toSourceString());
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
index 47d7d65..bb81c51 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
@@ -47,12 +47,13 @@
// The resolution is runtime independent, so just run it on the default CF VM.
assumeTrue(parameters.getRuntime().equals(TestRuntime.getDefaultJavaRuntime()));
AppInfoWithLiveness appInfo =
- SingleTargetLookupTest.createAppInfoWithLiveness(
- buildClasses(CLASSES, Collections.emptyList())
- .addClassProgramData(Collections.singletonList(transformB()))
- .build(),
- Main.class);
- DexMethod method = SingleTargetLookupTest.buildMethod(B.class, "f", appInfo);
+ computeAppViewWithLiveness(
+ buildClasses(CLASSES)
+ .addClassProgramData(Collections.singletonList(transformB()))
+ .build(),
+ Main.class)
+ .appInfo();
+ DexMethod method = SingleTargetLookupTest.buildNullaryVoidMethod(B.class, "f", appInfo);
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
Set<String> holders = new HashSet<>();
resolutionResult