2929
3030@ ExtensionImpl
3131public class OverloadedMethodsWithSameNumberOfParametersInspection extends BaseInspection {
32+ @ SuppressWarnings ({"PublicField" })
33+ public boolean ignoreInconvertibleTypes = true ;
3234
33- @ SuppressWarnings ({"PublicField" })
34- public boolean ignoreInconvertibleTypes = true ;
35-
36- @ Override
37- @ Nonnull
38- public String getDisplayName () {
39- return InspectionGadgetsLocalize .overloadedMethodsWithSameNumberParametersDisplayName ().get ();
40- }
35+ @ Override
36+ @ Nonnull
37+ public LocalizeValue getDisplayName () {
38+ return InspectionGadgetsLocalize .overloadedMethodsWithSameNumberParametersDisplayName ();
39+ }
4140
42- @ Override
43- @ Nonnull
44- public String buildErrorString (Object ... infos ) {
45- return InspectionGadgetsLocalize .overloadedMethodsWithSameNumberParametersProblemDescriptor ().get ();
46- }
41+ @ Override
42+ @ Nonnull
43+ public String buildErrorString (Object ... infos ) {
44+ return InspectionGadgetsLocalize .overloadedMethodsWithSameNumberParametersProblemDescriptor ().get ();
45+ }
4746
48- @ Override
49- public JComponent createOptionsPanel () {
50- LocalizeValue message = InspectionGadgetsLocalize .overloadedMethodsWithSameNumberParametersOption ();
51- return new SingleCheckboxOptionsPanel (message .get (), this , "ignoreInconvertibleTypes" );
52- }
47+ @ Override
48+ public JComponent createOptionsPanel () {
49+ LocalizeValue message = InspectionGadgetsLocalize .overloadedMethodsWithSameNumberParametersOption ();
50+ return new SingleCheckboxOptionsPanel (message .get (), this , "ignoreInconvertibleTypes" );
51+ }
5352
54- @ Override
55- public BaseInspectionVisitor buildVisitor () {
56- return new OverloadedMethodsWithSameNumberOfParametersVisitor ();
57- }
53+ @ Override
54+ public BaseInspectionVisitor buildVisitor () {
55+ return new OverloadedMethodsWithSameNumberOfParametersVisitor ();
56+ }
5857
59- private class OverloadedMethodsWithSameNumberOfParametersVisitor extends BaseInspectionVisitor {
58+ private class OverloadedMethodsWithSameNumberOfParametersVisitor extends BaseInspectionVisitor {
6059
61- @ Override
62- public void visitMethod (@ Nonnull PsiMethod method ) {
63- if (method .isConstructor ()) {
64- return ;
65- }
66- if (method .getNameIdentifier () == null ) {
67- return ;
68- }
69- final PsiParameterList parameterList = method .getParameterList ();
70- final int parameterCount = parameterList .getParametersCount ();
71- if (parameterCount == 0 ) {
72- return ;
73- }
74- final PsiClass aClass = method .getContainingClass ();
75- if (aClass == null ) {
76- return ;
77- }
78- if (MethodUtils .hasSuper (method )) {
79- return ;
80- }
81- final String methodName = method .getName ();
82- final PsiMethod [] sameNameMethods = aClass .findMethodsByName (methodName , false );
83- for (PsiMethod sameNameMethod : sameNameMethods ) {
84- if (method .equals (sameNameMethod )) {
85- continue ;
86- }
87- final PsiParameterList otherParameterList = sameNameMethod .getParameterList ();
88- if (parameterCount == otherParameterList .getParametersCount ()) {
89- if (ignoreInconvertibleTypes && !areParameterTypesConvertible (parameterList , otherParameterList )) {
90- return ;
91- }
92- registerMethodError (method );
93- return ;
60+ @ Override
61+ public void visitMethod (@ Nonnull PsiMethod method ) {
62+ if (method .isConstructor ()) {
63+ return ;
64+ }
65+ if (method .getNameIdentifier () == null ) {
66+ return ;
67+ }
68+ final PsiParameterList parameterList = method .getParameterList ();
69+ final int parameterCount = parameterList .getParametersCount ();
70+ if (parameterCount == 0 ) {
71+ return ;
72+ }
73+ final PsiClass aClass = method .getContainingClass ();
74+ if (aClass == null ) {
75+ return ;
76+ }
77+ if (MethodUtils .hasSuper (method )) {
78+ return ;
79+ }
80+ final String methodName = method .getName ();
81+ final PsiMethod [] sameNameMethods = aClass .findMethodsByName (methodName , false );
82+ for (PsiMethod sameNameMethod : sameNameMethods ) {
83+ if (method .equals (sameNameMethod )) {
84+ continue ;
85+ }
86+ final PsiParameterList otherParameterList = sameNameMethod .getParameterList ();
87+ if (parameterCount == otherParameterList .getParametersCount ()) {
88+ if (ignoreInconvertibleTypes && !areParameterTypesConvertible (parameterList , otherParameterList )) {
89+ return ;
90+ }
91+ registerMethodError (method );
92+ return ;
93+ }
94+ }
9495 }
95- }
96- }
9796
98- private boolean areParameterTypesConvertible (PsiParameterList parameterList , PsiParameterList otherParameterList ) {
99- final PsiParameter [] parameters = parameterList .getParameters ();
100- final PsiParameter [] otherParameters = otherParameterList .getParameters ();
101- for (int i = 0 ; i < parameters .length ; i ++) {
102- final PsiType type = parameters [i ].getType ();
103- final PsiType otherType = otherParameters [i ].getType ();
104- if (!type .isAssignableFrom (otherType ) && !otherType .isAssignableFrom (type )) {
105- return false ;
97+ private boolean areParameterTypesConvertible (PsiParameterList parameterList , PsiParameterList otherParameterList ) {
98+ final PsiParameter [] parameters = parameterList .getParameters ();
99+ final PsiParameter [] otherParameters = otherParameterList .getParameters ();
100+ for (int i = 0 ; i < parameters .length ; i ++) {
101+ final PsiType type = parameters [i ].getType ();
102+ final PsiType otherType = otherParameters [i ].getType ();
103+ if (!type .isAssignableFrom (otherType ) && !otherType .isAssignableFrom (type )) {
104+ return false ;
105+ }
106+ }
107+ return true ;
106108 }
107- }
108- return true ;
109109 }
110- }
111110}
0 commit comments