< prev index next >

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

Print this page




 287                     decls(tree.def).length() == 1;
 288         }
 289         //where
 290             private List<JCTree> decls(JCClassDecl decl) {
 291                 ListBuffer<JCTree> decls = new ListBuffer<>();
 292                 for (JCTree t : decl.defs) {
 293                     if (t.hasTag(METHODDEF)) {
 294                         JCMethodDecl md = (JCMethodDecl)t;
 295                         if ((md.getModifiers().flags & GENERATEDCONSTR) == 0) {
 296                             decls.add(md);
 297                         }
 298                     } else {
 299                         decls.add(t);
 300                     }
 301                 }
 302                 return decls.toList();
 303             }
 304 
 305         @Override
 306         List<JCLambda> rewrite(JCNewClass oldTree){
 307             JCMethodDecl md = (JCMethodDecl)decls(oldTree.def).head;
 308             List<JCVariableDecl> params = md.params;
 309             JCBlock body = md.body;
 310             JCLambda newTree = make.at(oldTree).Lambda(params, body);
 311             return List.of(newTree);
 312         }
 313 
 314         @Override
 315         void process (JCNewClass oldTree, JCLambda newTree, boolean hasErrors){
 316             if (!hasErrors) {
 317                 log.warning(oldTree.def, Warnings.PotentialLambdaFound);
 318             }
 319         }
 320     }
 321 
 322     /**
 323      * This analyzer checks if generic method call has redundant type arguments.
 324      */
 325     class RedundantTypeArgAnalyzer extends StatementAnalyzer<JCMethodInvocation, JCMethodInvocation> {
 326 
 327         RedundantTypeArgAnalyzer() {




 287                     decls(tree.def).length() == 1;
 288         }
 289         //where
 290             private List<JCTree> decls(JCClassDecl decl) {
 291                 ListBuffer<JCTree> decls = new ListBuffer<>();
 292                 for (JCTree t : decl.defs) {
 293                     if (t.hasTag(METHODDEF)) {
 294                         JCMethodDecl md = (JCMethodDecl)t;
 295                         if ((md.getModifiers().flags & GENERATEDCONSTR) == 0) {
 296                             decls.add(md);
 297                         }
 298                     } else {
 299                         decls.add(t);
 300                     }
 301                 }
 302                 return decls.toList();
 303             }
 304 
 305         @Override
 306         List<JCLambda> rewrite(JCNewClass oldTree){
 307             JCMethodDecl md = (JCMethodDecl)copier.copy(decls(oldTree.def).head);
 308             List<JCVariableDecl> params = md.params;
 309             JCBlock body = md.body;
 310             JCLambda newTree = make.at(oldTree).Lambda(params, body);
 311             return List.of(newTree);
 312         }
 313 
 314         @Override
 315         void process (JCNewClass oldTree, JCLambda newTree, boolean hasErrors){
 316             if (!hasErrors) {
 317                 log.warning(oldTree.def, Warnings.PotentialLambdaFound);
 318             }
 319         }
 320     }
 321 
 322     /**
 323      * This analyzer checks if generic method call has redundant type arguments.
 324      */
 325     class RedundantTypeArgAnalyzer extends StatementAnalyzer<JCMethodInvocation, JCMethodInvocation> {
 326 
 327         RedundantTypeArgAnalyzer() {


< prev index next >