diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheck.java index 8ea37af8b1f..6c5c3581caa 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheck.java @@ -110,7 +110,11 @@ private void checkOverloadMethodsGrouping(DetailAST objectBlock) { final String methodName = currentToken.findFirstToken(TokenTypes.IDENT).getText(); final Integer previousIndex = methodIndexMap.get(methodName); - if (previousIndex != null && currentIndex - previousIndex > allowedDistance) { + final DetailAST previousSibling = currentToken.getPreviousSibling(); + final boolean isMethod = previousSibling.getType() == TokenTypes.METHOD_DEF; + + if (previousIndex != null + && (currentIndex - previousIndex > allowedDistance || !isMethod)) { final int previousLineWithOverloadMethod = methodLineNumberMap.get(methodName); log(currentToken, MSG_KEY, diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheckTest.java index b36e42cab88..a281c92d0d2 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/OverloadMethodsDeclarationOrderCheckTest.java @@ -43,6 +43,9 @@ public void testDefault() throws Exception { "60:9: " + getCheckMessage(MSG_KEY, 49), "72:5: " + getCheckMessage(MSG_KEY, 70), "115:5: " + getCheckMessage(MSG_KEY, 104), + "126:5: " + getCheckMessage(MSG_KEY, 120), + "137:9: " + getCheckMessage(MSG_KEY, 131), + "140:5: " + getCheckMessage(MSG_KEY, 126), }; verifyWithInlineConfigParser( getPath("InputOverloadMethodsDeclarationOrder.java"), expected); @@ -55,6 +58,7 @@ public void testOverloadMethodsDeclarationOrderRecords() throws Exception { "21:9: " + getCheckMessage(MSG_KEY, 15), "41:9: " + getCheckMessage(MSG_KEY, 35), "57:9: " + getCheckMessage(MSG_KEY, 50), + "63:9: " + getCheckMessage(MSG_KEY, 57), }; verifyWithInlineConfigParser( getNonCompilablePath("InputOverloadMethodsDeclarationOrderRecords.java"), diff --git a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrderRecords.java b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrderRecords.java index 6a3146bce93..9e5579828c7 100644 --- a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrderRecords.java +++ b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrderRecords.java @@ -60,7 +60,7 @@ public void foo() { // violation public MyClass() { } - public void foo(int i, String s) { + public void foo(int i, String s) { // violation } public void foo(String s, int i) { diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrder.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrder.java index 55aad4289a8..964799a621d 100644 --- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrder.java +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/InputOverloadMethodsDeclarationOrder.java @@ -116,6 +116,28 @@ public void overloadMethod(String s, Boolean b, int i) // violation { //some foo code } + + void test() {} + + String str; + + private interface Testing {} + + void test(int x) {} // violation + + private class Inner { + void test() {} + + void test(String str) {} + + void test2() {} + + String str; + + void test(int x) {} // violation + } + + void test(double d) {} // violation } enum Foo2 { diff --git a/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example1.txt b/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example1.txt index e79e5db8bae..af9909051f7 100644 --- a/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example1.txt +++ b/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example1.txt @@ -12,4 +12,5 @@ public void foo(String s) {} public void foo(String s, int i) {} public void foo(int i, String s) {} public void notFoo() {} +private interface Testing() {} // xdoc section -- end diff --git a/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example2.txt b/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example2.txt index 41156b571c2..b385d710a01 100644 --- a/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example2.txt +++ b/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/overloadmethodsdeclarationorder/Example2.txt @@ -12,4 +12,6 @@ public void foo(String s) {} // OK public void notFoo() {} // violation. Have to be after foo(String s, int i) public void foo(int i, String s) {} public void foo(String s, int i) {} +private interface Testing() {} +public void foo(double d) {} // violation. Have to be after foo(String s, int i) // xdoc section -- end diff --git a/src/xdocs/checks/coding/overloadmethodsdeclarationorder.xml b/src/xdocs/checks/coding/overloadmethodsdeclarationorder.xml index aaea853c3c9..28c592b556a 100644 --- a/src/xdocs/checks/coding/overloadmethodsdeclarationorder.xml +++ b/src/xdocs/checks/coding/overloadmethodsdeclarationorder.xml @@ -40,6 +40,8 @@ public void foo(String s) {} // OK public void notFoo() {} // violation. Have to be after foo(String s, int i) public void foo(int i, String s) {} public void foo(String s, int i) {} +private interface Testing() {} +public void foo(double d) {} // violation. Have to be after foo(String s, int i)