< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java

Print this page

 665             this.tree = tree;
 666         }
 667 
 668         JCExpression lambda() {
 669             int prevPos = make.pos;
 670             try {
 671                 make.at(tree);
 672 
 673                 //body generation - this can be either a method call or a
 674                 //new instance creation expression, depending on the member reference kind
 675                 VarSymbol rcvr = addParametersReturnReceiver();
 676                 JCExpression expr = (tree.getMode() == ReferenceMode.INVOKE)
 677                         ? expressionInvoke(rcvr)
 678                         : expressionNew();
 679 
 680                 JCLambda slam = make.Lambda(params.toList(), expr);
 681                 slam.target = tree.target;
 682                 slam.owner = tree.owner;
 683                 slam.type = tree.type;
 684                 slam.pos = tree.pos;

 685                 slam.wasMethodReference = true;
 686                 if (receiverExpression != null) {
 687                     // use a let expression so that the receiver expression is evaluated eagerly
 688                     return make.at(tree.pos).LetExpr(
 689                             make.VarDef(rcvr, receiverExpression), slam).setType(tree.type);
 690                 } else {
 691                     return slam;
 692                 }
 693             } finally {
 694                 make.at(prevPos);
 695             }
 696         }
 697 
 698         /**
 699          * Generate the parameter list for the converted member reference.
 700          *
 701          * @return The receiver variable symbol, if any
 702          */
 703         VarSymbol addParametersReturnReceiver() {
 704             List<Type> descPTypes = tree.getDescriptorType(types).getParameterTypes();

 665             this.tree = tree;
 666         }
 667 
 668         JCExpression lambda() {
 669             int prevPos = make.pos;
 670             try {
 671                 make.at(tree);
 672 
 673                 //body generation - this can be either a method call or a
 674                 //new instance creation expression, depending on the member reference kind
 675                 VarSymbol rcvr = addParametersReturnReceiver();
 676                 JCExpression expr = (tree.getMode() == ReferenceMode.INVOKE)
 677                         ? expressionInvoke(rcvr)
 678                         : expressionNew();
 679 
 680                 JCLambda slam = make.Lambda(params.toList(), expr);
 681                 slam.target = tree.target;
 682                 slam.owner = tree.owner;
 683                 slam.type = tree.type;
 684                 slam.pos = tree.pos;
 685                 slam.codeModel = tree.codeModel;
 686                 slam.wasMethodReference = true;
 687                 if (receiverExpression != null) {
 688                     // use a let expression so that the receiver expression is evaluated eagerly
 689                     return make.at(tree.pos).LetExpr(
 690                             make.VarDef(rcvr, receiverExpression), slam).setType(tree.type);
 691                 } else {
 692                     return slam;
 693                 }
 694             } finally {
 695                 make.at(prevPos);
 696             }
 697         }
 698 
 699         /**
 700          * Generate the parameter list for the converted member reference.
 701          *
 702          * @return The receiver variable symbol, if any
 703          */
 704         VarSymbol addParametersReturnReceiver() {
 705             List<Type> descPTypes = tree.getDescriptorType(types).getParameterTypes();
< prev index next >