aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
diff options
context:
space:
mode:
authorGravatar Kevin Bierhoff <kmb@google.com>2017-03-23 00:39:57 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-23 09:50:29 +0000
commitf4bcdc19d7f7156d059bee154f2d9dca8d729db7 (patch)
tree4b4515804ddd58892ce72f18e5b4a18ddcc99501 /src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
parenta2248b8e553bbcd346d8cf03f5f81d9af3c947f2 (diff)
Avoid factory methods when desugaring lambda expressions and this:: method references for android
RELNOTES: no factory methods generated for lambda expressions on android -- PiperOrigin-RevId: 150952237 MOS_MIGRATED_REVID=150952237
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
index e942c95b6e..dea633904f 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
@@ -117,10 +117,16 @@ class LambdaClassFixer extends ClassVisitor {
}
if (FACTORY_METHOD_NAME.equals(name)) {
hasFactory = true;
+ if (!lambdaInfo.needFactory()) {
+ return null; // drop generated factory method if we won't call it
+ }
access &= ~Opcodes.ACC_PRIVATE; // make factory method accessible
} else if ("<init>".equals(name)) {
this.desc = desc;
this.signature = signature;
+ if (!lambdaInfo.needFactory() && !desc.startsWith("()")) {
+ access &= ~Opcodes.ACC_PRIVATE; // make constructor accessible if we'll call it directly
+ }
}
MethodVisitor methodVisitor =
new LambdaClassMethodRewriter(super.visitMethod(access, name, desc, signature, exceptions));