diff --git a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/ParameterCanBeLocalInspection.java b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/ParameterCanBeLocalInspection.java index e933ff89de25..0da655beb99a 100644 --- a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/ParameterCanBeLocalInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/ParameterCanBeLocalInspection.java @@ -104,6 +104,7 @@ public class ParameterCanBeLocalInspection extends BaseJavaLocalInspectionTool { if (controlFlow == null) return Collections.emptyList(); final Set result = filterParameters(controlFlow, parameters); + result.retainAll(ControlFlowUtil.getWrittenVariables(controlFlow, 0, controlFlow.getSize(), false)); for (final PsiReferenceExpression readBeforeWrite : ControlFlowUtil.getReadBeforeWrite(controlFlow)) { final PsiElement resolved = readBeforeWrite.resolve(); if (resolved instanceof PsiParameter) { diff --git a/java/java-tests/testData/inspection/parameterCanBeLocal/readOnly/expected.xml b/java/java-tests/testData/inspection/parameterCanBeLocal/readOnly/expected.xml new file mode 100644 index 000000000000..4704d91e891d --- /dev/null +++ b/java/java-tests/testData/inspection/parameterCanBeLocal/readOnly/expected.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/java/java-tests/testData/inspection/parameterCanBeLocal/readOnly/src/Test.java b/java/java-tests/testData/inspection/parameterCanBeLocal/readOnly/src/Test.java new file mode 100644 index 000000000000..9296e7efe432 --- /dev/null +++ b/java/java-tests/testData/inspection/parameterCanBeLocal/readOnly/src/Test.java @@ -0,0 +1,8 @@ +class Test { + public static final boolean myFoo = false; + + public static void foo(int p) { + if (!myFoo) return; + System.out.println("p = " + p); + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/ParameterCanBeLocalTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/ParameterCanBeLocalTest.java index 10cc1f0f570f..d11557ac812e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/ParameterCanBeLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/ParameterCanBeLocalTest.java @@ -16,7 +16,6 @@ package com.intellij.codeInspection; import com.intellij.JavaTestUtil; -import com.intellij.codeInspection.varScopeCanBeNarrowed.FieldCanBeLocalInspection; import com.intellij.codeInspection.varScopeCanBeNarrowed.ParameterCanBeLocalInspection; import com.intellij.testFramework.InspectionTestCase; @@ -33,4 +32,5 @@ public class ParameterCanBeLocalTest extends InspectionTestCase { public void testSimple () throws Exception { doTest(); } public void testIf () throws Exception { doTest(); } public void testFor () throws Exception { doTest(); } + public void testReadOnly () throws Exception { doTest(); } }