diff --git a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java index 472f2ff57bdd..b01a5e9599c3 100644 --- a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java @@ -78,7 +78,7 @@ public class FieldCanBeLocalInspection extends AbstractBaseJavaLocalInspectionTo final Map> refs = new HashMap<>(); for (PsiReference reference : references.findAll()) { final PsiElement element = reference.getElement(); - if (!(element instanceof PsiReferenceExpression)) break; + if (!(element instanceof PsiReferenceExpression)) continue FieldLoop; final PsiElement qualifier = ((PsiReferenceExpression)element).getQualifier(); if (qualifier != null && (!(qualifier instanceof PsiThisExpression) || ((PsiThisExpression)qualifier).getQualifier() != null) || !groupReferenceByCodeBlocks(refs, reference)) { diff --git a/java/java-tests/testData/inspection/fieldCanBeLocal/NotConstantInitializer.java b/java/java-tests/testData/inspection/fieldCanBeLocal/NotConstantInitializer.java index 374e46ae2b93..cf90e9c7a393 100644 --- a/java/java-tests/testData/inspection/fieldCanBeLocal/NotConstantInitializer.java +++ b/java/java-tests/testData/inspection/fieldCanBeLocal/NotConstantInitializer.java @@ -1,10 +1,10 @@ import java.util.*; -public class Outer { +class Outer { private final int value = calcValue(); int myValue; - Set set = new HashSet(); + Set set = new HashSet(); int calcValue() { return set.size(); diff --git a/java/java-tests/testData/inspection/fieldCanBeLocal/Reflection.java b/java/java-tests/testData/inspection/fieldCanBeLocal/Reflection.java new file mode 100644 index 000000000000..33fb4199c366 --- /dev/null +++ b/java/java-tests/testData/inspection/fieldCanBeLocal/Reflection.java @@ -0,0 +1,20 @@ +import java.lang.reflect.Field; + +class Reflection { + void reflectionAccess(BeanWithWeirdFields someBean) throws NoSuchFieldException { + Field theField = someBean.getClass().getDeclaredField("UUID"); + } + + void testOther() { + BeanWithWeirdFields someBean = new BeanWithWeirdFields(); + System.out.println(someBean.UUID); + } + + static class BeanWithWeirdFields { + private String UUID; + + public void setUUID(String UUID) { + this.UUID = UUID; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/FieldCanBeLocalTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/FieldCanBeLocalTest.java index 161341261205..1c3c6585040f 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/FieldCanBeLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/FieldCanBeLocalTest.java @@ -3,7 +3,9 @@ package com.intellij.java.codeInspection; import com.intellij.JavaTestUtil; import com.intellij.codeInspection.varScopeCanBeNarrowed.FieldCanBeLocalInspection; +import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; +import org.jetbrains.annotations.NotNull; public class FieldCanBeLocalTest extends LightJavaCodeInsightFixtureTestCase { @Override @@ -11,6 +13,11 @@ public class FieldCanBeLocalTest extends LightJavaCodeInsightFixtureTestCase { return JavaTestUtil.getRelativeJavaTestDataPath() + "/inspection/fieldCanBeLocal"; } + @Override + protected @NotNull LightProjectDescriptor getProjectDescriptor() { + return JAVA_8; + } + private void doTest() { myFixture.enableInspections(new FieldCanBeLocalInspection()); myFixture.testHighlighting(getTestName(false) + ".java"); @@ -106,4 +113,8 @@ public class FieldCanBeLocalTest extends LightJavaCodeInsightFixtureTestCase { public void testConstructor() { doTest(); } + + public void testReflection() { + doTest(); + } }