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() {
|