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..cabeb425a34 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 @@ -506,13 +506,12 @@ private static DetailAST getPreviousNodeWithParentOfTypeAst(DetailAST ast, Detai final DetailAST previousElement; final DetailAST ident = getIdentLastToken(parent.getParent()); final DetailAST lastTypeNode = getTypeLastNode(ast); - final boolean isTypeCast = parent.getParent().getType() == TokenTypes.TYPECAST; // sometimes there are ident-less sentences // i.e. "(Object[]) null", but in casual case should be // checked whether ident or lastTypeNode has preceding position // determining if it is java style or C style - if (ident == null || isTypeCast || ident.getLineNo() > ast.getLineNo()) { + if (ident == null || ident.getLineNo() > ast.getLineNo()) { previousElement = lastTypeNode; } else if (ident.getLineNo() < ast.getLineNo()) { @@ -570,10 +569,17 @@ 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 referencedMemberDot = leftBracket.findFirstToken(TokenTypes.DOT); - return Optional.ofNullable(referencedMemberDot).orElse(referencedClassDot); - + DetailAST result = null; + if (referencedMemberDot == null) { + final DetailAST parent = leftBracket.getParent(); + if (parent.getType() != TokenTypes.ASSIGN) { + result = parent.findFirstToken(TokenTypes.DOT); + } + } + else { + result = referencedMemberDot; + } + return result; } } 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..e300deb9881 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 @@ -308,3 +308,20 @@ Object foo() { int someStuff8 []; // violation } + +class QualifiedAssignment { + + Object o; + static Object o1; + + void some() { + Object oo = new Object[4]; + Object[] oo2 = new Object[4]; + this.o = ((Object[]) oo)[1]; + this.o = ((java.lang.Object[]) oo)[1]; + this.o = oo2[1]; + QualifiedAssignment.o1 = ((Object[]) oo)[1]; + QualifiedAssignment.o1 = ((java.lang.Object[]) oo)[1]; + QualifiedAssignment.o1 = oo2[1]; + } +}