diff options
author | Kevin Bierhoff <kmb@google.com> | 2017-03-23 00:39:57 +0000 |
---|---|---|
committer | Yue Gan <yueg@google.com> | 2017-03-23 09:50:29 +0000 |
commit | f4bcdc19d7f7156d059bee154f2d9dca8d729db7 (patch) | |
tree | 4b4515804ddd58892ce72f18e5b4a18ddcc99501 /src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java | |
parent | a2248b8e553bbcd346d8cf03f5f81d9af3c947f2 (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.java | 6 |
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)); |