LocalCanBeFinal: fix false negative in lambda body

#IDEA-227649

GitOrigin-RevId: 33a5c47c1cad5c2a6057ad97fad74d74962252ae
This commit is contained in:
Toshiaki Kameyama
2019-11-26 21:31:54 +01:00
committed by intellij-monorepo-bot
parent 096910239f
commit 9c6fcc15f3
3 changed files with 33 additions and 0 deletions

View File

@@ -221,6 +221,9 @@ public class LocalCanBeFinal extends AbstractBaseJavaLocalInspectionTool impleme
} }
@Override public void visitReferenceExpression(PsiReferenceExpression expression) { @Override public void visitReferenceExpression(PsiReferenceExpression expression) {
if (expression.getParent() instanceof PsiMethodCallExpression) {
super.visitReferenceExpression(expression);
}
} }
}); });

View File

@@ -0,0 +1,25 @@
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Test {
void test() {
List<Integer> <warning descr="Variable 'list' can have 'final' modifier">list</warning> = Stream.of(1, 2, 3)
.map(i -> {
int <warning descr="Variable 'res' can have 'final' modifier">res</warning> = i + 1;
System.out.println(res);
return res;
})
.map(i -> {
int <warning descr="Variable 'res' can have 'final' modifier">res</warning> = i + 2;
System.out.println(res);
return res;
})
.map(i -> {
int <warning descr="Variable 'res' can have 'final' modifier">res</warning> = i + 3;
System.out.println(res);
return res;
})
.collect(Collectors.toList());
}
}

View File

@@ -124,6 +124,11 @@ public class LocalCanBeFinalTest extends LightJavaCodeInsightFixtureTestCase {
doTest(); doTest();
} }
public void testLambdaBody2() {
myTool.REPORT_VARIABLES = true;
doTest();
}
public void testForeachNotReported() { public void testForeachNotReported() {
myTool.REPORT_PARAMETERS = true; myTool.REPORT_PARAMETERS = true;
myTool.REPORT_VARIABLES = false; myTool.REPORT_VARIABLES = false;