No desugaring for AssertionError when desugaring is turned off
Bug: b/247596495
Change-Id: I93558f5b32daa4bc4bf095535562bc78e35ce2ac
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 3f1bdb4..f85f8d5 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -184,7 +184,9 @@
this.printer = printer;
this.codeRewriter = new CodeRewriter(appView);
this.assertionErrorTwoArgsConstructorRewriter =
- new AssertionErrorTwoArgsConstructorRewriter(appView);
+ appView.options().desugarState.isOn()
+ ? new AssertionErrorTwoArgsConstructorRewriter(appView)
+ : null;
this.classInitializerDefaultsOptimization =
new ClassInitializerDefaultsOptimization(appView, this);
this.stringOptimizer = new StringOptimizer(appView);
@@ -1341,9 +1343,11 @@
timing.begin("Natural Int Loop Remover");
naturalIntLoopRemover.run(appView, code);
timing.end();
- timing.begin("Rewrite AssertionError");
- assertionErrorTwoArgsConstructorRewriter.rewrite(code, methodProcessingContext);
- timing.end();
+ if (assertionErrorTwoArgsConstructorRewriter != null) {
+ timing.begin("Rewrite AssertionError");
+ assertionErrorTwoArgsConstructorRewriter.rewrite(code, methodProcessingContext);
+ timing.end();
+ }
timing.begin("Run CSE");
codeRewriter.commonSubexpressionElimination(code);
timing.end();
diff --git a/src/test/java/com/android/tools/r8/rewrite/assertionerror/AssertionErrorRewriteTest.java b/src/test/java/com/android/tools/r8/rewrite/assertionerror/AssertionErrorRewriteTest.java
index 14c8ffd..2fa9d11 100644
--- a/src/test/java/com/android/tools/r8/rewrite/assertionerror/AssertionErrorRewriteTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/assertionerror/AssertionErrorRewriteTest.java
@@ -59,12 +59,11 @@
.inspect(
inspector ->
assertTrue(
- parameters.getApiLevel().isLessThan(AndroidApiLevel.K)
- || inspector.allClasses().stream()
- .noneMatch(
- clazz ->
- SyntheticItemsTestUtils.isExternalSynthetic(
- clazz.getFinalReference()))))
+ inspector.allClasses().stream()
+ .noneMatch(
+ clazz ->
+ SyntheticItemsTestUtils.isExternalSynthetic(
+ clazz.getFinalReference()))))
.run(parameters.getRuntime(), Main.class)
// None of the VMs we have for testing is missing the two args constructor.
.assertSuccessWithOutputLines("message", "java.lang.RuntimeException: cause message");