diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java index 969f93acf..fdaac6300 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java @@ -40,7 +40,8 @@ import com.puppycrawl.tools.checkstyle.utils.CommonUtils; * LITERAL_IF}, {@link TokenTypes#LITERAL_SWITCH LITERAL_SWITCH}, {@link * TokenTypes#LITERAL_SYNCHRONIZED LITERAL_SYNCHRONIZED}, {@link * TokenTypes#LITERAL_TRY LITERAL_TRY}, {@link TokenTypes#LITERAL_WHILE - * LITERAL_WHILE}, {@link TokenTypes#STATIC_INIT STATIC_INIT}. + * LITERAL_WHILE}, {@link TokenTypes#STATIC_INIT STATIC_INIT}, + * {@link TokenTypes#LAMBDA LAMBDA}. *

* *

@@ -167,6 +168,7 @@ public class LeftCurlyCheck TokenTypes.LITERAL_FOR, TokenTypes.STATIC_INIT, TokenTypes.OBJBLOCK, + TokenTypes.LAMBDA, }; } @@ -208,6 +210,7 @@ public class LeftCurlyCheck case TokenTypes.LITERAL_DO: case TokenTypes.LITERAL_IF: case TokenTypes.STATIC_INIT: + case TokenTypes.LAMBDA: startToken = ast; brace = ast.findFirstToken(TokenTypes.SLIST); break; diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheckTest.java index 35a6dafad..547baf4b9 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheckTest.java @@ -51,6 +51,12 @@ public class LeftCurlyCheckTest extends BaseCheckTestSupport { + "blocks" + File.separator + filename); } + @Override + protected String getNonCompilablePath(String filename) throws IOException { + return super.getNonCompilablePath("checks" + File.separator + + "blocks" + File.separator + filename); + } + /* Additional test for jacoco, since valueOf() * is generated by javac and jacoco reports that * valueOf() is uncovered. @@ -280,6 +286,28 @@ public class LeftCurlyCheckTest extends BaseCheckTestSupport { verify(checkConfig, getPath("InputLeftCurlyEnums.java"), expectedWhileFalse); } + @Test + public void testDefaultLambda() throws Exception { + final String[] expected = { + "5:1: " + getCheckMessage(MSG_KEY_LINE_PREVIOUS, "{", 1), + "12:32: " + getCheckMessage(MSG_KEY_LINE_BREAK_AFTER, "{", 32), + "15:5: " + getCheckMessage(MSG_KEY_LINE_PREVIOUS, "{", 5), + }; + verify(checkConfig, getNonCompilablePath("InputLeftCurlyNewLineOptionWithLambda.java"), + expected); + } + + @Test + public void testNewLineOptionWithLambda() throws Exception { + checkConfig.addAttribute("option", LeftCurlyOption.NL.toString()); + final String[] expected = { + "6:32: " + getCheckMessage(MSG_KEY_LINE_NEW, "{", 32), + "12:32: " + getCheckMessage(MSG_KEY_LINE_NEW, "{", 32), + }; + verify(checkConfig, getNonCompilablePath("InputLeftCurlyNewLineOptionWithLambda.java"), + expected); + } + @Test public void testGetAcceptableTokens() { final LeftCurlyCheck check = new LeftCurlyCheck(); @@ -303,7 +331,8 @@ public class LeftCurlyCheckTest extends BaseCheckTestSupport { TokenTypes.LITERAL_ELSE, TokenTypes.LITERAL_FOR, TokenTypes.STATIC_INIT, - TokenTypes.OBJBLOCK, }; + TokenTypes.OBJBLOCK, + TokenTypes.LAMBDA, }; assertArrayEquals(expected, actual); } diff --git a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/checks/blocks/InputLeftCurlyNewLineOptionWithLambda.java b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/checks/blocks/InputLeftCurlyNewLineOptionWithLambda.java new file mode 100644 index 000000000..8ce0e26fb --- /dev/null +++ b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/checks/blocks/InputLeftCurlyNewLineOptionWithLambda.java @@ -0,0 +1,18 @@ +//Compilable with Java8 +package com.puppycrawl.tools.checkstyle.checks.blocks; + +public class InputLeftCurlyNewLineOptionWithLambda +{ + static Runnable r1 = () -> { + System.out.println("Hello world one!"); + }; + + static Runnable r2 = () -> System.out.println("Hello world two!"); + + static Runnable r3 = () -> {System.out.println("Hello world two!");}; + + static Runnable r4 = () -> + { + System.out.println("Hello world one!"); + }; +} diff --git a/src/xdocs/config_blocks.xml b/src/xdocs/config_blocks.xml index a36913e07..0baf3edfc 100644 --- a/src/xdocs/config_blocks.xml +++ b/src/xdocs/config_blocks.xml @@ -471,7 +471,8 @@ try { LITERAL_ELSE, LITERAL_FOR, STATIC_INIT, - OBJBLOCK. + OBJBLOCK, + LAMBDA. @@ -493,7 +494,8 @@ try { LITERAL_ELSE, LITERAL_FOR, STATIC_INIT, - OBJBLOCK. + OBJBLOCK, + LAMBDA.