mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-04 12:17:12 +07:00
empty method inspection: skip multiple super calls(IDEA-210462), fix support unrelated defaults from super (IDEA-219569)
GitOrigin-RevId: afa37ee534e59af18c4434d058ad2a55edb7ecca
This commit is contained in:
committed by
intellij-monorepo-bot
parent
51adbd8f32
commit
4b7aa030ff
@@ -2,6 +2,7 @@
|
||||
|
||||
package com.intellij.codeInspection.reference;
|
||||
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.GenericsHighlightUtil;
|
||||
import com.intellij.java.analysis.JavaAnalysisBundle;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.*;
|
||||
@@ -17,6 +18,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.uast.*;
|
||||
import org.jetbrains.uast.visitor.AbstractUastVisitor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@@ -576,6 +578,7 @@ public class RefJavaUtilImpl extends RefJavaUtil {
|
||||
if (body != null) {
|
||||
List<UExpression> statements =
|
||||
body instanceof UBlockExpression ? ((UBlockExpression)body).getExpressions() : Collections.singletonList(body);
|
||||
if (statements.size() > 1) return false;
|
||||
for (UExpression expression : statements) {
|
||||
boolean isCallToSameSuper = false;
|
||||
if (expression instanceof UReturnExpression) {
|
||||
@@ -594,17 +597,15 @@ public class RefJavaUtilImpl extends RefJavaUtil {
|
||||
|
||||
if (hasStatements) {
|
||||
final PsiMethod[] superMethods = javaMethod.findSuperMethods();
|
||||
int defaultCount = 0;
|
||||
for (PsiMethod superMethod : superMethods) {
|
||||
if (VisibilityUtil.compare(VisibilityUtil.getVisibilityModifier(superMethod.getModifierList()),
|
||||
VisibilityUtil.getVisibilityModifier(javaMethod.getModifierList())) > 0) {
|
||||
return false;
|
||||
}
|
||||
if (superMethod.hasModifierProperty(PsiModifier.DEFAULT)) {
|
||||
defaultCount++;
|
||||
}
|
||||
}
|
||||
if (defaultCount > 1) {
|
||||
PsiClass aClass = javaMethod.getContainingClass();
|
||||
if (aClass == null ||
|
||||
GenericsHighlightUtil.getUnrelatedDefaultsMessage(aClass, Arrays.asList(superMethods), true) != null) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user