mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java-dfa] DfaCallArguments: do not flush private final variables
GitOrigin-RevId: 054aab1ac093caff699f8710576dd929f66b8674
This commit is contained in:
committed by
intellij-monorepo-bot
parent
20a12d835e
commit
315776757a
+2
-1
@@ -88,7 +88,8 @@ public final class DfaCallArguments {
|
||||
state.flushVariables(v -> v.getQualifier() == qualifier &&
|
||||
v.getPsiVariable() instanceof PsiMember member &&
|
||||
member != method &&
|
||||
member.hasModifierProperty(PsiModifier.PRIVATE));
|
||||
member.hasModifierProperty(PsiModifier.PRIVATE) &&
|
||||
!member.hasModifierProperty(PsiModifier.FINAL));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
abstract class Foo {
|
||||
|
||||
private final Bar bar;
|
||||
|
||||
@Nullable
|
||||
public Object foo() {
|
||||
return bar != null ? bar.a().getObj(getIt(), bar.b()) : null;
|
||||
}
|
||||
|
||||
protected Foo(@Nullable Bar bar) {
|
||||
this.bar = bar;
|
||||
}
|
||||
|
||||
private String getIt() {
|
||||
return "it";
|
||||
}
|
||||
}
|
||||
|
||||
record Bar(A a, B b) {
|
||||
}
|
||||
record A() {
|
||||
Object getObj(String s, B b) {return new Object();}
|
||||
}
|
||||
record B() {}
|
||||
@@ -146,6 +146,7 @@ public class DataFlowInspection21Test extends DataFlowInspectionTestCase {
|
||||
public void testClassFileGetter() {
|
||||
doTest();
|
||||
}
|
||||
public void testPrivateMethodDoNotFlushFinalFields() { doTest(); }
|
||||
public void testGetterVsDirectAccess() { doTest(); }
|
||||
public void testGetterVsDirectAccessRecordOverriddenGetter() { doTest(); }
|
||||
public void testGetterVsDirectAccessNonFinal() { doTest(); }
|
||||
|
||||
Reference in New Issue
Block a user