From e708e25087d241604b56ac69d982703827d9fa0d Mon Sep 17 00:00:00 2001 From: Andrei Paikin Date: Sat, 5 Nov 2022 14:25:30 +0100 Subject: [PATCH] Issue #12345: fix NoWhitespaceAfterCheck false positive --- .../checks/whitespace/NoWhitespaceAfterCheck.java | 7 +++++-- .../InputNoWhitespaceAfterTestDefault.java | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoWhitespaceAfterCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoWhitespaceAfterCheck.java index 4ce4716733a..d685ac061cf 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoWhitespaceAfterCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoWhitespaceAfterCheck.java @@ -570,8 +570,11 @@ private static DetailAST getIdentLastToken(DetailAST ast) { * @return dot preceding the left bracket */ private static DetailAST getPrecedingDot(DetailAST leftBracket) { - final DetailAST referencedClassDot = - leftBracket.getParent().findFirstToken(TokenTypes.DOT); + final DetailAST parent = leftBracket.getParent(); + DetailAST referencedClassDot = null; + if (parent.getType() != TokenTypes.ASSIGN) { + referencedClassDot = parent.findFirstToken(TokenTypes.DOT); + } final DetailAST referencedMemberDot = leftBracket.findFirstToken(TokenTypes.DOT); return Optional.ofNullable(referencedMemberDot).orElse(referencedClassDot); diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/nowhitespaceafter/InputNoWhitespaceAfterTestDefault.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/nowhitespaceafter/InputNoWhitespaceAfterTestDefault.java index 005d752ae99..1dfe67a260c 100644 --- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/nowhitespaceafter/InputNoWhitespaceAfterTestDefault.java +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/nowhitespaceafter/InputNoWhitespaceAfterTestDefault.java @@ -307,4 +307,12 @@ Object foo() { int someStuff8 []; // violation + + Object o; + + void some() { + Object oo = new Object[4]; + this.o = ((Object[]) oo)[1]; + this.o = ((java.lang.Object[]) oo)[1]; + } }