[GlobalSynthetics] Ensure all tests generate allowed global synthetics
Bug: b/280016114
Change-Id: Id5c1f81b16af04d67fb83a65070302f06d47ba9e
diff --git a/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java b/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java
index 54cf918..4ae00bd 100644
--- a/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java
+++ b/src/main/java/com/android/tools/r8/GlobalSyntheticsGeneratorCommand.java
@@ -141,6 +141,8 @@
internal.desugarState = DesugarState.ON;
internal.enableVarHandleDesugaring = true;
+ internal.getArtProfileOptions().setEnableCompletenessCheckForTesting(false);
+
return internal;
}
diff --git a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
index 33911ae..0da6332 100644
--- a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -25,6 +25,7 @@
import com.android.tools.r8.utils.codeinspector.HorizontallyMergedClassesInspector;
import com.android.tools.r8.utils.codeinspector.VerticallyMergedClassesInspector;
import com.google.common.base.Suppliers;
+import com.google.common.collect.Sets;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
@@ -33,8 +34,10 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -88,6 +91,9 @@
private Optional<Integer> isAndroidBuildVersionAdded = null;
+ private static final Map<Integer, Set<String>> allowedGlobalSynthetics =
+ new ConcurrentHashMap<>();
+
LibraryDesugaringTestConfiguration libraryDesugaringTestConfiguration =
LibraryDesugaringTestConfiguration.DISABLED;
@@ -259,6 +265,25 @@
: getMinApiLevel();
builder.setMinApiLevel(minApi);
}
+ if (!noMinApiLevel && backend.isDex() && (isD8TestBuilder() || isR8TestBuilder())) {
+ int minApiLevel = builder.getMinApiLevel();
+ allowedGlobalSynthetics.computeIfAbsent(
+ minApiLevel, TestCompilerBuilder::computeAllGlobalSynthetics);
+ Consumer<InternalOptions> previousConsumer = optionsConsumer;
+ optionsConsumer =
+ options -> {
+ options.testing.globalSyntheticCreatedCallback =
+ programClass -> {
+ assertTrue(
+ allowedGlobalSynthetics
+ .get(minApiLevel)
+ .contains(programClass.getType().toDescriptorString()));
+ };
+ if (previousConsumer != null) {
+ previousConsumer.accept(options);
+ }
+ };
+ }
builder.setOptimizeMultidexForLinearAlloc(optimizeMultidexForLinearAlloc);
if (useDefaultRuntimeLibrary) {
builder.addLibraryFiles(getDefaultLibraryFiles());
@@ -534,6 +559,26 @@
return self();
}
+ private static Set<String> computeAllGlobalSynthetics(int minApiLevel) {
+ try {
+ Set<String> generatedGlobalSynthetics = Sets.newConcurrentHashSet();
+ GlobalSyntheticsGeneratorCommand command =
+ GlobalSyntheticsGeneratorCommand.builder()
+ .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.API_DATABASE_LEVEL))
+ .setMinApiLevel(minApiLevel)
+ .setProgramConsumer(DexIndexedConsumer.emptyConsumer())
+ .build();
+ InternalOptions internalOptions = command.getInternalOptions();
+ internalOptions.testing.globalSyntheticCreatedCallback =
+ programClass ->
+ generatedGlobalSynthetics.add(programClass.getType().toDescriptorString());
+ GlobalSyntheticsGenerator.runForTesting(command.getInputApp(), internalOptions);
+ return generatedGlobalSynthetics;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
private static class ChainedStringConsumer implements StringConsumer {
private final List<StringConsumer> consumers;
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelAndroidxApiImplTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelAndroidxApiImplTest.java
index 0dd154d..d52052b 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelAndroidxApiImplTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelAndroidxApiImplTest.java
@@ -63,7 +63,7 @@
.setMinApi(parameters)
.addAndroidBuildVersion(getMaxSupportedApiLevel())
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass23.class, AndroidApiLevel.M))
.apply(setMockApiLevelForClass(LibraryClass26.class, AndroidApiLevel.O))
.apply(setMockApiLevelForClass(LibraryClass30.class, AndroidApiLevel.R))
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java
index 9ef5912..5e1dc96 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelClassMergingPackagePrivateTest.java
@@ -68,6 +68,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
+ .apply(ApiModelingTestHelper::disableStubbingOfClasses)
.apply(b -> setApiLevels(b, Api1.class))
.apply(b -> setApiLevels(b, Api2.class));
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelD8GradleSetupTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelD8GradleSetupTest.java
index 2332313..98e8070 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelD8GradleSetupTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelD8GradleSetupTest.java
@@ -73,7 +73,7 @@
LibraryClassThree.class.getDeclaredMethod("baz"), mockApiLevelThree))
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses);
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck);
}
private boolean willHorizontallyMergeOutlines() {
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelFieldAssignNewInstanceTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelFieldAssignNewInstanceTest.java
index f2a6859..4145d38 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelFieldAssignNewInstanceTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelFieldAssignNewInstanceTest.java
@@ -56,7 +56,7 @@
.setMinApi(parameters)
.addAndroidBuildVersion(getMaxSupportedApiLevel())
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, AndroidApiLevel.B))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, AndroidApiLevel.B))
.apply(
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithDifferentApiLevelTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithDifferentApiLevelTest.java
index c84fae1..10b38c6 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithDifferentApiLevelTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithDifferentApiLevelTest.java
@@ -60,7 +60,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.addAndroidBuildVersion(parameters.getApiLevel())
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, classApiLevel))
.apply(setMockApiLevelForClass(LibraryClass.class, classApiLevel))
.apply(
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithSameApiLevelTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithSameApiLevelTest.java
index 6f03205..d01a450 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithSameApiLevelTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelIndirectTargetWithSameApiLevelTest.java
@@ -57,7 +57,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.addAndroidBuildVersion(parameters.getApiLevel())
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, mockApiLevel))
.apply(setMockApiLevelForClass(LibraryClass.class, mockApiLevel))
.apply(setMockApiLevelForMethod(LibraryClass.class.getDeclaredMethod("foo"), mockApiLevel))
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelInlineMissingSuperTypeTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelInlineMissingSuperTypeTest.java
index 67f9f6e..1a0197c 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelInlineMissingSuperTypeTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelInlineMissingSuperTypeTest.java
@@ -47,6 +47,7 @@
.apply(
setMockApiLevelForDefaultInstanceInitializer(
LibraryClass.class, libraryAdditionApiLevel))
+ .apply(ApiModelingTestHelper::disableStubbingOfClasses)
.setMinApi(parameters)
.addKeepMainRule(Main.class)
.enableInliningAnnotations()
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockAbstractMethodOnBaseToOutlineTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockAbstractMethodOnBaseToOutlineTest.java
index bc50b66..6e942c1 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockAbstractMethodOnBaseToOutlineTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockAbstractMethodOnBaseToOutlineTest.java
@@ -54,7 +54,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.addAndroidBuildVersion()
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
.apply(setMockApiLevelForClass(LibraryClass.class, AndroidApiLevel.B))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, AndroidApiLevel.B))
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassCheckCastTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassCheckCastTest.java
index 0a9cc42..0b6b937 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassCheckCastTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassCheckCastTest.java
@@ -48,7 +48,7 @@
.addLibraryClasses(LibraryClass.class)
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel));
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassForNameTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassForNameTest.java
index dccfdbf..6d33017 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassForNameTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassForNameTest.java
@@ -48,7 +48,7 @@
.addLibraryClasses(LibraryClass.class)
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel));
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassReferenceTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassReferenceTest.java
index 4c90ac5..e19d0e6 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassReferenceTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingByClassReferenceTest.java
@@ -48,7 +48,7 @@
.addLibraryClasses(LibraryClass.class)
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel));
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java
index 9fc0985..6185e26 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java
@@ -52,7 +52,7 @@
.addLibraryClasses(LibraryClass.class)
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(ApiModelingTestHelper::disableOutlining)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, mockLevel));
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockDalvikVerifyErrorTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockDalvikVerifyErrorTest.java
index 74e7ef0..5931ef7 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockDalvikVerifyErrorTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockDalvikVerifyErrorTest.java
@@ -50,7 +50,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.addAndroidBuildVersion()
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, mockLevel))
.apply(setMockApiLevelForMethod(LibraryClass.class.getDeclaredMethod("foo"), mockLevel));
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockExceptionTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockExceptionTest.java
index ea43cbb..fff6c4a 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockExceptionTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockExceptionTest.java
@@ -59,7 +59,7 @@
.addLibraryClasses(LibrarySuperException.class, LibrarySubException.class, Thrower.class)
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibrarySuperException.class, mockSuperExceptionLevel))
.apply(setMockApiLevelForClass(LibrarySubException.class, mockSubExceptionLevel));
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java
index c7a2674..85011d5 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java
@@ -47,7 +47,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.addAndroidBuildVersion()
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, mockLevel));
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeProgramDefinedDuplicateTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeProgramDefinedDuplicateTest.java
index 8e974f1..bb28672 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeProgramDefinedDuplicateTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeProgramDefinedDuplicateTest.java
@@ -56,7 +56,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(ApiModelingTestHelper::disableOutlining)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, mockLevel))
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeTest.java
index ab6e2148..15ffd25 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockMergeTest.java
@@ -56,7 +56,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(ApiModelingTestHelper::disableOutlining)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, mockLevel))
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockRetraceTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockRetraceTest.java
index 9394280..20a18a1 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockRetraceTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockRetraceTest.java
@@ -48,7 +48,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.addAndroidBuildVersion()
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, mockLevel))
.addKeepMainRule(Main.class)
.addKeepClassRules(ProgramClass.class)
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java
index 3d31170..234b310 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java
@@ -49,7 +49,7 @@
.addDefaultRuntimeLibrary(parameters)
.setMinApi(parameters)
.addAndroidBuildVersion()
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(setMockApiLevelForClass(LibraryClass.class, lowerMockApiLevel))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, lowerMockApiLevel))
.apply(setMockApiLevelForClass(OtherLibraryClass.class, mockApiLevel))
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java
index 57e692a..1749728 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java
@@ -54,7 +54,7 @@
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, libraryApiLevel))
.apply(setMockApiLevelForMethod(methodOn23, libraryApiLevel))
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses);
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck);
}
private boolean addToBootClasspath() {
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineCheckCastTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineCheckCastTest.java
index 86630ca..4c6763e 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineCheckCastTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineCheckCastTest.java
@@ -53,7 +53,7 @@
.apply(setMockApiLevelForMethod(LibraryClass.class.getDeclaredMethod("foo"), classApiLevel))
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses);
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck);
}
public AndroidApiLevel getApiLevelForRuntime() {
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineConstClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineConstClassTest.java
index 371531b..7c18193 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineConstClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineConstClassTest.java
@@ -46,7 +46,7 @@
.apply(setMockApiLevelForClass(LibraryClass.class, classApiLevel))
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses);
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck);
}
public AndroidApiLevel getApiLevelForRuntime() {
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineInstanceOfTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineInstanceOfTest.java
index a4e7c2e..d6d7137 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineInstanceOfTest.java
@@ -52,7 +52,7 @@
.apply(setMockApiLevelForClass(LibraryClass.class, classApiLevel))
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses);
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck);
}
public AndroidApiLevel getApiLevelForRuntime() {
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java
index 4663607..8fd5ba1 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java
@@ -54,7 +54,7 @@
.addAndroidBuildVersion()
// TODO(b/213552119): Remove when enabled by default.
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(ApiModelingTestHelper::enableOutliningOfMethods)
// We only model the class and not the default initializer, otherwise we outline the new
// instance call and remove the last reference in non-outlined code.
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java
index 39b1db2..4883f17 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java
@@ -72,8 +72,8 @@
.transform())
.setMinApi(AndroidApiLevel.B)
.addAndroidBuildVersion(runApiLevel())
- // TODO(b/213552119): Remove when enabled by default.
.apply(ApiModelingTestHelper::enableApiCallerIdentification)
+ .apply(ApiModelingTestHelper::disableStubbingOfClasses)
.apply(setMockApiLevelForClass(LibraryClass.class, classApiLevel))
.apply(setMockApiLevelForDefaultInstanceInitializer(LibraryClass.class, classApiLevel))
.apply(
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelingTestHelper.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelingTestHelper.java
index cfa2e8a..92f90bd 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelingTestHelper.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelingTestHelper.java
@@ -134,6 +134,18 @@
});
}
+ public static void enableStubbingOfClassesAndDisableGlobalSyntheticCheck(
+ TestCompilerBuilder<?, ?, ?, ?, ?> compilerBuilder) {
+ compilerBuilder.addOptionsModification(
+ options -> {
+ options.apiModelingOptions().enableLibraryApiModeling = true;
+ options.apiModelingOptions().enableStubbingOfClasses = true;
+ // Our tests rely on us amending the library path with additional classes that are not
+ // in the library.
+ options.testing.globalSyntheticCreatedCallback = null;
+ });
+ }
+
public static void enableStubbingOfClasses(TestCompilerBuilder<?, ?, ?, ?, ?> compilerBuilder) {
compilerBuilder.addOptionsModification(
options -> {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress131349148.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress131349148.java
index 38eddf9..308b42b 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress131349148.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/Regress131349148.java
@@ -70,7 +70,7 @@
setupR8TestBuilder(
b ->
b.apply(ApiModelingTestHelper::enableOutliningOfMethods)
- .apply(ApiModelingTestHelper::enableStubbingOfClasses)
+ .apply(ApiModelingTestHelper::enableStubbingOfClassesAndDisableGlobalSyntheticCheck)
.apply(ApiModelingTestHelper::enableApiCallerIdentification),
inspector -> {
ClassSubject classSubject = inspector.clazz(TestClassCallingMethodWithNonExisting.class);