From d4fdab5a615b3b4193b21e6fe043111dd6f44680 Mon Sep 17 00:00:00 2001 From: rnveach Date: Sun, 29 May 2016 10:02:55 -0400 Subject: [PATCH] Issue #3033: added more support for openjdk 8 and 9 --- .../tools/checkstyle/grammars/java.g | 13 +- .../grammars/java8/AnnotationTest.java | 9 + .../grammars/InputRegressionJava8Class1.java | 10 + .../InputRegressionJava8Class1Ast.txt | 822 ++++++++++-------- .../grammars/java8/InputAnnotations11.java | 5 + .../grammars/java8/InputAnnotations5.java | 1 + 6 files changed, 500 insertions(+), 360 deletions(-) create mode 100644 src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations11.java 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 b1ab3d9a2a86..8e647bf443d6 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/grammars/java.g +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/grammars/java.g @@ -262,6 +262,7 @@ typeSpec[boolean addImagNode] // - generic type arguments after classTypeSpec[boolean addImagNode] : classOrInterfaceType[addImagNode] + ({LA(1) == AT}? annotations | ) (options{greedy=true; }: ({LA(1) == AT}? annotations | ) @@ -606,6 +607,7 @@ typeParameters typeParameter : // I'm pretty sure Antlr generates the right thing here: + ({LA(1) == AT}? annotations | ) (id:IDENT) ( options{generateAmbigWarnings=false;}: typeParameterBounds )? {#typeParameter = #(#[TYPE_PARAMETER,"TYPE_PARAMETER"], #typeParameter);} ; @@ -944,7 +946,7 @@ ctorHead // This is a list of exception classes that the method is declared to throw throwsClause : "throws"^ ({LA(1) == AT}? annotations - | ) identifier ( COMMA identifier )* + | ) identifier ( COMMA ({LA(1) == AT}? annotations | ) identifier )* ; @@ -983,11 +985,16 @@ parameterModifier // A formal parameter. parameterDeclaration! - : pm:parameterModifier (t:typeSpec[false])? id:IDENT - pd:declaratorBrackets[#t] + : pm:parameterModifier (t:typeSpec[false])? + id:parameterIdent pd:declaratorBrackets[#t] {#parameterDeclaration = #(#[PARAMETER_DEF,"PARAMETER_DEF"], pm, #([TYPE,"TYPE"],pd), id);} ; + +parameterIdent + : LITERAL_this | (IDENT (DOT^ LITERAL_this)?) + ; + //Added for support Java7's "multi-catch", several types separated by '|' catchParameterDeclaration! : pm:parameterModifier mct:multiCatchTypes id:IDENT diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/AnnotationTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/AnnotationTest.java index b859693e9f34..86ce856c932a 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/AnnotationTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/grammars/java8/AnnotationTest.java @@ -142,4 +142,13 @@ public void testAnnotationInCatchParameters() } + @Test + public void testAnnotationInTypeParameters() + throws Exception { + final DefaultConfiguration checkConfig = + createCheckConfig(MemberNameCheck.class); + final String[] expected = CommonUtils.EMPTY_STRING_ARRAY; + verify(checkConfig, getNonCompilablePath("InputAnnotations11.java"), expected); + + } } diff --git a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1.java b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1.java index 384a858c86c4..1d6aa97ff200 100644 --- a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1.java +++ b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1.java @@ -22,6 +22,10 @@ public void m() {} public static void sm() {} void m1() throws @Nullable Exception {} public static void m2(T @Nullable [] array) {} + public void m3() throws NullPointerException, @Nullable ArrayIndexOutOfBoundsException {} + public void m4(InputRegressionJava8Class1 this) {} + public void m5(@Nullable InputRegressionJava8Class1 this, @Nullable String @Nullable ... vararg) {} + public Object @Nullable [][] @Nullable [] m6() { return null; } { List vlist = new ArrayList(); @@ -56,8 +60,14 @@ public void instructions() { } static final Comparator f = (Comparator) (dateTime1, dateTime2) -> { return 0; }; + + private class Inner { + public Inner(InputRegressionJava8Class1 InputRegressionJava8Class1.this) {} + } } ; +class InputRegressionJava8TypeParam <@Nullable T> { +} @Retention(RetentionPolicy.CLASS) @Target({ ElementType.TYPE_USE }) @interface Nullable { diff --git a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1Ast.txt b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1Ast.txt index 6b92ddbd099b..f81b7f52efac 100644 --- a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1Ast.txt +++ b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/InputRegressionJava8Class1Ast.txt @@ -239,372 +239,480 @@ CLASS_DEF -> CLASS_DEF [17:0] | |--RPAREN -> ) [24:50] | `--SLIST -> { [24:52] | `--RCURLY -> } [24:53] - |--INSTANCE_INIT -> INSTANCE_INIT [26:4] - | `--SLIST -> { [26:4] - | |--VARIABLE_DEF -> VARIABLE_DEF [27:8] - | | |--MODIFIERS -> MODIFIERS [27:8] - | | |--TYPE -> TYPE [27:8] - | | | |--IDENT -> List [27:8] - | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [27:12] - | | | |--GENERIC_START -> < [27:12] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [27:13] - | | | | `--IDENT -> String [27:13] - | | | `--GENERIC_END -> > [27:19] - | | |--IDENT -> vlist [27:21] - | | `--ASSIGN -> = [27:27] - | | `--EXPR -> EXPR [27:29] - | | `--LITERAL_NEW -> new [27:29] - | | |--IDENT -> ArrayList [27:33] - | | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [27:42] - | | | |--GENERIC_START -> < [27:42] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [27:43] - | | | | `--IDENT -> String [27:43] - | | | `--GENERIC_END -> > [27:49] - | | |--LPAREN -> ( [27:50] - | | |--ELIST -> ELIST [27:51] - | | `--RPAREN -> ) [27:51] - | |--SEMI -> ; [27:52] - | `--RCURLY -> } [28:4] - |--METHOD_DEF -> METHOD_DEF [30:4] - | |--MODIFIERS -> MODIFIERS [30:4] - | | `--LITERAL_PUBLIC -> public [30:4] - | |--TYPE -> TYPE [30:11] - | | `--LITERAL_VOID -> void [30:11] - | |--IDENT -> instructions [30:16] - | |--LPAREN -> ( [30:28] - | |--PARAMETERS -> PARAMETERS [30:29] - | |--RPAREN -> ) [30:29] - | `--SLIST -> { [30:31] - | |--VARIABLE_DEF -> VARIABLE_DEF [32:8] - | | |--MODIFIERS -> MODIFIERS [32:8] - | | |--TYPE -> TYPE [32:8] - | | | `--LITERAL_BOOLEAN -> boolean [32:8] - | | |--IDENT -> b [32:16] - | | `--ASSIGN -> = [32:18] - | | `--EXPR -> EXPR [32:34] - | | `--GT -> > [32:34] - | | |--METHOD_CALL -> ( [32:31] - | | | |--DOT -> . [32:24] - | | | | |--IDENT -> Math [32:20] - | | | | `--IDENT -> random [32:25] - | | | |--ELIST -> ELIST [32:32] - | | | `--RPAREN -> ) [32:32] - | | `--NUM_INT -> 0 [32:36] - | |--SEMI -> ; [32:37] - | |--VARIABLE_DEF -> VARIABLE_DEF [34:8] - | | |--MODIFIERS -> MODIFIERS [34:8] - | | |--TYPE -> TYPE [34:8] - | | | `--LITERAL_INT -> int [34:8] - | | `--IDENT -> vint [34:12] - | |--SEMI -> ; [34:16] + |--METHOD_DEF -> METHOD_DEF [25:4] + | |--MODIFIERS -> MODIFIERS [25:4] + | | `--LITERAL_PUBLIC -> public [25:4] + | |--TYPE -> TYPE [25:11] + | | `--LITERAL_VOID -> void [25:11] + | |--IDENT -> m3 [25:16] + | |--LPAREN -> ( [25:18] + | |--PARAMETERS -> PARAMETERS [25:19] + | |--RPAREN -> ) [25:19] + | |--LITERAL_THROWS -> throws [25:21] + | | |--IDENT -> NullPointerException [25:28] + | | |--COMMA -> , [25:48] + | | |--ANNOTATIONS -> ANNOTATIONS [25:50] + | | | `--ANNOTATION -> ANNOTATION [25:50] + | | | |--AT -> @ [25:50] + | | | `--IDENT -> Nullable [25:51] + | | `--IDENT -> ArrayIndexOutOfBoundsException [25:60] + | `--SLIST -> { [25:91] + | `--RCURLY -> } [25:92] + |--METHOD_DEF -> METHOD_DEF [26:4] + | |--MODIFIERS -> MODIFIERS [26:4] + | | `--LITERAL_PUBLIC -> public [26:4] + | |--TYPE -> TYPE [26:11] + | | `--LITERAL_VOID -> void [26:11] + | |--IDENT -> m4 [26:16] + | |--LPAREN -> ( [26:18] + | |--PARAMETERS -> PARAMETERS [26:19] + | | `--PARAMETER_DEF -> PARAMETER_DEF [26:19] + | | |--MODIFIERS -> MODIFIERS [26:19] + | | |--TYPE -> TYPE [26:19] + | | | `--IDENT -> InputRegressionJava8Class1 [26:19] + | | `--LITERAL_THIS -> this [26:46] + | |--RPAREN -> ) [26:50] + | `--SLIST -> { [26:52] + | `--RCURLY -> } [26:53] + |--METHOD_DEF -> METHOD_DEF [27:4] + | |--MODIFIERS -> MODIFIERS [27:4] + | | `--LITERAL_PUBLIC -> public [27:4] + | |--TYPE -> TYPE [27:11] + | | `--LITERAL_VOID -> void [27:11] + | |--IDENT -> m5 [27:16] + | |--LPAREN -> ( [27:18] + | |--PARAMETERS -> PARAMETERS [27:19] + | | |--PARAMETER_DEF -> PARAMETER_DEF [27:19] + | | | |--MODIFIERS -> MODIFIERS [27:19] + | | | | `--ANNOTATION -> ANNOTATION [27:19] + | | | | |--AT -> @ [27:19] + | | | | `--IDENT -> Nullable [27:20] + | | | |--TYPE -> TYPE [27:29] + | | | | `--IDENT -> InputRegressionJava8Class1 [27:29] + | | | `--LITERAL_THIS -> this [27:56] + | | |--COMMA -> , [27:60] + | | `--PARAMETER_DEF -> PARAMETER_DEF [27:62] + | | |--MODIFIERS -> MODIFIERS [27:62] + | | | `--ANNOTATION -> ANNOTATION [27:62] + | | | |--AT -> @ [27:62] + | | | `--IDENT -> Nullable [27:63] + | | |--TYPE -> TYPE [27:72] + | | | |--IDENT -> String [27:72] + | | | `--ANNOTATIONS -> ANNOTATIONS [27:79] + | | | `--ANNOTATION -> ANNOTATION [27:79] + | | | |--AT -> @ [27:79] + | | | `--IDENT -> Nullable [27:80] + | | |--ELLIPSIS -> ... [27:89] + | | `--IDENT -> vararg [27:93] + | |--RPAREN -> ) [27:99] + | `--SLIST -> { [27:101] + | `--RCURLY -> } [27:102] + |--INSTANCE_INIT -> INSTANCE_INIT [29:4] + | `--SLIST -> { [29:4] + | |--VARIABLE_DEF -> VARIABLE_DEF [30:8] + | | |--MODIFIERS -> MODIFIERS [30:8] + | | |--TYPE -> TYPE [30:8] + | | | |--IDENT -> List [30:8] + | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [30:12] + | | | |--GENERIC_START -> < [30:12] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [30:13] + | | | | `--IDENT -> String [30:13] + | | | `--GENERIC_END -> > [30:19] + | | |--IDENT -> vlist [30:21] + | | `--ASSIGN -> = [30:27] + | | `--EXPR -> EXPR [30:29] + | | `--LITERAL_NEW -> new [30:29] + | | |--IDENT -> ArrayList [30:33] + | | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [30:42] + | | | |--GENERIC_START -> < [30:42] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [30:43] + | | | | `--IDENT -> String [30:43] + | | | `--GENERIC_END -> > [30:49] + | | |--LPAREN -> ( [30:50] + | | |--ELIST -> ELIST [30:51] + | | `--RPAREN -> ) [30:51] + | |--SEMI -> ; [30:52] + | `--RCURLY -> } [31:4] + |--METHOD_DEF -> METHOD_DEF [33:4] + | |--MODIFIERS -> MODIFIERS [33:4] + | | `--LITERAL_PUBLIC -> public [33:4] + | |--TYPE -> TYPE [33:11] + | | `--LITERAL_VOID -> void [33:11] + | |--IDENT -> instructions [33:16] + | |--LPAREN -> ( [33:28] + | |--PARAMETERS -> PARAMETERS [33:29] + | |--RPAREN -> ) [33:29] + | `--SLIST -> { [33:31] | |--VARIABLE_DEF -> VARIABLE_DEF [35:8] | | |--MODIFIERS -> MODIFIERS [35:8] | | |--TYPE -> TYPE [35:8] - | | | `--IDENT -> Object [35:8] - | | |--IDENT -> o [35:15] - | | `--ASSIGN -> = [35:17] - | | `--EXPR -> EXPR [35:19] - | | `--LITERAL_NULL -> null [35:19] - | |--SEMI -> ; [35:23] - | |--VARIABLE_DEF -> VARIABLE_DEF [36:8] - | | |--MODIFIERS -> MODIFIERS [36:8] - | | |--TYPE -> TYPE [36:8] - | | | |--IDENT -> List [36:8] - | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [36:12] - | | | |--GENERIC_START -> < [36:12] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [36:13] - | | | | `--IDENT -> String [36:13] - | | | `--GENERIC_END -> > [36:19] - | | `--IDENT -> vlist [36:21] - | |--SEMI -> ; [36:26] - | |--EXPR -> EXPR [37:14] - | | `--ASSIGN -> = [37:14] - | | |--IDENT -> vlist [37:8] - | | `--LITERAL_NEW -> new [37:16] - | | |--IDENT -> ArrayList [37:20] - | | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [37:29] - | | | |--GENERIC_START -> < [37:29] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [37:30] - | | | | `--IDENT -> String [37:30] - | | | `--GENERIC_END -> > [37:36] - | | |--LPAREN -> ( [37:37] - | | |--ELIST -> ELIST [37:38] - | | `--RPAREN -> ) [37:38] - | |--SEMI -> ; [37:39] + | | | `--LITERAL_BOOLEAN -> boolean [35:8] + | | |--IDENT -> b [35:16] + | | `--ASSIGN -> = [35:18] + | | `--EXPR -> EXPR [35:34] + | | `--GT -> > [35:34] + | | |--METHOD_CALL -> ( [35:31] + | | | |--DOT -> . [35:24] + | | | | |--IDENT -> Math [35:20] + | | | | `--IDENT -> random [35:25] + | | | |--ELIST -> ELIST [35:32] + | | | `--RPAREN -> ) [35:32] + | | `--NUM_INT -> 0 [35:36] + | |--SEMI -> ; [35:37] + | |--VARIABLE_DEF -> VARIABLE_DEF [37:8] + | | |--MODIFIERS -> MODIFIERS [37:8] + | | |--TYPE -> TYPE [37:8] + | | | `--LITERAL_INT -> int [37:8] + | | `--IDENT -> vint [37:12] + | |--SEMI -> ; [37:16] | |--VARIABLE_DEF -> VARIABLE_DEF [38:8] | | |--MODIFIERS -> MODIFIERS [38:8] | | |--TYPE -> TYPE [38:8] - | | | |--IDENT -> Supplier [38:8] - | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [38:16] - | | | |--GENERIC_START -> < [38:16] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [38:17] - | | | | `--WILDCARD_TYPE -> ? [38:17] - | | | `--GENERIC_END -> > [38:18] - | | `--IDENT -> s [38:20] - | |--SEMI -> ; [38:21] - | |--VARIABLE_DEF -> VARIABLE_DEF [41:11] - | | |--MODIFIERS -> MODIFIERS [41:11] - | | |--TYPE -> TYPE [41:11] - | | | `--DOT -> . [41:11] - | | | |--IDENT -> Map [41:8] - | | | |--ANNOTATIONS -> ANNOTATIONS [41:12] - | | | | `--ANNOTATION -> ANNOTATION [41:12] - | | | | |--AT -> @ [41:12] - | | | | `--IDENT -> Nullable [41:13] - | | | `--IDENT -> Entry [41:22] - | | `--IDENT -> e [41:28] - | |--SEMI -> ; [41:29] - | |--VARIABLE_DEF -> VARIABLE_DEF [42:8] - | | |--MODIFIERS -> MODIFIERS [42:8] - | | |--TYPE -> TYPE [42:8] - | | | `--IDENT -> String [42:8] - | | |--IDENT -> str [42:15] - | | `--ASSIGN -> = [42:19] - | | `--EXPR -> EXPR [42:21] - | | `--TYPECAST -> ( [42:21] - | | |--TYPE -> TYPE [42:22] - | | | |--ANNOTATIONS -> ANNOTATIONS [42:22] - | | | | `--ANNOTATION -> ANNOTATION [42:22] - | | | | |--AT -> @ [42:22] - | | | | `--IDENT -> Nullable [42:23] - | | | `--IDENT -> String [42:32] - | | |--RPAREN -> ) [42:38] - | | `--STRING_LITERAL -> "" [42:40] - | |--SEMI -> ; [42:42] - | |--EXPR -> EXPR [43:42] - | | `--METHOD_CALL -> ( [43:42] - | | |--DOT -> . [43:22] - | | | |--LPAREN -> ( [43:8] - | | | |--LITERAL_NEW -> new [43:9] - | | | | |--IDENT -> Inner3 [43:13] - | | | | |--LPAREN -> ( [43:19] - | | | | |--ELIST -> ELIST [43:20] - | | | | `--RPAREN -> ) [43:20] - | | | |--RPAREN -> ) [43:21] - | | | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [43:23] - | | | | |--GENERIC_START -> < [43:23] - | | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [43:24] - | | | | | |--ANNOTATIONS -> ANNOTATIONS [43:24] - | | | | | | `--ANNOTATION -> ANNOTATION [43:24] - | | | | | | |--AT -> @ [43:24] - | | | | | | `--IDENT -> Nullable [43:25] - | | | | | `--IDENT -> String [43:34] - | | | | `--GENERIC_END -> > [43:40] - | | | `--IDENT -> m [43:41] - | | |--ELIST -> ELIST [43:43] - | | `--RPAREN -> ) [43:43] - | |--SEMI -> ; [43:44] - | |--VARIABLE_DEF -> VARIABLE_DEF [46:8] - | | |--MODIFIERS -> MODIFIERS [46:8] - | | |--TYPE -> TYPE [46:8] - | | | `--IDENT -> IntBinaryOperator [46:8] - | | |--IDENT -> ibo [46:26] - | | `--ASSIGN -> = [46:30] - | | `--EXPR -> EXPR [46:36] - | | `--METHOD_REF -> :: [46:36] - | | |--IDENT -> Math [46:32] - | | `--IDENT -> max [46:38] - | |--SEMI -> ; [46:41] - | |--EXPR -> EXPR [47:10] - | | `--ASSIGN -> = [47:10] - | | |--IDENT -> s [47:8] - | | `--METHOD_REF -> :: [47:38] - | | |--IDENT -> InputRegressionJava8Class1 [47:12] - | | `--LITERAL_NEW -> new [47:40] - | |--SEMI -> ; [47:43] - | |--EXPR -> EXPR [48:10] - | | `--ASSIGN -> = [48:10] - | | |--IDENT -> s [48:8] - | | `--METHOD_REF -> :: [48:33] - | | |--DOT -> . [48:18] - | | | |--IDENT -> Inner1 [48:12] - | | | |--IDENT -> Inner2 [48:19] - | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [48:25] - | | | |--GENERIC_START -> < [48:25] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [48:26] - | | | | `--IDENT -> String [48:26] - | | | `--GENERIC_END -> > [48:32] - | | `--LITERAL_NEW -> new [48:35] - | |--SEMI -> ; [48:38] - | |--VARIABLE_DEF -> VARIABLE_DEF [51:8] - | | |--MODIFIERS -> MODIFIERS [51:8] - | | |--TYPE -> TYPE [51:8] - | | | `--IDENT -> Runnable [51:8] - | | |--IDENT -> r1 [51:17] - | | `--ASSIGN -> = [51:20] - | | `--LAMBDA -> -> [51:25] - | | |--LPAREN -> ( [51:22] - | | |--PARAMETERS -> PARAMETERS [51:23] - | | |--RPAREN -> ) [51:23] - | | `--EXPR -> EXPR [51:29] - | | `--METHOD_CALL -> ( [51:29] - | | |--IDENT -> m [51:28] - | | |--ELIST -> ELIST [51:30] - | | `--RPAREN -> ) [51:30] - | |--SEMI -> ; [51:31] - | |--VARIABLE_DEF -> VARIABLE_DEF [52:8] - | | |--MODIFIERS -> MODIFIERS [52:8] - | | |--TYPE -> TYPE [52:8] - | | | `--IDENT -> Runnable [52:8] - | | |--IDENT -> r2 [52:17] - | | `--ASSIGN -> = [52:20] - | | `--LAMBDA -> -> [52:25] - | | |--LPAREN -> ( [52:22] - | | |--PARAMETERS -> PARAMETERS [52:23] - | | |--RPAREN -> ) [52:23] - | | `--SLIST -> { [52:28] - | | |--EXPR -> EXPR [52:31] - | | | `--METHOD_CALL -> ( [52:31] - | | | |--IDENT -> m [52:30] - | | | |--ELIST -> ELIST [52:32] - | | | `--RPAREN -> ) [52:32] - | | |--SEMI -> ; [52:33] - | | `--RCURLY -> } [52:35] - | |--SEMI -> ; [52:37] - | |--EXPR -> EXPR [53:24] - | | `--METHOD_CALL -> ( [53:24] - | | |--DOT -> . [53:19] - | | | |--IDENT -> Collections [53:8] - | | | `--IDENT -> sort [53:20] - | | |--ELIST -> ELIST [53:25] - | | | |--EXPR -> EXPR [53:25] - | | | | `--IDENT -> vlist [53:25] - | | | |--COMMA -> , [53:30] - | | | `--LAMBDA -> -> [53:40] - | | | |--LPAREN -> ( [53:32] - | | | |--PARAMETERS -> PARAMETERS [53:33] - | | | | |--PARAMETER_DEF -> PARAMETER_DEF [53:33] - | | | | | |--MODIFIERS -> MODIFIERS [53:33] - | | | | | |--TYPE -> TYPE [53:33] - | | | | | `--IDENT -> l [53:33] - | | | | |--COMMA -> , [53:34] - | | | | `--PARAMETER_DEF -> PARAMETER_DEF [53:37] - | | | | |--MODIFIERS -> MODIFIERS [53:37] - | | | | |--TYPE -> TYPE [53:37] - | | | | `--IDENT -> r [53:37] - | | | |--RPAREN -> ) [53:38] - | | | `--EXPR -> EXPR [53:50] - | | | `--QUESTION -> ? [53:50] - | | | |--EQUAL -> == [53:45] - | | | | |--IDENT -> l [53:43] - | | | | `--IDENT -> r [53:48] - | | | |--NUM_INT -> 0 [53:52] - | | | |--COLON -> : [53:54] - | | | `--NUM_INT -> 1 [53:56] - | | `--RPAREN -> ) [53:57] - | |--SEMI -> ; [53:58] + | | | `--IDENT -> Object [38:8] + | | |--IDENT -> o [38:15] + | | `--ASSIGN -> = [38:17] + | | `--EXPR -> EXPR [38:19] + | | `--LITERAL_NULL -> null [38:19] + | |--SEMI -> ; [38:23] + | |--VARIABLE_DEF -> VARIABLE_DEF [39:8] + | | |--MODIFIERS -> MODIFIERS [39:8] + | | |--TYPE -> TYPE [39:8] + | | | |--IDENT -> List [39:8] + | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [39:12] + | | | |--GENERIC_START -> < [39:12] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [39:13] + | | | | `--IDENT -> String [39:13] + | | | `--GENERIC_END -> > [39:19] + | | `--IDENT -> vlist [39:21] + | |--SEMI -> ; [39:26] + | |--EXPR -> EXPR [40:14] + | | `--ASSIGN -> = [40:14] + | | |--IDENT -> vlist [40:8] + | | `--LITERAL_NEW -> new [40:16] + | | |--IDENT -> ArrayList [40:20] + | | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [40:29] + | | | |--GENERIC_START -> < [40:29] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [40:30] + | | | | `--IDENT -> String [40:30] + | | | `--GENERIC_END -> > [40:36] + | | |--LPAREN -> ( [40:37] + | | |--ELIST -> ELIST [40:38] + | | `--RPAREN -> ) [40:38] + | |--SEMI -> ; [40:39] + | |--VARIABLE_DEF -> VARIABLE_DEF [41:8] + | | |--MODIFIERS -> MODIFIERS [41:8] + | | |--TYPE -> TYPE [41:8] + | | | |--IDENT -> Supplier [41:8] + | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [41:16] + | | | |--GENERIC_START -> < [41:16] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [41:17] + | | | | `--WILDCARD_TYPE -> ? [41:17] + | | | `--GENERIC_END -> > [41:18] + | | `--IDENT -> s [41:20] + | |--SEMI -> ; [41:21] + | |--VARIABLE_DEF -> VARIABLE_DEF [44:11] + | | |--MODIFIERS -> MODIFIERS [44:11] + | | |--TYPE -> TYPE [44:11] + | | | `--DOT -> . [44:11] + | | | |--IDENT -> Map [44:8] + | | | |--ANNOTATIONS -> ANNOTATIONS [44:12] + | | | | `--ANNOTATION -> ANNOTATION [44:12] + | | | | |--AT -> @ [44:12] + | | | | `--IDENT -> Nullable [44:13] + | | | `--IDENT -> Entry [44:22] + | | `--IDENT -> e [44:28] + | |--SEMI -> ; [44:29] + | |--VARIABLE_DEF -> VARIABLE_DEF [45:8] + | | |--MODIFIERS -> MODIFIERS [45:8] + | | |--TYPE -> TYPE [45:8] + | | | `--IDENT -> String [45:8] + | | |--IDENT -> str [45:15] + | | `--ASSIGN -> = [45:19] + | | `--EXPR -> EXPR [45:21] + | | `--TYPECAST -> ( [45:21] + | | |--TYPE -> TYPE [45:22] + | | | |--ANNOTATIONS -> ANNOTATIONS [45:22] + | | | | `--ANNOTATION -> ANNOTATION [45:22] + | | | | |--AT -> @ [45:22] + | | | | `--IDENT -> Nullable [45:23] + | | | `--IDENT -> String [45:32] + | | |--RPAREN -> ) [45:38] + | | `--STRING_LITERAL -> "" [45:40] + | |--SEMI -> ; [45:42] + | |--EXPR -> EXPR [46:42] + | | `--METHOD_CALL -> ( [46:42] + | | |--DOT -> . [46:22] + | | | |--LPAREN -> ( [46:8] + | | | |--LITERAL_NEW -> new [46:9] + | | | | |--IDENT -> Inner3 [46:13] + | | | | |--LPAREN -> ( [46:19] + | | | | |--ELIST -> ELIST [46:20] + | | | | `--RPAREN -> ) [46:20] + | | | |--RPAREN -> ) [46:21] + | | | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [46:23] + | | | | |--GENERIC_START -> < [46:23] + | | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [46:24] + | | | | | |--ANNOTATIONS -> ANNOTATIONS [46:24] + | | | | | | `--ANNOTATION -> ANNOTATION [46:24] + | | | | | | |--AT -> @ [46:24] + | | | | | | `--IDENT -> Nullable [46:25] + | | | | | `--IDENT -> String [46:34] + | | | | `--GENERIC_END -> > [46:40] + | | | `--IDENT -> m [46:41] + | | |--ELIST -> ELIST [46:43] + | | `--RPAREN -> ) [46:43] + | |--SEMI -> ; [46:44] + | |--VARIABLE_DEF -> VARIABLE_DEF [49:8] + | | |--MODIFIERS -> MODIFIERS [49:8] + | | |--TYPE -> TYPE [49:8] + | | | `--IDENT -> IntBinaryOperator [49:8] + | | |--IDENT -> ibo [49:26] + | | `--ASSIGN -> = [49:30] + | | `--EXPR -> EXPR [49:36] + | | `--METHOD_REF -> :: [49:36] + | | |--IDENT -> Math [49:32] + | | `--IDENT -> max [49:38] + | |--SEMI -> ; [49:41] + | |--EXPR -> EXPR [50:10] + | | `--ASSIGN -> = [50:10] + | | |--IDENT -> s [50:8] + | | `--METHOD_REF -> :: [50:38] + | | |--IDENT -> InputRegressionJava8Class1 [50:12] + | | `--LITERAL_NEW -> new [50:40] + | |--SEMI -> ; [50:43] + | |--EXPR -> EXPR [51:10] + | | `--ASSIGN -> = [51:10] + | | |--IDENT -> s [51:8] + | | `--METHOD_REF -> :: [51:33] + | | |--DOT -> . [51:18] + | | | |--IDENT -> Inner1 [51:12] + | | | |--IDENT -> Inner2 [51:19] + | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [51:25] + | | | |--GENERIC_START -> < [51:25] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [51:26] + | | | | `--IDENT -> String [51:26] + | | | `--GENERIC_END -> > [51:32] + | | `--LITERAL_NEW -> new [51:35] + | |--SEMI -> ; [51:38] | |--VARIABLE_DEF -> VARIABLE_DEF [54:8] | | |--MODIFIERS -> MODIFIERS [54:8] | | |--TYPE -> TYPE [54:8] - | | | |--IDENT -> Predicate [54:8] - | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [54:17] - | | | |--GENERIC_START -> < [54:17] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [54:18] - | | | | `--WILDCARD_TYPE -> ? [54:18] - | | | `--GENERIC_END -> > [54:19] - | | |--IDENT -> t [54:21] - | | `--ASSIGN -> = [54:23] - | | `--EXPR -> EXPR [54:29] - | | `--QUESTION -> ? [54:29] - | | |--LPAREN -> ( [54:25] - | | |--IDENT -> b [54:26] - | | |--RPAREN -> ) [54:27] - | | |--LITERAL_NULL -> null [54:31] - | | |--COLON -> : [54:36] - | | `--LAMBDA -> -> [54:45] - | | |--IDENT -> object [54:38] - | | `--EXPR -> EXPR [54:56] - | | `--METHOD_CALL -> ( [54:56] - | | |--DOT -> . [54:49] - | | | |--IDENT -> o [54:48] - | | | `--IDENT -> equals [54:50] - | | |--ELIST -> ELIST [54:57] - | | | `--EXPR -> EXPR [54:57] - | | | `--IDENT -> object [54:57] - | | `--RPAREN -> ) [54:63] - | |--SEMI -> ; [54:64] + | | | `--IDENT -> Runnable [54:8] + | | |--IDENT -> r1 [54:17] + | | `--ASSIGN -> = [54:20] + | | `--LAMBDA -> -> [54:25] + | | |--LPAREN -> ( [54:22] + | | |--PARAMETERS -> PARAMETERS [54:23] + | | |--RPAREN -> ) [54:23] + | | `--EXPR -> EXPR [54:29] + | | `--METHOD_CALL -> ( [54:29] + | | |--IDENT -> m [54:28] + | | |--ELIST -> ELIST [54:30] + | | `--RPAREN -> ) [54:30] + | |--SEMI -> ; [54:31] | |--VARIABLE_DEF -> VARIABLE_DEF [55:8] | | |--MODIFIERS -> MODIFIERS [55:8] | | |--TYPE -> TYPE [55:8] - | | | `--IDENT -> Double [55:8] - | | |--IDENT -> mPi [55:15] - | | `--ASSIGN -> = [55:19] - | | `--EXPR -> EXPR [55:25] - | | `--DOT -> . [55:25] - | | |--IDENT -> Math [55:21] - | | `--IDENT -> PI [55:26] - | |--SEMI -> ; [55:28] - | `--RCURLY -> } [56:4] - |--VARIABLE_DEF -> VARIABLE_DEF [58:4] - | |--MODIFIERS -> MODIFIERS [58:4] - | | |--LITERAL_STATIC -> static [58:4] - | | `--FINAL -> final [58:11] - | |--TYPE -> TYPE [58:17] - | | |--IDENT -> Comparator [58:17] - | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [58:27] - | | |--GENERIC_START -> < [58:27] - | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [58:28] - | | | `--WILDCARD_TYPE -> ? [58:28] - | | `--GENERIC_END -> > [58:29] - | |--IDENT -> f [58:31] - | |--ASSIGN -> = [58:33] - | | `--EXPR -> EXPR [58:35] - | | `--TYPECAST -> ( [58:35] - | | |--TYPE -> TYPE [58:36] - | | | |--IDENT -> Comparator [58:36] - | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [58:46] - | | | |--GENERIC_START -> < [58:46] - | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [58:47] - | | | | `--WILDCARD_TYPE -> ? [58:47] - | | | `--GENERIC_END -> > [58:48] - | | |--RPAREN -> ) [58:49] - | | `--LAMBDA -> -> [58:74] - | | |--LPAREN -> ( [58:51] - | | |--PARAMETERS -> PARAMETERS [58:52] - | | | |--PARAMETER_DEF -> PARAMETER_DEF [58:52] - | | | | |--MODIFIERS -> MODIFIERS [58:52] - | | | | |--TYPE -> TYPE [58:52] - | | | | `--IDENT -> dateTime1 [58:52] - | | | |--COMMA -> , [58:61] - | | | `--PARAMETER_DEF -> PARAMETER_DEF [58:63] - | | | |--MODIFIERS -> MODIFIERS [58:63] - | | | |--TYPE -> TYPE [58:63] - | | | `--IDENT -> dateTime2 [58:63] - | | |--RPAREN -> ) [58:72] - | | `--SLIST -> { [58:77] - | | |--LITERAL_RETURN -> return [58:79] - | | | |--EXPR -> EXPR [58:86] - | | | | `--NUM_INT -> 0 [58:86] - | | | `--SEMI -> ; [58:87] - | | `--RCURLY -> } [58:89] - | `--SEMI -> ; [58:90] - `--RCURLY -> } [59:0] -SEMI -> ; [60:0] -ANNOTATION_DEF -> ANNOTATION_DEF [61:0] -|--MODIFIERS -> MODIFIERS [61:0] -| |--ANNOTATION -> ANNOTATION [61:0] -| | |--AT -> @ [61:0] -| | |--IDENT -> Retention [61:1] -| | |--LPAREN -> ( [61:10] -| | |--EXPR -> EXPR [61:26] -| | | `--DOT -> . [61:26] -| | | |--IDENT -> RetentionPolicy [61:11] -| | | `--IDENT -> CLASS [61:27] -| | `--RPAREN -> ) [61:32] -| `--ANNOTATION -> ANNOTATION [62:0] -| |--AT -> @ [62:0] -| |--IDENT -> Target [62:1] -| |--LPAREN -> ( [62:7] -| |--ANNOTATION_ARRAY_INIT -> { [62:8] -| | |--EXPR -> EXPR [62:21] -| | | `--DOT -> . [62:21] -| | | |--IDENT -> ElementType [62:10] -| | | `--IDENT -> TYPE_USE [62:22] -| | `--RCURLY -> } [62:31] -| `--RPAREN -> ) [62:32] -|--AT -> @ [63:0] -|--LITERAL_INTERFACE -> interface [63:1] -|--IDENT -> Nullable [63:11] -`--OBJBLOCK -> OBJBLOCK [63:20] - |--LCURLY -> { [63:20] - `--RCURLY -> } [64:0] + | | | `--IDENT -> Runnable [55:8] + | | |--IDENT -> r2 [55:17] + | | `--ASSIGN -> = [55:20] + | | `--LAMBDA -> -> [55:25] + | | |--LPAREN -> ( [55:22] + | | |--PARAMETERS -> PARAMETERS [55:23] + | | |--RPAREN -> ) [55:23] + | | `--SLIST -> { [55:28] + | | |--EXPR -> EXPR [55:31] + | | | `--METHOD_CALL -> ( [55:31] + | | | |--IDENT -> m [55:30] + | | | |--ELIST -> ELIST [55:32] + | | | `--RPAREN -> ) [55:32] + | | |--SEMI -> ; [55:33] + | | `--RCURLY -> } [55:35] + | |--SEMI -> ; [55:37] + | |--EXPR -> EXPR [56:24] + | | `--METHOD_CALL -> ( [56:24] + | | |--DOT -> . [56:19] + | | | |--IDENT -> Collections [56:8] + | | | `--IDENT -> sort [56:20] + | | |--ELIST -> ELIST [56:25] + | | | |--EXPR -> EXPR [56:25] + | | | | `--IDENT -> vlist [56:25] + | | | |--COMMA -> , [56:30] + | | | `--LAMBDA -> -> [56:40] + | | | |--LPAREN -> ( [56:32] + | | | |--PARAMETERS -> PARAMETERS [56:33] + | | | | |--PARAMETER_DEF -> PARAMETER_DEF [56:33] + | | | | | |--MODIFIERS -> MODIFIERS [56:33] + | | | | | |--TYPE -> TYPE [56:33] + | | | | | `--IDENT -> l [56:33] + | | | | |--COMMA -> , [56:34] + | | | | `--PARAMETER_DEF -> PARAMETER_DEF [56:37] + | | | | |--MODIFIERS -> MODIFIERS [56:37] + | | | | |--TYPE -> TYPE [56:37] + | | | | `--IDENT -> r [56:37] + | | | |--RPAREN -> ) [56:38] + | | | `--EXPR -> EXPR [56:50] + | | | `--QUESTION -> ? [56:50] + | | | |--EQUAL -> == [56:45] + | | | | |--IDENT -> l [56:43] + | | | | `--IDENT -> r [56:48] + | | | |--NUM_INT -> 0 [56:52] + | | | |--COLON -> : [56:54] + | | | `--NUM_INT -> 1 [56:56] + | | `--RPAREN -> ) [56:57] + | |--SEMI -> ; [56:58] + | |--VARIABLE_DEF -> VARIABLE_DEF [57:8] + | | |--MODIFIERS -> MODIFIERS [57:8] + | | |--TYPE -> TYPE [57:8] + | | | |--IDENT -> Predicate [57:8] + | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [57:17] + | | | |--GENERIC_START -> < [57:17] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [57:18] + | | | | `--WILDCARD_TYPE -> ? [57:18] + | | | `--GENERIC_END -> > [57:19] + | | |--IDENT -> t [57:21] + | | `--ASSIGN -> = [57:23] + | | `--EXPR -> EXPR [57:29] + | | `--QUESTION -> ? [57:29] + | | |--LPAREN -> ( [57:25] + | | |--IDENT -> b [57:26] + | | |--RPAREN -> ) [57:27] + | | |--LITERAL_NULL -> null [57:31] + | | |--COLON -> : [57:36] + | | `--LAMBDA -> -> [57:45] + | | |--IDENT -> object [57:38] + | | `--EXPR -> EXPR [57:56] + | | `--METHOD_CALL -> ( [57:56] + | | |--DOT -> . [57:49] + | | | |--IDENT -> o [57:48] + | | | `--IDENT -> equals [57:50] + | | |--ELIST -> ELIST [57:57] + | | | `--EXPR -> EXPR [57:57] + | | | `--IDENT -> object [57:57] + | | `--RPAREN -> ) [57:63] + | |--SEMI -> ; [57:64] + | |--VARIABLE_DEF -> VARIABLE_DEF [58:8] + | | |--MODIFIERS -> MODIFIERS [58:8] + | | |--TYPE -> TYPE [58:8] + | | | `--IDENT -> Double [58:8] + | | |--IDENT -> mPi [58:15] + | | `--ASSIGN -> = [58:19] + | | `--EXPR -> EXPR [58:25] + | | `--DOT -> . [58:25] + | | |--IDENT -> Math [58:21] + | | `--IDENT -> PI [58:26] + | |--SEMI -> ; [58:28] + | `--RCURLY -> } [59:4] + |--VARIABLE_DEF -> VARIABLE_DEF [61:4] + | |--MODIFIERS -> MODIFIERS [61:4] + | | |--LITERAL_STATIC -> static [61:4] + | | `--FINAL -> final [61:11] + | |--TYPE -> TYPE [61:17] + | | |--IDENT -> Comparator [61:17] + | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [61:27] + | | |--GENERIC_START -> < [61:27] + | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [61:28] + | | | `--WILDCARD_TYPE -> ? [61:28] + | | `--GENERIC_END -> > [61:29] + | |--IDENT -> f [61:31] + | |--ASSIGN -> = [61:33] + | | `--EXPR -> EXPR [61:35] + | | `--TYPECAST -> ( [61:35] + | | |--TYPE -> TYPE [61:36] + | | | |--IDENT -> Comparator [61:36] + | | | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [61:46] + | | | |--GENERIC_START -> < [61:46] + | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [61:47] + | | | | `--WILDCARD_TYPE -> ? [61:47] + | | | `--GENERIC_END -> > [61:48] + | | |--RPAREN -> ) [61:49] + | | `--LAMBDA -> -> [61:74] + | | |--LPAREN -> ( [61:51] + | | |--PARAMETERS -> PARAMETERS [61:52] + | | | |--PARAMETER_DEF -> PARAMETER_DEF [61:52] + | | | | |--MODIFIERS -> MODIFIERS [61:52] + | | | | |--TYPE -> TYPE [61:52] + | | | | `--IDENT -> dateTime1 [61:52] + | | | |--COMMA -> , [61:61] + | | | `--PARAMETER_DEF -> PARAMETER_DEF [61:63] + | | | |--MODIFIERS -> MODIFIERS [61:63] + | | | |--TYPE -> TYPE [61:63] + | | | `--IDENT -> dateTime2 [61:63] + | | |--RPAREN -> ) [61:72] + | | `--SLIST -> { [61:77] + | | |--LITERAL_RETURN -> return [61:79] + | | | |--EXPR -> EXPR [61:86] + | | | | `--NUM_INT -> 0 [61:86] + | | | `--SEMI -> ; [61:87] + | | `--RCURLY -> } [61:89] + | `--SEMI -> ; [61:90] + |--CLASS_DEF -> CLASS_DEF [63:4] + | |--MODIFIERS -> MODIFIERS [63:4] + | | `--LITERAL_PRIVATE -> private [63:4] + | |--LITERAL_CLASS -> class [63:12] + | |--IDENT -> Inner [63:18] + | `--OBJBLOCK -> OBJBLOCK [63:24] + | |--LCURLY -> { [63:24] + | |--CTOR_DEF -> CTOR_DEF [64:8] + | | |--MODIFIERS -> MODIFIERS [64:8] + | | | `--LITERAL_PUBLIC -> public [64:8] + | | |--IDENT -> Inner [64:15] + | | |--LPAREN -> ( [64:20] + | | |--PARAMETERS -> PARAMETERS [64:21] + | | | `--PARAMETER_DEF -> PARAMETER_DEF [64:21] + | | | |--MODIFIERS -> MODIFIERS [64:21] + | | | |--TYPE -> TYPE [64:21] + | | | | `--IDENT -> InputRegressionJava8Class1 [64:21] + | | | `--DOT -> . [64:74] + | | | |--IDENT -> InputRegressionJava8Class1 [64:48] + | | | `--LITERAL_THIS -> this [64:75] + | | |--RPAREN -> ) [64:79] + | | `--SLIST -> { [64:81] + | | `--RCURLY -> } [64:82] + | `--RCURLY -> } [65:4] + `--RCURLY -> } [66:0] +SEMI -> ; [67:0] +CLASS_DEF -> CLASS_DEF [68:0] +|--MODIFIERS -> MODIFIERS [68:0] +|--LITERAL_CLASS -> class [68:0] +|--IDENT -> InputRegressionJava8TypeParam [68:6] +|--TYPE_PARAMETERS -> TYPE_PARAMETERS [68:36] +| |--GENERIC_START -> < [68:36] +| |--TYPE_PARAMETER -> TYPE_PARAMETER [68:37] +| | |--ANNOTATIONS -> ANNOTATIONS [68:37] +| | | `--ANNOTATION -> ANNOTATION [68:37] +| | | |--AT -> @ [68:37] +| | | `--IDENT -> Nullable [68:38] +| | `--IDENT -> T [68:47] +| `--GENERIC_END -> > [68:48] +`--OBJBLOCK -> OBJBLOCK [68:50] + |--LCURLY -> { [68:50] + `--RCURLY -> } [69:0] +ANNOTATION_DEF -> ANNOTATION_DEF [70:0] +|--MODIFIERS -> MODIFIERS [70:0] +| |--ANNOTATION -> ANNOTATION [70:0] +| | |--AT -> @ [70:0] +| | |--IDENT -> Retention [70:1] +| | |--LPAREN -> ( [70:10] +| | |--EXPR -> EXPR [70:26] +| | | `--DOT -> . [70:26] +| | | |--IDENT -> RetentionPolicy [70:11] +| | | `--IDENT -> CLASS [70:27] +| | `--RPAREN -> ) [70:32] +| `--ANNOTATION -> ANNOTATION [71:0] +| |--AT -> @ [71:0] +| |--IDENT -> Target [71:1] +| |--LPAREN -> ( [71:7] +| |--ANNOTATION_ARRAY_INIT -> { [71:8] +| | |--EXPR -> EXPR [71:21] +| | | `--DOT -> . [71:21] +| | | |--IDENT -> ElementType [71:10] +| | | `--IDENT -> TYPE_USE [71:22] +| | `--RCURLY -> } [71:31] +| `--RPAREN -> ) [71:32] +|--AT -> @ [72:0] +|--LITERAL_INTERFACE -> interface [72:1] +|--IDENT -> Nullable [72:11] +`--OBJBLOCK -> OBJBLOCK [72:20] + |--LCURLY -> { [72:20] + `--RCURLY -> } [73:0] diff --git a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations11.java b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations11.java new file mode 100644 index 000000000000..4a6db6656e8a --- /dev/null +++ b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations11.java @@ -0,0 +1,5 @@ +//Compilable with Java8 +package com.puppycrawl.tools.checkstyle.grammars.java8; + +class InputAnnotations11 <@Nullable T> { +} diff --git a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations5.java b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations5.java index 087c485302ea..f198b8258295 100644 --- a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations5.java +++ b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammars/java8/InputAnnotations5.java @@ -8,6 +8,7 @@ public class InputAnnotations5 { void monitorTemperature() throws @Critical Exception { } + void monitorTemperature2() throws NullPointerException, @Critical Exception { } @Target(ElementType.TYPE_USE) @interface Critical {