diff --git a/java-checks-common/src/main/java/org/sonar/java/checks/helpers/ExpressionsHelper.java b/java-checks-common/src/main/java/org/sonar/java/checks/helpers/ExpressionsHelper.java index e4cb27cfd1..3a8005001b 100644 --- a/java-checks-common/src/main/java/org/sonar/java/checks/helpers/ExpressionsHelper.java +++ b/java-checks-common/src/main/java/org/sonar/java/checks/helpers/ExpressionsHelper.java @@ -36,6 +36,7 @@ import org.sonar.plugins.java.api.tree.ClassTree; import org.sonar.plugins.java.api.tree.ExpressionTree; import org.sonar.plugins.java.api.tree.IdentifierTree; +import org.sonar.plugins.java.api.tree.LiteralTree; import org.sonar.plugins.java.api.tree.MemberSelectExpressionTree; import org.sonar.plugins.java.api.tree.MethodInvocationTree; import org.sonar.plugins.java.api.tree.NewArrayTree; @@ -80,6 +81,9 @@ public static String concatenate(@Nullable ExpressionTree tree) { IdentifierTree idt = (IdentifierTree) expr; pieces.push(idt.name()); } + if (expr instanceof LiteralTree literal) { + pieces.push(literal.token().text()); + } StringBuilder sb = new StringBuilder(); for (String piece : pieces) { diff --git a/java-checks-test-sources/default/src/main/java/checks/ReplaceLambdaByMethodRefCheckSample.java b/java-checks-test-sources/default/src/main/java/checks/ReplaceLambdaByMethodRefCheckSample.java index 47c8451038..9d5f0d8ae6 100644 --- a/java-checks-test-sources/default/src/main/java/checks/ReplaceLambdaByMethodRefCheckSample.java +++ b/java-checks-test-sources/default/src/main/java/checks/ReplaceLambdaByMethodRefCheckSample.java @@ -358,6 +358,11 @@ void quickFixes(List strings) { // ^^ // fix@qf_cast2 {{Replace with "TestA[][].class::cast"}} // edit@qf_cast2 [[sc=10;ec=40]] {{TestA[][].class::cast}} + + strings.stream().allMatch(it -> "x1".equals(it)); // Noncompliant {{Replace this lambda with method reference '"x1"::equals'.}} [[quickfixes=qf_str_lit]] +// ^^ + // fix@qf_str_lit {{Replace with ""x1"::equals"}} + // edit@qf_str_lit [[sc=31;ec=52]] {{"x1"::equals}} } int notStatic(int x) {