aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar kmb <kmb@google.com>2018-02-07 16:27:17 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-07 16:28:59 -0800
commit154317e1269b1925722754291a8c7181ccd005f6 (patch)
tree97e1d71059ff407c69b427d277491d1edadfaa37
parent73639531380d7c3171f0376bdeb1a43829346229 (diff)
Rename generated core classes during core library desugaring
RELNOTES: None. PiperOrigin-RevId: 184915177
-rw-r--r--src/test/java/com/google/devtools/build/android/desugar/CoreLibrarySupportTest.java4
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java9
2 files changed, 12 insertions, 1 deletions
diff --git a/src/test/java/com/google/devtools/build/android/desugar/CoreLibrarySupportTest.java b/src/test/java/com/google/devtools/build/android/desugar/CoreLibrarySupportTest.java
index d7fcad463c..089e23174c 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/CoreLibrarySupportTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/CoreLibrarySupportTest.java
@@ -36,6 +36,8 @@ public class CoreLibrarySupportTest {
assertThat(support.isRenamedCoreLibrary("java/time/X")).isTrue();
assertThat(support.isRenamedCoreLibrary("java/time/y/X")).isTrue();
assertThat(support.isRenamedCoreLibrary("java/io/X")).isFalse();
+ assertThat(support.isRenamedCoreLibrary("java/io/X$$CC")).isTrue();
+ assertThat(support.isRenamedCoreLibrary("java/io/X$$Lambda$17")).isTrue();
assertThat(support.isRenamedCoreLibrary("com/google/X")).isFalse();
}
@@ -50,6 +52,8 @@ public class CoreLibrarySupportTest {
assertThat(support.isRenamedCoreLibrary("__/java/time/X")).isTrue();
assertThat(support.isRenamedCoreLibrary("__/java/time/y/X")).isTrue();
assertThat(support.isRenamedCoreLibrary("__/java/io/X")).isFalse();
+ assertThat(support.isRenamedCoreLibrary("__/java/io/X$$CC")).isTrue();
+ assertThat(support.isRenamedCoreLibrary("__/java/io/X$$Lambda$17")).isTrue();
assertThat(support.isRenamedCoreLibrary("com/google/X")).isFalse();
}
@Test
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java
index 56e5f18b30..c6fd0b4817 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java
@@ -56,7 +56,14 @@ class CoreLibrarySupport {
public boolean isRenamedCoreLibrary(String internalName) {
String unprefixedName = rewriter.unprefix(internalName);
- return renamedPrefixes.stream().anyMatch(prefix -> unprefixedName.startsWith(prefix));
+ if (!unprefixedName.startsWith("java/")) {
+ return false; // shortcut
+ }
+ // Rename any classes desugar might generate under java/ (for emulated interfaces) as well as
+ // configured prefixes
+ return unprefixedName.contains("$$Lambda$")
+ || unprefixedName.endsWith("$$CC")
+ || renamedPrefixes.stream().anyMatch(prefix -> unprefixedName.startsWith(prefix));
}
public String renameCoreLibrary(String internalName) {