Issue #2818: Add support for lambda expression in LeftCurlyCheck

This commit is contained in:
liscju 2016-02-12 12:59:41 +01:00 committed by Roman Ivanov
parent 420a4908da
commit ec20c822a1
4 changed files with 56 additions and 4 deletions

View File

@ -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}.
* </p>
*
* <p>
@ -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;

View File

@ -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);
}

View File

@ -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!");
};
}

View File

@ -471,7 +471,8 @@ try {
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_ELSE">LITERAL_ELSE</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_FOR">LITERAL_FOR</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#STATIC_INIT">STATIC_INIT</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#OBJBLOCK">OBJBLOCK</a>.
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#OBJBLOCK">OBJBLOCK</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LAMBDA">LAMBDA</a>.
</td>
<td>
@ -493,7 +494,8 @@ try {
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_ELSE">LITERAL_ELSE</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_FOR">LITERAL_FOR</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#STATIC_INIT">STATIC_INIT</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#OBJBLOCK">OBJBLOCK</a>.
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#OBJBLOCK">OBJBLOCK</a>,
<a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LAMBDA">LAMBDA</a>.
</td>
</tr>
</table>