| 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 ff3e351996..f857e61d1e 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 |
| @@ -93,7 +93,7 @@ class LambdaClassFixer extends ClassVisitor { |
| checkArgument(BitFlags.noneSet(access, Opcodes.ACC_INTERFACE), "Not a class: %s", name); |
| checkState(this.originalInternalName == null, "not intended for reuse but reused for %s", name); |
| originalInternalName = name; |
| - hasState = false; |
| + hasState = true; |
| hasFactory = false; |
| desc = null; |
| this.signature = null; |
| @@ -136,7 +136,7 @@ class LambdaClassFixer extends ClassVisitor { |
| } else if ("<init>".equals(name)) { |
| this.desc = desc; |
| this.signature = signature; |
| - if (!lambdaInfo.needFactory() && !desc.startsWith("()")) { |
| + if (!lambdaInfo.needFactory()) { |
| access &= ~Opcodes.ACC_PRIVATE; // make constructor accessible if we'll call it directly |
| } |
| } |
| @@ -156,10 +156,6 @@ class LambdaClassFixer extends ClassVisitor { |
| |
| @Override |
| public void visitEnd() { |
| - checkState( |
| - !hasState || hasFactory, |
| - "Expected factory method for capturing lambda %s", |
| - getInternalName()); |
| if (!hasState) { |
| checkState( |
| signature == null, |
| diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java |
| index 8f90d25ff5..f5ed6d524a 100644 |
| --- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java |
| +++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java |
| @@ -423,8 +423,7 @@ class LambdaDesugaring extends ClassVisitor { |
| String lambdaClassName = internalName + "$$Lambda$" + (lambdaCount++); |
| Type[] capturedTypes = Type.getArgumentTypes(desc); |
| boolean needFactory = |
| - capturedTypes.length != 0 |
| - && !attemptAllocationBeforeArgumentLoads(lambdaClassName, capturedTypes); |
| + !attemptAllocationBeforeArgumentLoads(lambdaClassName, capturedTypes); |
| lambdas.generateLambdaClass( |
| internalName, |
| LambdaInfo.create( |
| @@ -435,7 +434,7 @@ class LambdaDesugaring extends ClassVisitor { |
| bridgeInfo.bridgeMethod()), |
| bsmMethod, |
| args); |
| - if (desc.startsWith("()")) { |
| + if (false) { |
| // For stateless lambda classes we'll generate a singleton instance that we can just load |
| checkState(capturedTypes.length == 0); |
| super.visitFieldInsn( |
| @@ -493,7 +492,6 @@ class LambdaDesugaring extends ClassVisitor { |
| * @return {@code true} if we were able to insert a new/dup, {@code false} otherwise |
| */ |
| private boolean attemptAllocationBeforeArgumentLoads(String internalName, Type[] paramTypes) { |
| - checkArgument(paramTypes.length > 0, "Expected at least one param for %s", internalName); |
| // Walk backwards past loads corresponding to constructor arguments to find the instruction |
| // after which we need to insert our NEW/DUP pair |
| AbstractInsnNode insn = instructions.getLast(); |