--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Thu Oct 17 20:27:44 2019 +0100
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Thu Oct 17 20:53:35 2019 +0100
@@ -1093,7 +1093,7 @@
MethodSymbol samSym = (MethodSymbol) types.findDescriptorSymbol(tree.target.tsym);
List<LoadableConstant> staticArgs = List.of(
typeToMethodType(samSym.type),
- ((MethodSymbol)refSym).asHandle(),
+ refSym.asHandle(),
typeToMethodType(tree.getDescriptorType(types)));
//computed indy arg types
@@ -1709,8 +1709,9 @@
}
break;
case VARDEF:
- if (((JCVariableDecl)block.tree).sym == sym &&
- sym.owner.kind == MTH) { //only locals are captured
+ if ((((JCVariableDecl)block.tree).sym == sym &&
+ sym.owner.kind == MTH) || //only locals are captured
+ (block.locals != null && block.locals.contains(sym))) {
return currentDepth > depth ? null : block.tree;
}
break;