From 6a9bc9181cff0e1fed32d84a183b67bca36a8eba Mon Sep 17 00:00:00 2001 From: Ilja Dubinin Date: Sat, 14 Jun 2014 03:32:08 +0400 Subject: [PATCH] Issue 10. Lambda support has been added. --- .../tools/checkstyle/api/TokenTypes.java | 5 + .../tools/checkstyle/grammars/java.g | 52 +++- .../checkstyle/grammars/java8/LambdaTest.java | 258 ++++++++++++++++++ .../grammars/java8/InputLambdaTest1.java | 12 + .../grammars/java8/InputLambdaTest10.java | 20 ++ .../grammars/java8/InputLambdaTest11.java | 20 ++ .../grammars/java8/InputLambdaTest12.java | 20 ++ .../grammars/java8/InputLambdaTest13.java | 22 ++ .../grammars/java8/InputLambdaTest14.java | 18 ++ .../grammars/java8/InputLambdaTest15.java | 42 +++ .../grammars/java8/InputLambdaTest16.java | 21 ++ .../grammars/java8/InputLambdaTest17.java | 9 + .../grammars/java8/InputLambdaTest18.java | 13 + .../grammars/java8/InputLambdaTest19.java | 8 + .../grammars/java8/InputLambdaTest2.java | 24 ++ .../grammars/java8/InputLambdaTest3.java | 26 ++ .../grammars/java8/InputLambdaTest4.java | 10 + .../grammars/java8/InputLambdaTest5.java | 10 + .../grammars/java8/InputLambdaTest6.java | 10 + .../grammars/java8/InputLambdaTest7.java | 15 + .../grammars/java8/InputLambdaTest8.java | 19 ++ .../grammars/java8/InputLambdaTest9.java | 19 ++ 22 files changed, 643 insertions(+), 10 deletions(-) create mode 100644 src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/LambdaTest.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest1.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest10.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest11.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest12.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest13.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest14.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest15.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest16.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest17.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest18.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest19.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest2.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest3.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest4.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest5.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest6.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest7.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest8.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest9.java diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java index 89b14e8f9..427cd0a8c 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java @@ -3430,6 +3430,11 @@ public final class TokenTypes */ public static final int GENERIC_END = GeneratedJavaTokenTypes.GENERIC_END; + /** + * "->" lambda specifying symbol. + */ + public static final int LAMBDA = GeneratedJavaTokenTypes.LAMBDA; + //////////////////////////////////////////////////////////////////////// // The interesting code goes here //////////////////////////////////////////////////////////////////////// diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/grammars/java.g b/src/main/resources/com/puppycrawl/tools/checkstyle/grammars/java.g index e8e34c74e..c4b51b269 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/grammars/java.g +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/grammars/java.g @@ -95,6 +95,9 @@ tokens { //Tokens for Java 1.7 language enhancements RESOURCE_SPECIFICATION; RESOURCES; RESOURCE; + + //TOkens for 1.8 + LAMBDA; } { @@ -784,7 +787,7 @@ implementsClause tc, s2, s5);} - | v:variableDefinitions[#mods,#t] s6:SEMI + | v:variableDefinitions[#mods,#t] (s6:SEMI)? { #field = #v; #v.addChild(#s6); @@ -945,7 +948,7 @@ parameterModifier // A formal parameter. parameterDeclaration! - : pm:parameterModifier t:typeSpec[false] id:IDENT + : pm:parameterModifier (t:typeSpec[false])? id:IDENT pd:declaratorBrackets[#t] {#parameterDeclaration = #(#[PARAMETER_DEF,"PARAMETER_DEF"], pm, #([TYPE,"TYPE"],pd), id);} @@ -1000,7 +1003,7 @@ traditionalStatement // An expression statement. This could be a method call, // assignment statement, or any other expression evaluated for // side-effects. - | expression SEMI + | {LA(2) != COLON}? expression (SEMI)? // class definition | m:modifiers! classDefinition[#m] @@ -1222,7 +1225,8 @@ finallyHandler // the mother of all expressions expression - : assignmentExpression + : (lambdaExpression) => lambdaExpression + | {LA(1)!=RPAREN}? assignmentExpression {#expression = #(#[EXPR,"EXPR"],#expression);} ; @@ -1250,7 +1254,8 @@ assignmentExpression | BXOR_ASSIGN^ | BOR_ASSIGN^ ) - assignmentExpression + ((lambdaExpression)=>lambdaExpression + | assignmentExpression) )? ; @@ -1258,7 +1263,11 @@ assignmentExpression // conditional test (level 12) conditionalExpression : logicalOrExpression - ( QUESTION^ assignmentExpression COLON conditionalExpression )? + ( QUESTION^ + ((lambdaExpression)=>lambdaExpression + | assignmentExpression) + COLON ((lambdaExpression)=>lambdaExpression + | conditionalExpression) )? ; @@ -1300,7 +1309,7 @@ equalityExpression // boolean relational expressions (level 5) relationalExpression - : shiftExpression + : shiftExpression ( "instanceof"^ typeSpec[true])? ( ( ( LT^ | GT^ | LE^ @@ -1308,7 +1317,7 @@ relationalExpression ) shiftExpression )* - | "instanceof"^ typeSpec[true] + ) ; @@ -1361,6 +1370,10 @@ unaryExpressionNotPlusMinus lp:LPAREN^ {#lp.setType(TYPECAST);} typeCastParameters RPAREN unaryExpressionNotPlusMinus + | (LPAREN typeCastParameters RPAREN lambdaExpression) => + lpl:LPAREN^ {#lpl.setType(TYPECAST);} typeCastParameters RPAREN + lambdaExpression + | postfixExpression ) ; @@ -1436,7 +1449,7 @@ primaryExpression | "this" | "null" | newExpression - | LPAREN assignmentExpression RPAREN + | LPAREN ((lambdaExpression)=>lambdaExpression | assignmentExpression) RPAREN | "super" // look for int.class and int[].class and int[] | builtInType @@ -1511,7 +1524,7 @@ newExpression ; argList - : ( expressionList + : ( {LA(1)!=RPAREN}? expressionList | /*nothing*/ {#argList = #[ELIST,"ELIST"];} ) @@ -1543,6 +1556,24 @@ constant | STRING_LITERAL ; +lambdaExpression + : lambdaParameters LAMBDA^ lambdaBody + ; + +lambdaParameters + : IDENT + | LPAREN (parameterDeclarationList)? RPAREN + | LPAREN inferredParameterList RPAREN + ; + +lambdaBody + : expression + | statement + ; +inferredParameterList + : IDENT (COMMA IDENT)* + ; + //---------------------------------------------------------------------------- // The Java scanner @@ -1635,6 +1666,7 @@ SL : "<<" ; SL_ASSIGN : "<<=" ; LE : "<=" ; LT : '<' ; +LAMBDA : "->" ; BXOR : '^' ; BXOR_ASSIGN : "^=" ; BOR : '|' ; diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/LambdaTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/LambdaTest.java new file mode 100644 index 000000000..3d70bfa86 --- /dev/null +++ b/src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/LambdaTest.java @@ -0,0 +1,258 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2014 Oliver Burn +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +//////////////////////////////////////////////////////////////////////////////// +package com.puppycrawl.tools.checkstyle.grammars.java8; + +import org.junit.Test; + +import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport; +import com.puppycrawl.tools.checkstyle.DefaultConfiguration; +import com.puppycrawl.tools.checkstyle.checks.naming.MemberNameCheck; + +public class LambdaTest extends BaseCheckTestSupport +{ + + @Test + public void testLambdaInVariableInitialization() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest1.java"), + expected); + + } + + @Test + public void testWithoutArgsOneLineLambdaBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest2.java"), + expected); + + } + + @Test + public void testWithoutArgsFullLambdaBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest3.java"), + expected); + + } + + @Test + public void testWithOneArgWithOneLineBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest4.java"), + expected); + + } + + @Test + public void testWithOneArgWithFullBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest5.java"), + expected); + + } + + @Test + public void testWithOneArgWIthoutTypeOneLineBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest6.java"), + expected); + + } + + @Test + public void testWithOneArgWIthoutTypeFullBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest7.java"), + expected); + + } + + @Test + public void testWithFewArgsWithoutTypeOneLineBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest8.java"), + expected); + + } + + @Test + public void testWithFewArgsWithoutTypeFullBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest9.java"), + expected); + + } + + @Test + public void testWithOneArgWIthoutParenthesesWithoutTypeOneLineBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest10.java"), + expected); + + } + + @Test + public void testWithOneArgWIthoutParenthesesWithoutTypeFullBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest11.java"), + expected); + + } + + @Test + public void testWithFewArgWIthTypeOneLine() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest12.java"), + expected); + + } + + @Test + public void testWithFewArgWithTypeFullBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest13.java"), + expected); + + } + + @Test + public void testWIthMultilineBody() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest14.java"), + expected); + + } + + @Test + public void testCasesFromSpec() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest15.java"), + expected); + + } + + @Test + public void testWithTypecast() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest16.java"), + expected); + + } + + @Test + public void testInAssignment() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest17.java"), + expected); + + } + + @Test + public void testInParentheses() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest18.java"), + expected); + + } + + @Test + public void testInTernary() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = {}; + verify(checkConfig, getPath("grammars/java8/InputLambdaTest19.java"), + expected); + + } + +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest1.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest1.java new file mode 100644 index 000000000..d164bd388 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest1.java @@ -0,0 +1,12 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest1 { + + static Runnable r1 = ()->System.out.println("Hello world one!"); + static Runnable r2 = () -> System.out.println("Hello world two!"); + + public static void main(String[] args) { + r1.run(); + r2.run(); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest10.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest10.java new file mode 100644 index 000000000..aeebfb927 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest10.java @@ -0,0 +1,20 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest10 { + + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth("fef"); + } + + + public static void main(String[] args) { + + testVoidLambda(s1 -> System.out.println(s1)); + } + + private interface TestOfVoidLambdas { + + public void doSmth(String first); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest11.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest11.java new file mode 100644 index 000000000..b8192a12e --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest11.java @@ -0,0 +1,20 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest11 { + + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth("fef"); + } + + + public static void main(String[] args) { + + testVoidLambda(s1 -> {System.out.println(s1);}); + } + + private interface TestOfVoidLambdas { + + public void doSmth(String first); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest12.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest12.java new file mode 100644 index 000000000..4ff21ec8d --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest12.java @@ -0,0 +1,20 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest12 { + + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth("fef", 5); + } + + + public static void main(String[] args) { + + testVoidLambda((String s1, Integer i2) -> System.out.println(s1)); + } + + private interface TestOfVoidLambdas { + + public void doSmth(String first, Integer second); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest13.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest13.java new file mode 100644 index 000000000..2e6186e19 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest13.java @@ -0,0 +1,22 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest12 { + + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth("fef", 5); + } + + + public static void main(String[] args) { + + testVoidLambda((String s1, Integer i2) -> { + System.out.println(s1); + }); + } + + private interface TestOfVoidLambdas { + + public void doSmth(String first, Integer second); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest14.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest14.java new file mode 100644 index 000000000..ec67efa07 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest14.java @@ -0,0 +1,18 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +import java.util.Arrays; +import java.util.List; + + +public class InputLambdaTest14 { + + public static void main(String args[]) { + List numbers = Arrays.asList(1, 2, 3, 4, 5); + + numbers.forEach(first -> { + System.out.println("first"); + System.out.println("second"); + System.out.println("third"); + }); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest15.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest15.java new file mode 100644 index 000000000..c51d5ee08 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest15.java @@ -0,0 +1,42 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +import java.util.Arrays; +import java.util.List; + + +public class InputLambdaTest15 { + + public static void main(String args[]) { + () -> {}; // No parameters; result is void + () -> 42; // No parameters, expression body + () -> null; // No parameters, expression body + () -> { return 42; } // No parameters, block body with return + () -> { System.gc(); } // No parameters, void block body + + () -> { // Complex block body with returns + if (true) return 12; + else { + int result = 15; + for (int i = 1; i < 10; i++) + { + result *= i; + } + return result; + }; + } + + (int x) -> x+1; // Single declared-type parameter + (int x) -> { return x+1; } // Single declared-type parameter + (x) -> x+1; // Single inferred-type parameter + x -> x+1; // Parentheses optional for + // single inferred-type parameter + + (String s) -> s.length(); // Single declared-type parameter + (Thread t) -> { t.start(); } // Single declared-type parameter + s -> s.length(); // Single inferred-type parameter + t -> { t.start(); } // Single inferred-type parameter + + (int x, int y) -> x+y; // Multiple declared-type parameters + (x, y) -> x+y; // Multiple inferred-type parameters + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest16.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest16.java new file mode 100644 index 000000000..ded6a7565 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest16.java @@ -0,0 +1,21 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +import java.util.Arrays; +import java.util.List; + + +public class InputLambdaTest16 { + + static final Comparator> DATE_TIME_ORDER = + (Comparator>) (dateTime1, dateTime2) -> { + int cmp = Long.compare(dateTime1.toLocalDate().toEpochDay(), dateTime2.toLocalDate().toEpochDay()); + if (cmp == 0) { + cmp = Long.compare(dateTime1.toLocalTime().toNanoOfDay(), dateTime2.toLocalTime().toNanoOfDay()); + } + return cmp; + }; + + public static void main(String args[]) { + + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest17.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest17.java new file mode 100644 index 000000000..47fd9bbea --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest17.java @@ -0,0 +1,9 @@ +public class InputLambdaTest17{ + + void initPartialTraversalState() { + SpinedBuffer b = new SpinedBuffer<>(); + buffer = b; + + pusher = () -> spliterator.tryAdvance(bufferSink); + } +} \ No newline at end of file diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest18.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest18.java new file mode 100644 index 000000000..8d3898b8f --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest18.java @@ -0,0 +1,13 @@ +public class InputLambdaTest18 { + + T[] getDeclaredAnnotationsByType(Class annotationClass) { + Objects.requireNonNull(annotationClass); + return AnnotationSupport. + getDirectlyAndIndirectlyPresent(Arrays.stream(getDeclaredAnnotations()). + collect(Collectors.toMap(Annotation.annotationType(), + Function.identity(), + ((first,second) -> first), + LinkedHashMap.neww())), + annotationClass); + } +} \ No newline at end of file diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest19.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest19.java new file mode 100644 index 000000000..dea3bb668 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest19.java @@ -0,0 +1,8 @@ +public class InputLambdaTest19 { + + static Predicate isEqual(Object targetRef) { + return (null == targetRef) + ? true + : object -> targetRef.equals(object); + } +} \ No newline at end of file diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest2.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest2.java new file mode 100644 index 000000000..006e9cfe1 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest2.java @@ -0,0 +1,24 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +import java.util.Arrays; +import java.util.List; + +import TestLabmda.TestOfVoidLambdas; + +public class InputLabdaTest2 { + + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth(); + } + + + public static void main(String[] args) { + testVoidLambda(() -> System.out.println("Method in interface called")); + } + + private interface TestOfVoidLambdas { + + public void doSmth(); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest3.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest3.java new file mode 100644 index 000000000..e91f97f19 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest3.java @@ -0,0 +1,26 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +import java.util.Arrays; +import java.util.List; + +import TestLabmda.TestOfVoidLambdas; + +public class InputLabdaTest3 { + + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth(); + } + + + public static void main(String[] args) { + testVoidLambda(() -> { + System.out.println("Method in interface called"); + }); + } + + private interface TestOfVoidLambdas { + + public void doSmth(); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest4.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest4.java new file mode 100644 index 000000000..dc6d9ee49 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest4.java @@ -0,0 +1,10 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest4 { + + public void doSomething() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + + numbers.forEach((Integer value) -> System.out.println(value)); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest5.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest5.java new file mode 100644 index 000000000..8adc71f25 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest5.java @@ -0,0 +1,10 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest5 { + + public void doSomething() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + + numbers.forEach((Integer value) -> {System.out.println(value);}); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest6.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest6.java new file mode 100644 index 000000000..2d251b765 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest6.java @@ -0,0 +1,10 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest6 { + + public void doSomething() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + + numbers.forEach((value) -> System.out.println(value)); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest7.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest7.java new file mode 100644 index 000000000..a8bfd2ece --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest7.java @@ -0,0 +1,15 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +import java.util.Arrays; +import java.util.List; + +public class InputLabdaTest7 { + + public void doSomething() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + + numbers.forEach((value) -> { + System.out.println(value); + }); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest8.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest8.java new file mode 100644 index 000000000..94e32f15d --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest8.java @@ -0,0 +1,19 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest8 { + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth("fef", 2); + } + + + public static void main(String[] args) { + + testVoidLambda((s1, s2) -> System.out.println(s1 + s2)); + } + + private interface TestOfVoidLambdas { + + public void doSmth(String first, Integer second); + } +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest9.java b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest9.java new file mode 100644 index 000000000..eca0d7963 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/grammars/java8/InputLambdaTest9.java @@ -0,0 +1,19 @@ +package com.puppycrawl.tools.checkstyle.grammars.java8; + +public class InputLabdaTest9 { + public static void testVoidLambda(TestOfVoidLambdas test) { + System.out.println("Method called"); + test.doSmth("fef", 2); + } + + + public static void main(String[] args) { + + testVoidLambda((s1, s2) -> {System.out.println(s1 + s2);}); + } + + private interface TestOfVoidLambdas { + + public void doSmth(String first, Integer second); + } +}