Downgrade unsupported feature diagnostics from error to warning.
Bug: b/241063980
Change-Id: Ie6f5eb52b9be7c94be603651f56c0ee1eac8d068
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java b/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
index 0500ac5..24cd2b5 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
@@ -80,7 +80,7 @@
makeDiagnostic(context.getOrigin(), MethodPosition.create(context));
assert (diagnostic.getSupportedApiLevel() == -1 && supportedApiLevel == null)
|| (diagnostic.getSupportedApiLevel() == supportedApiLevel.getLevel());
- appView.reporter().error(diagnostic);
+ appView.reporter().warning(diagnostic);
}
}
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
index 572fb1c..c2c74a4 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
@@ -213,8 +213,7 @@
abstract void build(Path inputFile, Path out, OutputMode mode) throws Throwable;
}
- private static List<String> minSdkErrorExpected =
- ImmutableList.of("invokecustom-error-due-to-min-sdk");
+ private static List<String> minSdkErrorExpected = ImmutableList.of();
private static Map<DexVm.Version, List<String>> failsOn;
@@ -364,14 +363,6 @@
}
@Test
- public void invokeCustomErrorDueToMinSdk() throws Throwable {
- test("invokecustom-error-due-to-min-sdk", "invokecustom", "InvokeCustom")
- .withMinApiLevel(AndroidApiLevel.N_MR1)
- .withKeepAll()
- .run();
- }
-
- @Test
public void lambdaDesugaring() throws Throwable {
test("lambdadesugaring", "lambdadesugaring", "LambdaDesugaring")
.withMinApiLevel(ToolHelper.getMinApiLevelForDexVmNoHigherThan(AndroidApiLevel.K))
diff --git a/src/test/java/com/android/tools/r8/TestBuilder.java b/src/test/java/com/android/tools/r8/TestBuilder.java
index 2b29085..4150236 100644
--- a/src/test/java/com/android/tools/r8/TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestBuilder.java
@@ -251,12 +251,6 @@
return self();
}
- public T mapUnsupportedFeaturesToWarnings() {
- return setDiagnosticsLevelModifier(
- (level, diagnostic) ->
- diagnostic instanceof UnsupportedFeatureDiagnostic ? DiagnosticsLevel.WARNING : level);
- }
-
public T allowStdoutMessages() {
// Default ignored.
return self();
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/InvokeMethodHandleRuntimeErrorTest.java b/src/test/java/com/android/tools/r8/cf/methodhandles/InvokeMethodHandleRuntimeErrorTest.java
index 889fd91..b16a586 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/InvokeMethodHandleRuntimeErrorTest.java
+++ b/src/test/java/com/android/tools/r8/cf/methodhandles/InvokeMethodHandleRuntimeErrorTest.java
@@ -66,7 +66,6 @@
.addProgramClasses(Main.class, I.class, Super.class)
.addProgramClassFileData(getInvokeCustomTransform())
.setMinApi(parameters.getApiLevel())
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(
diagnostics -> {
if (hasCompileSupport()) {
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/InvokePolymorphicTypesTest.java b/src/test/java/com/android/tools/r8/cf/methodhandles/InvokePolymorphicTypesTest.java
index b218c6f..58de21e 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/InvokePolymorphicTypesTest.java
+++ b/src/test/java/com/android/tools/r8/cf/methodhandles/InvokePolymorphicTypesTest.java
@@ -63,7 +63,6 @@
testForD8(parameters.getBackend())
.addProgramClasses(Data.class, TestClass.class)
.setMinApi(parameters.getApiLevel())
- .mapUnsupportedFeaturesToWarnings()
.run(parameters.getRuntime(), TestClass.class)
.applyIf(
hasCompileSupport,
@@ -129,7 +128,6 @@
double.class,
String.class,
Object.class)))
- .mapUnsupportedFeaturesToWarnings()
.allowDiagnosticMessages()
.run(parameters.getRuntime(), TestClass.class)
.applyIf(
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/MethodHandleTestRunner.java b/src/test/java/com/android/tools/r8/cf/methodhandles/MethodHandleTestRunner.java
index cfa73314..3189837 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/MethodHandleTestRunner.java
+++ b/src/test/java/com/android/tools/r8/cf/methodhandles/MethodHandleTestRunner.java
@@ -77,7 +77,6 @@
.setMinApi(parameters.getApiLevel())
.addProgramClasses(getInputClasses())
.addProgramClassFileData(getTransformedClasses())
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), CLASS.getName())
.apply(this::checkResult);
@@ -105,7 +104,6 @@
.addLibraryFiles(ToolHelper.getMostRecentAndroidJar())
.addKeepMainRule(MethodHandleTest.class)
.allowDiagnosticMessages()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), CLASS.getCanonicalName())
.apply(this::checkResult);
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/VarHandleTest.java b/src/test/java/com/android/tools/r8/cf/methodhandles/VarHandleTest.java
index ccb901d..ce9cae3 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/VarHandleTest.java
+++ b/src/test/java/com/android/tools/r8/cf/methodhandles/VarHandleTest.java
@@ -93,7 +93,6 @@
testForD8()
.addProgramFiles(getProgramInputs())
.setMinApi(parameters.getApiLevel())
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(
diagnostics -> {
if (hasInvokePolymorphicCompileSupport()) {
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/fields/ClassFieldMethodHandleTest.java b/src/test/java/com/android/tools/r8/cf/methodhandles/fields/ClassFieldMethodHandleTest.java
index 062f22e..daf61c4 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/fields/ClassFieldMethodHandleTest.java
+++ b/src/test/java/com/android/tools/r8/cf/methodhandles/fields/ClassFieldMethodHandleTest.java
@@ -72,7 +72,6 @@
.addProgramClasses(C.class)
.addProgramClassFileData(getTransformedMain())
.setMinApi(parameters.getApiLevel())
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), Main.class)
.apply(this::checkResult);
@@ -87,7 +86,6 @@
.addProgramClassFileData(getTransformedMain())
.setMinApi(parameters.getApiLevel())
.allowDiagnosticMessages()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), Main.class)
.apply(this::checkResult);
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/fields/InterfaceFieldMethodHandleTest.java b/src/test/java/com/android/tools/r8/cf/methodhandles/fields/InterfaceFieldMethodHandleTest.java
index 3d62b40..927b27e 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/fields/InterfaceFieldMethodHandleTest.java
+++ b/src/test/java/com/android/tools/r8/cf/methodhandles/fields/InterfaceFieldMethodHandleTest.java
@@ -75,7 +75,6 @@
.addProgramClasses(I.class)
.addProgramClassFileData(getTransformedMain())
.setMinApi(parameters.getApiLevel())
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), Main.class)
.apply(this::checkResult);
@@ -90,7 +89,6 @@
.addProgramClassFileData(getTransformedMain())
.setMinApi(parameters.getApiLevel())
.allowDiagnosticMessages()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), Main.class)
.apply(this::checkResult);
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/invokespecial/InvokeSpecialMethodHandleTest.java b/src/test/java/com/android/tools/r8/cf/methodhandles/invokespecial/InvokeSpecialMethodHandleTest.java
index 459ce08..7453e9b 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/invokespecial/InvokeSpecialMethodHandleTest.java
+++ b/src/test/java/com/android/tools/r8/cf/methodhandles/invokespecial/InvokeSpecialMethodHandleTest.java
@@ -75,7 +75,6 @@
.addProgramClasses(C.class, Main.class)
.addProgramClassFileData(getTransformedD())
.setMinApi(parameters.getApiLevel())
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), Main.class)
.apply(this::checkResult);
@@ -90,7 +89,6 @@
.addProgramClassFileData(getTransformedD())
.setMinApi(parameters.getApiLevel())
.allowDiagnosticMessages()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(this::checkDiagnostics)
.run(parameters.getRuntime(), Main.class)
.apply(this::checkResult);
diff --git a/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java b/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
index eab1504..a1c821e 100644
--- a/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
@@ -45,7 +45,6 @@
.addProgramFiles(ToolHelper.DEPS)
.setMinApi(AndroidApiLevel.B)
.disableDesugaring()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(
diagnostics ->
diagnostics
diff --git a/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java b/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java
index cf34d5d..a7acf9e 100644
--- a/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java
+++ b/src/test/java/com/android/tools/r8/code/invokedynamic/InvokeCustomRuntimeErrorTest.java
@@ -88,7 +88,6 @@
.addProgramClassFileData(getTransformedTestClass())
.setMinApi(parameters.getApiLevel())
.disableDesugaring()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(
diagnostics ->
diagnostics
@@ -109,7 +108,6 @@
.addProgramClasses(I.class, A.class)
.addProgramClassFileData(getTransformedTestClass())
.setMinApi(minApi)
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(
diagnostics -> {
if (expectedSuccess) {
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicHolderTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicHolderTest.java
index 8c1d8f1..9525784 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicHolderTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicHolderTest.java
@@ -104,7 +104,6 @@
.setMinApi(parameters.getApiLevel())
.addKeepMainRule(Main.class)
.allowDiagnosticWarningMessages()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(
diagnostics -> {
if (parameters.isDexRuntime()) {
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/SharedBootstrapMethodConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/SharedBootstrapMethodConstantDynamicTest.java
index 87f3382..486b958 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/SharedBootstrapMethodConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/SharedBootstrapMethodConstantDynamicTest.java
@@ -166,7 +166,6 @@
.setMinApi(parameters.getApiLevel())
.addKeepMainRule(MAIN_CLASS)
.allowDiagnosticMessages()
- .mapUnsupportedFeaturesToWarnings()
.compileWithExpectedDiagnostics(
diagnostics -> {
diagnostics
diff --git a/src/test/java/com/android/tools/r8/diagnostics/UnsupportedFeaturesDiagnosticsTest.java b/src/test/java/com/android/tools/r8/diagnostics/UnsupportedFeaturesDiagnosticsTest.java
index 8133dc2..1901f24 100644
--- a/src/test/java/com/android/tools/r8/diagnostics/UnsupportedFeaturesDiagnosticsTest.java
+++ b/src/test/java/com/android/tools/r8/diagnostics/UnsupportedFeaturesDiagnosticsTest.java
@@ -68,7 +68,7 @@
parameters.assertNoneRuntime();
}
- @Test(expected = CompilationFailedException.class)
+ @Test
public void testInvokeLambdaMetafactory() throws Exception {
testForD8()
.addProgramClassesAndInnerClasses(LambdaMetafactoryTest.class)
@@ -77,8 +77,8 @@
.compileWithExpectedDiagnostics(
diagnostics -> {
diagnostics
- .assertOnlyErrors()
- .assertErrorsMatch(
+ .assertOnlyWarnings()
+ .assertWarningsMatch(
allOf(
matches("invoke-custom"),
diagnosticMessage(startsWith(AGP_INVOKE_CUSTOM))));