diff --git a/java/src/main/java/eu/solven/cleanthat/engine/java/refactorer/mutators/UnnecessaryLambdaEnclosingParameters.java b/java/src/main/java/eu/solven/cleanthat/engine/java/refactorer/mutators/UnnecessaryLambdaEnclosingParameters.java index c107b9a97..0fcabf4e4 100644 --- a/java/src/main/java/eu/solven/cleanthat/engine/java/refactorer/mutators/UnnecessaryLambdaEnclosingParameters.java +++ b/java/src/main/java/eu/solven/cleanthat/engine/java/refactorer/mutators/UnnecessaryLambdaEnclosingParameters.java @@ -1,5 +1,5 @@ /* - * Copyright 2023 Benoit Lacelle - SOLVEN + * Copyright 2023-2025 Benoit Lacelle - SOLVEN * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,11 +17,12 @@ import java.util.Set; +import com.github.javaparser.ast.expr.Expression; import com.github.javaparser.ast.expr.LambdaExpr; import com.google.common.collect.ImmutableSet; import eu.solven.cleanthat.engine.java.IJdkVersionConstants; -import eu.solven.cleanthat.engine.java.refactorer.AJavaparserNodeMutator; +import eu.solven.cleanthat.engine.java.refactorer.AJavaparserExprMutator; import eu.solven.cleanthat.engine.java.refactorer.NodeAndSymbolSolver; /** @@ -29,7 +30,7 @@ * * @author Benoit Lacelle */ -public class UnnecessaryLambdaEnclosingParameters extends AJavaparserNodeMutator { +public class UnnecessaryLambdaEnclosingParameters extends AJavaparserExprMutator { @Override public String minimalJavaVersion() { @@ -48,24 +49,18 @@ public boolean isDraft() { } @Override - protected boolean processNotRecursively(NodeAndSymbolSolver node) { + protected boolean processExpression(NodeAndSymbolSolver node) { if (!(node.getNode() instanceof LambdaExpr)) { return false; } var lambdaExpr = (LambdaExpr) node.getNode(); - if (lambdaExpr.getParameters().size() != 1 || !lambdaExpr.isEnclosingParameters()) { - return false; - } - - var param = lambdaExpr.getParameters().get(0); - if (param.getType() != null) { - return false; - } - - var newLambdaExpr = lambdaExpr.clone(); - newLambdaExpr.setEnclosingParameters(false); - return tryReplace(lambdaExpr, newLambdaExpr); + if (lambdaExpr.getParameters().size() != 1 || lambdaExpr.isExplicitlyTyped()) { + return false; + } - } + var newLambdaExpr = lambdaExpr.clone(); + newLambdaExpr.setEnclosingParameters(false); + return tryReplace(lambdaExpr, newLambdaExpr); + } } diff --git a/java/src/test/java/eu/solven/cleanthat/engine/java/refactorer/cases/do_not_format_me/TestUnnecessaryLambdaEnclosingParametersCases.java b/java/src/test/java/eu/solven/cleanthat/engine/java/refactorer/cases/do_not_format_me/TestUnnecessaryLambdaEnclosingParametersCases.java index 73b4f5ede..e78884350 100644 --- a/java/src/test/java/eu/solven/cleanthat/engine/java/refactorer/cases/do_not_format_me/TestUnnecessaryLambdaEnclosingParametersCases.java +++ b/java/src/test/java/eu/solven/cleanthat/engine/java/refactorer/cases/do_not_format_me/TestUnnecessaryLambdaEnclosingParametersCases.java @@ -25,7 +25,7 @@ public Runnable pre() { } } - @Ignore("TODO") + @Ignore("JavaParser seems to ignore `setEnclosingParameters(false)`") @CompareMethods public static class CaseFunction { public Function pre() {