aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
diff options
context:
space:
mode:
authorGravatar kmb <kmb@google.com>2018-03-16 18:52:15 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-16 18:53:30 -0700
commit44a26afb091f2d23d68bcad53e45a319b299867a (patch)
treed9ee0a05e2c167dbdbe02db2cab1fb475a825643 /src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
parent4f07816f02172949553debbb64123de8ffb0fbc1 (diff)
Reflect core library moves in super calls, even in default method stubs. Always generate default method stubs for emulated methods.
RELNOTES: None. PiperOrigin-RevId: 189423933
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
index 77db915f4b..381a3443c7 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.android.desugar;
import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import org.objectweb.asm.ClassVisitor;
@@ -65,9 +66,13 @@ public class CoreLibraryInvocationRewriter extends ClassVisitor {
}
if (opcode == Opcodes.INVOKESTATIC || opcode == Opcodes.INVOKESPECIAL) {
- checkArgument(itf, "Expected interface to rewrite %s.%s : %s", owner, name, desc);
- owner = InterfaceDesugaring.getCompanionClassName(coreInterfaceName);
+ checkArgument(itf || opcode == Opcodes.INVOKESPECIAL,
+ "Expected interface to rewrite %s.%s : %s", owner, name, desc);
+ owner = coreInterface.isInterface()
+ ? InterfaceDesugaring.getCompanionClassName(coreInterfaceName)
+ : checkNotNull(support.getMoveTarget(coreInterfaceName, name));
} else {
+ checkState(coreInterface.isInterface());
owner = coreInterfaceName + "$$Dispatch";
}