mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IG: clone method of singleton does not need to call super (IDEA-182697)
This commit is contained in:
+6
-5
@@ -24,10 +24,7 @@ import com.siyeh.HardcodedMethodConstants;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.psiutils.CloneUtils;
|
||||
import com.siyeh.ig.psiutils.ControlFlowUtils;
|
||||
import com.siyeh.ig.psiutils.MethodCallUtils;
|
||||
import com.siyeh.ig.psiutils.MethodUtils;
|
||||
import com.siyeh.ig.psiutils.*;
|
||||
import com.siyeh.ig.ui.ExternalizableStringSet;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -130,11 +127,15 @@ public class RefusedBequestInspectionBase extends BaseInspection {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (onlyReportWhenAnnotated && !CloneUtils.isClone(method) && !isJUnitSetUpOrTearDown(method) && !MethodUtils.isFinalize(method)) {
|
||||
final boolean isClone = CloneUtils.isClone(method);
|
||||
if (onlyReportWhenAnnotated && !isClone && !isJUnitSetUpOrTearDown(method) && !MethodUtils.isFinalize(method)) {
|
||||
if (!AnnotationUtil.isAnnotated(leastConcreteSuperMethod, annotations, 0)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (isClone && SingletonUtil.isSingleton(method.getContainingClass())) {
|
||||
return;
|
||||
}
|
||||
if (MethodCallUtils.containsSuperMethodCall(method) || ControlFlowUtils.methodAlwaysThrowsException(method)) {
|
||||
return;
|
||||
}
|
||||
|
||||
+3
-2
@@ -21,6 +21,7 @@ import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Query;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -31,8 +32,8 @@ public class SingletonUtil {
|
||||
|
||||
private SingletonUtil() {}
|
||||
|
||||
public static boolean isSingleton(@NotNull PsiClass aClass) {
|
||||
if (aClass.isInterface() || aClass.isEnum() || aClass.isAnnotationType()) {
|
||||
public static boolean isSingleton(@Nullable PsiClass aClass) {
|
||||
if (aClass == null || aClass.isInterface() || aClass.isEnum() || aClass.isAnnotationType()) {
|
||||
return false;
|
||||
}
|
||||
if (aClass instanceof PsiTypeParameter || aClass instanceof PsiAnonymousClass) {
|
||||
|
||||
+10
@@ -49,3 +49,13 @@ class Four {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
class CloneableSingleton implements Cloneable {
|
||||
|
||||
private static final CloneableSingleton INSTANCE = new CloneableSingleton();
|
||||
|
||||
private CloneableSingleton() {}
|
||||
|
||||
public CloneableSingleton clone() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user