Version 1.4.32
Cherry pick: Don't warn on missing desugared java8 methods
CL: https://r8-review.googlesource.com/c/r8/+/33324
Cherry pick: Fix restarting of internal tester
CL: https://r8-review.googlesource.com/c/r8/+/33323
Bug: 123242448
Change-Id: Ic7376e67abb64793d45540565100eb14f27267ec
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index cf756ef..ec1ec47 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
// This field is accessed from release scripts using simple pattern matching.
// Therefore, changing this field could break our release scripts.
- public static final String LABEL = "1.4.31";
+ public static final String LABEL = "1.4.32";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
index 4e91c62..a9a571f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
@@ -151,6 +151,10 @@
InvokeStatic invokeStatic = instruction.asInvokeStatic();
DexMethod method = invokeStatic.getInvokedMethod();
DexClass clazz = findDefinitionFor(method.holder);
+ if (Java8MethodRewriter.hasJava8MethodRewritePrefix(method.holder)) {
+ // We did not create this code yet, but it will not require rewriting.
+ continue;
+ }
if (clazz == null) {
// NOTE: leave unchanged those calls to undefined targets. This may lead to runtime
// exception but we can not report it as error since it can also be the intended
diff --git a/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java b/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
index 053ac5c..4d5ade8 100644
--- a/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.desugar;
-import com.android.tools.r8.D8TestCompileResult;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.utils.AndroidApiLevel;
import java.nio.file.Path;
@@ -34,29 +33,27 @@
String jvmOutput = testForJvm()
.addTestClasspath()
.run(MergeRun.class).getStdOut();
-
// See b/123242448
Path zip1 = temp.newFile("first.zip").toPath();
Path zip2 = temp.newFile("second.zip").toPath();
- Path zip3 = temp.newFile("third.zip").toPath();
- D8TestCompileResult result1 =
- testForD8()
- .setMinApi(AndroidApiLevel.L)
- .addProgramClasses(MergeRun.class, MergeInputB.class)
- .compile()
- .writeToZip(zip1);
- D8TestCompileResult result2 =
- testForD8()
- .setMinApi(AndroidApiLevel.L)
- .addProgramClasses(MergeInputA.class)
- .compile()
- .writeToZip(zip2);
-
+ testForD8()
+ .setMinApi(AndroidApiLevel.L)
+ .addProgramClasses(MergeRun.class, MergeInputB.class)
+ .compile()
+ .assertNoMessages()
+ .writeToZip(zip1);
+ testForD8()
+ .setMinApi(AndroidApiLevel.L)
+ .addProgramClasses(MergeInputA.class)
+ .compile()
+ .assertNoMessages()
+ .writeToZip(zip2);
testForD8()
.addProgramFiles(zip1, zip2)
.setMinApi(AndroidApiLevel.L)
.compile()
+ .assertNoMessages()
.run(MergeRun.class)
.assertSuccessWithOutput(jvmOutput);
}
diff --git a/tools/internal_test.py b/tools/internal_test.py
index 4713daf..8a99fbe 100755
--- a/tools/internal_test.py
+++ b/tools/internal_test.py
@@ -229,6 +229,10 @@
if get_magic_file_exists(READY_FOR_TESTING):
git_hash = get_magic_file_content(READY_FOR_TESTING)
checked_out = git_checkout(git_hash)
+ # If the script changed, we need to restart now to get correct commands
+ # Note that we have not removed the READY_FOR_TESTING yet, so if we
+ # execv we will pick up the same version.
+ restart_if_new_version(own_content)
# Sanity check, if this does not succeed stop.
if checked_out != git_hash:
log('Inconsistent state: %s %s' % (git_hash, checked_out))