1.1 --- a/src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Tue Jan 15 13:03:11 2013 -0800 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Wed Jan 16 16:27:01 2013 +0000 1.3 @@ -302,6 +302,7 @@ 1.4 case UNBOUND: /** Type :: instMethod */ 1.5 case STATIC: /** Type :: staticMethod */ 1.6 case TOPLEVEL: /** Top level :: new */ 1.7 + case ARRAY_CTOR: /** ArrayType :: new */ 1.8 init = null; 1.9 break; 1.10 1.11 @@ -645,24 +646,33 @@ 1.12 * to the first bridge synthetic parameter 1.13 */ 1.14 private JCExpression bridgeExpressionNew() { 1.15 - JCExpression encl = null; 1.16 - switch (tree.kind) { 1.17 - case UNBOUND: 1.18 - case IMPLICIT_INNER: 1.19 - encl = make.Ident(params.first()); 1.20 + if (tree.kind == ReferenceKind.ARRAY_CTOR) { 1.21 + //create the array creation expression 1.22 + JCNewArray newArr = make.NewArray(make.Type(types.elemtype(tree.getQualifierExpression().type)), 1.23 + List.of(make.Ident(params.first())), 1.24 + null); 1.25 + newArr.type = tree.getQualifierExpression().type; 1.26 + return newArr; 1.27 + } else { 1.28 + JCExpression encl = null; 1.29 + switch (tree.kind) { 1.30 + case UNBOUND: 1.31 + case IMPLICIT_INNER: 1.32 + encl = make.Ident(params.first()); 1.33 + } 1.34 + 1.35 + //create the instance creation expression 1.36 + JCNewClass newClass = make.NewClass(encl, 1.37 + List.<JCExpression>nil(), 1.38 + make.Type(tree.getQualifierExpression().type), 1.39 + convertArgs(tree.sym, args.toList(), tree.varargsElement), 1.40 + null); 1.41 + newClass.constructor = tree.sym; 1.42 + newClass.constructorType = tree.sym.erasure(types); 1.43 + newClass.type = tree.getQualifierExpression().type; 1.44 + setVarargsIfNeeded(newClass, tree.varargsElement); 1.45 + return newClass; 1.46 } 1.47 - 1.48 - //create the instance creation expression 1.49 - JCNewClass newClass = make.NewClass(encl, 1.50 - List.<JCExpression>nil(), 1.51 - make.Type(tree.getQualifierExpression().type), 1.52 - convertArgs(tree.sym, args.toList(), tree.varargsElement), 1.53 - null); 1.54 - newClass.constructor = tree.sym; 1.55 - newClass.constructorType = tree.sym.erasure(types); 1.56 - newClass.type = tree.getQualifierExpression().type; 1.57 - setVarargsIfNeeded(newClass, tree.varargsElement); 1.58 - return newClass; 1.59 } 1.60 1.61 private VarSymbol addParameter(String name, Type p, boolean genArg) {