From fee0ec8258a99bd81b36e109dd4c4cf73f0b7608 Mon Sep 17 00:00:00 2001 From: Michael Studman Date: Sun, 19 Dec 2004 23:44:21 +0000 Subject: [PATCH] Fixed bug where for-each statements caused a NPE when checking special case for for statements with empty iterator clauses in ParenPadCheck. --- .../tools/checkstyle/checks/whitespace/ParenPadCheck.java | 8 ++++++-- .../com/puppycrawl/tools/checkstyle/InputWhitespace.java | 3 +++ .../checkstyle/checks/whitespace/ParenPadCheckTest.java | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java index 12c000d2d..924ecbb21 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java @@ -103,8 +103,10 @@ public class ParenPadCheck { boolean followsEmptyForIterator = false; final DetailAST parent = aAST.getParent(); + //Only traditional for statements are examined, not for-each statements if ((parent != null) - && (parent.getType() == TokenTypes.LITERAL_FOR)) + && (parent.getType() == TokenTypes.LITERAL_FOR) + && (parent.findFirstToken(TokenTypes.FOR_EACH_CLAUSE) == null)) { final DetailAST forIterator = parent.findFirstToken(TokenTypes.FOR_ITERATOR); @@ -122,8 +124,10 @@ public class ParenPadCheck { boolean preceedsEmptyForInintializer = false; final DetailAST parent = aAST.getParent(); + //Only traditional for statements are examined, not for-each statements if ((parent != null) - && (parent.getType() == TokenTypes.LITERAL_FOR)) + && (parent.getType() == TokenTypes.LITERAL_FOR) + && (parent.findFirstToken(TokenTypes.FOR_EACH_CLAUSE) == null)) { final DetailAST forIterator = parent.findFirstToken(TokenTypes.FOR_INIT); diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/InputWhitespace.java b/src/testinputs/com/puppycrawl/tools/checkstyle/InputWhitespace.java index 6387ac167..d5705cda3 100644 --- a/src/testinputs/com/puppycrawl/tools/checkstyle/InputWhitespace.java +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/InputWhitespace.java @@ -229,5 +229,8 @@ class SpecialCasesInForLoop for ( ; i < 5; i++ ) { // ^ whitespace } + for (int anInt : getSomeInts()) { + //Should be ignored + } } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java index 07b6be0d7..a0f10be48 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java @@ -51,6 +51,8 @@ public class ParenPadCheckTest "178:14: '(' is not followed by whitespace.", "178:36: ')' is not preceded with whitespace.", "222:14: '(' is not followed by whitespace.", + "232:14: '(' is not followed by whitespace.", + "232:39: ')' is not preceded with whitespace.", }; verify(checkConfig, getPath("InputWhitespace.java"), expected); }