diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java index fe86658a0..95ef4ae07 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java @@ -285,11 +285,15 @@ public class EmptyLineSeparatorCheck extends Check */ private boolean isPrePreviousLineEmpty(DetailAST token) { + boolean result = false; final int lineNo = token.getLineNo(); // 3 is the number of the pre-previous line because the numbering starts from zero. final int number = 3; - final String prePreviousLine = getLines()[lineNo - number]; - return prePreviousLine.trim().isEmpty(); + if (lineNo >= number) { + final String prePreviousLine = getLines()[lineNo - number]; + result = prePreviousLine.trim().isEmpty(); + } + return result; } /** diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java index 2c34b1814..3585c50fb 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java @@ -81,4 +81,15 @@ public class EmptyLineSeparatorCheckTest }; verify(checkConfig, getPath("whitespace/InputEmptyLineSeparatorCheckMultipleEmptyLines.java"), expected); } + + @Test + public void testFormerArrayIndexOutOfBounds() throws Exception + { + DefaultConfiguration checkConfig = createCheckConfig(EmptyLineSeparatorCheck.class); + checkConfig.addAttribute("allowMultipleEmptyLines", "false"); + final String[] expected = { + + }; + verify(checkConfig, getPath("whitespace/InputEmptyLineSeparatorFormerException.java"), expected); + } } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputEmptyLineSeparatorFormerException.java b/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputEmptyLineSeparatorFormerException.java new file mode 100644 index 000000000..f6d8f3798 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputEmptyLineSeparatorFormerException.java @@ -0,0 +1,6 @@ +package com.puppycrawl.tools.checkstyle.whitespace; + +public class InputEmptyLineSeparatorFormerException +{ + +}