diff options
author | Kevin Bierhoff <kmb@google.com> | 2017-03-23 00:39:57 +0000 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2017-03-27 13:16:03 -0700 |
commit | a0100199b92c84aee1d7b1e1cad1df62580f6420 (patch) | |
tree | b126211add1767ae45523cb0129ce60b8420257b /java/com/google/devtools/build/android/desugar/LambdaClassFixer.java | |
parent | 172122c125f4b4b3eb402b0d5606a7862a28fd47 (diff) | |
download | desugar-a0100199b92c84aee1d7b1e1cad1df62580f6420.tar.gz |
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
GitOrigin-RevId: f4bcdc19d7f7156d059bee154f2d9dca8d729db7
Change-Id: I509b9af68b0a55f20d32c7133eacf4229c76467e
Diffstat (limited to 'java/com/google/devtools/build/android/desugar/LambdaClassFixer.java')
-rw-r--r-- | java/com/google/devtools/build/android/desugar/LambdaClassFixer.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java b/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java index e942c95..dea6339 100644 --- a/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java +++ b/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)); |