mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: only highlight different parameter name when overloaded method has less parameters (IDEA-325428)
for "Parameter name differs from parameter in overridden or overloaded method" inspection GitOrigin-RevId: 2d4bb4d4136119c51320de0338c464aff768972d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
cdb4d0e7ae
commit
bd4417426a
+7
-4
@@ -96,6 +96,7 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI
|
||||
}
|
||||
final PsiReferenceExpression methodExpression = expression.getMethodExpression();
|
||||
final boolean constructorCall = JavaPsiConstructorUtil.isConstructorCall(expression);
|
||||
final boolean superCall = PsiUtil.isJavaToken(methodExpression.getReferenceNameElement(), JavaTokenType.SUPER_KEYWORD);
|
||||
final PsiMethod method = PsiTreeUtil.getParentOfType(expression, PsiMethod.class, true);
|
||||
if (method == null || !constructorCall && !method.getName().equals(methodExpression.getReferenceName())) {
|
||||
return;
|
||||
@@ -104,6 +105,10 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI
|
||||
if (targetMethod == null) {
|
||||
return;
|
||||
}
|
||||
final PsiParameterList parameterList = targetMethod.getParameterList();
|
||||
if (!superCall && parameterList.getParametersCount() <= method.getParameterList().getParametersCount()) {
|
||||
return;
|
||||
}
|
||||
final PsiClass containingClass = targetMethod.getContainingClass();
|
||||
final PsiClass aClass = method.getContainingClass();
|
||||
if (containingClass == null || aClass == null || containingClass != aClass && !aClass.isInheritor(containingClass, true)) {
|
||||
@@ -112,7 +117,7 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI
|
||||
if (m_ignoreOverridesOfLibraryMethods && targetMethod instanceof PsiCompiledElement) {
|
||||
return;
|
||||
}
|
||||
final PsiParameter[] parameters = targetMethod.getParameterList().getParameters();
|
||||
final PsiParameter[] parameters = parameterList.getParameters();
|
||||
final PsiExpression[] arguments = argumentList.getExpressions();
|
||||
for (int i = 0, length = Math.min(arguments.length, parameters.length); i < length; i++) {
|
||||
final PsiExpression argument = PsiUtil.skipParenthesizedExprDown(arguments[i]);
|
||||
@@ -135,9 +140,7 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI
|
||||
continue;
|
||||
}
|
||||
int type = constructorCall
|
||||
? PsiUtil.isJavaToken(methodExpression.getReferenceNameElement(), JavaTokenType.SUPER_KEYWORD)
|
||||
? SUPER_CONSTRUCTOR
|
||||
: OVERLOADED_CONSTRUCTOR
|
||||
? superCall ? SUPER_CONSTRUCTOR : OVERLOADED_CONSTRUCTOR
|
||||
: OVERLOADED_METHOD;
|
||||
registerVariableError(targetParameter, parameterName, type);
|
||||
}
|
||||
|
||||
+17
@@ -95,6 +95,10 @@ class H extends G {
|
||||
super(street.toString(), number);
|
||||
}
|
||||
|
||||
H(String <warning descr="Parameter name 'title' is different from parameter 'name' in the super constructor">title</warning>, int age, int number) {
|
||||
super(title, age);
|
||||
}
|
||||
|
||||
private void configureMethod(final Iterable<Class<? extends String>> registeredAnnotations, final Integer method) {
|
||||
for (final Class<? extends String> registeredAnnotation : registeredAnnotations) {
|
||||
configureMethod(registeredAnnotation, method);
|
||||
@@ -115,4 +119,17 @@ class J { // unrelated to I
|
||||
public <T> T getBean(Class<T> requiredType) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
class Test {
|
||||
|
||||
static int method(int a, int b) {
|
||||
return a + b;
|
||||
}
|
||||
static int method(int a, int b, int c) {
|
||||
return method (a, method(b, c));
|
||||
}
|
||||
static int method(int a, int b, int c, int d) {
|
||||
return method(a, method(b, c, d));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user