[java] local can be final: accept lambda parameters with explicit types (IDEA-223120)

GitOrigin-RevId: a6ee13c64c0139ba0a68f318daf448182a0f3f1d
This commit is contained in:
Anna Kozlova
2022-07-18 16:07:39 +02:00
committed by intellij-monorepo-bot
parent 09b8dc66e1
commit e35f056f85
3 changed files with 25 additions and 4 deletions

View File

@@ -243,10 +243,14 @@ public class LocalCanBeFinal extends AbstractBaseJavaLocalInspectionTool impleme
}
});
if (body.getParent() instanceof PsiMethod && REPORT_PARAMETERS) {
final PsiMethod method = (PsiMethod)body.getParent();
if (!(method instanceof SyntheticElement)) { // e.g. JspHolderMethod
Collections.addAll(result, method.getParameterList().getParameters());
if (body.getParent() instanceof PsiParameterListOwner && REPORT_PARAMETERS) {
final PsiParameterListOwner methodOrLambda = (PsiParameterListOwner)body.getParent();
if (!(methodOrLambda instanceof SyntheticElement)) { // e.g. JspHolderMethod
for (PsiParameter parameter : methodOrLambda.getParameterList().getParameters()) {
if (parameter.getTypeElement() != null) {
result.add(parameter);
}
}
}
}

View File

@@ -0,0 +1,11 @@
class Test{
public void t() {
I i1 = (Integer <warning descr="Parameter 'i' can have 'final' modifier">i</warning>) -> {};
I i2 = i -> {};
}
}
interface I {
void f(Integer i);
}

View File

@@ -54,6 +54,12 @@ public class LocalCanBeFinalTest extends LightJavaCodeInsightFixtureTestCase {
myTool.REPORT_VARIABLES = true;
doTest();
}
public void testLambdaParameters() {
myTool.REPORT_PARAMETERS = true;
myTool.REPORT_VARIABLES = false;
doTest();
}
public void testParameters() {
myTool.REPORT_PARAMETERS = true;