diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/jvm/descriptors/GetterDescriptor.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/jvm/descriptors/GetterDescriptor.java index 455eea18b6c1..e70cd43b8334 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/jvm/descriptors/GetterDescriptor.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/jvm/descriptors/GetterDescriptor.java @@ -36,7 +36,9 @@ public final class GetterDescriptor extends PsiVarDescriptor { CallMatcher.instanceCall("java.lang.reflect.Method", "getReturnType"), CallMatcher.instanceCall(CommonClassNames.JAVA_LANG_CLASS, "getName", "isInterface", "isArray", "isPrimitive", "isSynthetic", "isAnonymousClass", "isLocalClass", "isMemberClass", "getDeclaringClass", "getEnclosingClass", - "getSimpleName", "getCanonicalName") + "getSimpleName", "getCanonicalName"), + CallMatcher.instanceCall(CommonClassNames.JAVA_IO_FILE, "getName", "getParent", "getPath", "getAbsolutePath", + "getParentFile", "getAbsoluteFile", "toPath") ); private final @NotNull PsiMethod myGetter; private final boolean myStable; diff --git a/java/java-impl/src/com/intellij/codeInspection/duplicateExpressions/SideEffectCalculator.java b/java/java-impl/src/com/intellij/codeInspection/duplicateExpressions/SideEffectCalculator.java index 0ded2e3a4db4..6f2a317097d7 100644 --- a/java/java-impl/src/com/intellij/codeInspection/duplicateExpressions/SideEffectCalculator.java +++ b/java/java-impl/src/com/intellij/codeInspection/duplicateExpressions/SideEffectCalculator.java @@ -2,6 +2,7 @@ package com.intellij.codeInspection.duplicateExpressions; import com.intellij.codeInspection.dataFlow.CommonDataflow; +import com.intellij.codeInspection.dataFlow.jvm.descriptors.GetterDescriptor; import com.intellij.psi.*; import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; @@ -182,6 +183,9 @@ final class SideEffectCalculator { if ("java.nio.file.Paths".equals(className)) { return !"get".equals(method.getName()); } + if (method.getParameterList().getParametersCount() == 0 && new GetterDescriptor(method).isStable()) { + return false; + } return true; }