diff options
Diffstat (limited to 'java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java')
-rw-r--r-- | java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java b/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java index c6fd0b4..2437a19 100644 --- a/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java +++ b/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java @@ -73,6 +73,14 @@ class CoreLibrarySupport { : internalName; } + /** + * Returns {@code true} for java.* classes or interfaces that are subtypes of emulated interfaces. + * Note that implies that this method always returns {@code false} for user-written classes. + */ + public boolean isEmulatedCoreClassOrInterface(String internalName) { + return getEmulatedCoreClassOrInterface(internalName) != null; + } + public boolean isEmulatedCoreLibraryInvocation( int opcode, String owner, String name, String desc, boolean itf) { return getEmulatedCoreLibraryInvocationTarget(opcode, owner, name, desc, itf) != null; @@ -81,9 +89,6 @@ class CoreLibrarySupport { @Nullable public Class<?> getEmulatedCoreLibraryInvocationTarget( int opcode, String owner, String name, String desc, boolean itf) { - if (owner.contains("$$Lambda$") || owner.endsWith("$$CC")) { - return null; // regular desugaring handles invocations on generated classes, no emulation - } Class<?> clazz = getEmulatedCoreClassOrInterface(owner); if (clazz == null) { return null; @@ -101,6 +106,10 @@ class CoreLibrarySupport { } private Class<?> getEmulatedCoreClassOrInterface(String internalName) { + if (internalName.contains("$$Lambda$") || internalName.endsWith("$$CC")) { + // Regular desugaring handles generated classes, no emulation is needed + return null; + } { String unprefixedOwner = rewriter.unprefix(internalName); if (!unprefixedOwner.startsWith("java/util/") || isRenamedCoreLibrary(unprefixedOwner)) { |