From 154317e1269b1925722754291a8c7181ccd005f6 Mon Sep 17 00:00:00 2001 From: kmb Date: Wed, 7 Feb 2018 16:27:17 -0800 Subject: Rename generated core classes during core library desugaring RELNOTES: None. PiperOrigin-RevId: 184915177 --- .../devtools/build/android/desugar/CoreLibrarySupportTest.java | 4 ++++ .../devtools/build/android/desugar/CoreLibrarySupport.java | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) 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) { -- cgit v1.2.3