Issue #2396: added ast regression testing

This commit is contained in:
rnveach 2016-02-04 15:49:23 -05:00 committed by Roman Ivanov
parent 7c0f9a446e
commit 4820a458f0
20 changed files with 4595 additions and 0 deletions

View File

@ -0,0 +1,103 @@
////////////////////////////////////////////////////////////////////////////////
// checkstyle: Checks Java source code for adherence to a set of rules.
// Copyright (C) 2001-2016 the original author or authors.
//
// 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;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import org.junit.Test;
import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
public class AstRegressionTest extends BaseCheckTestSupport {
@Override
protected String getPath(String filename) throws IOException {
return super.getPath("grammars" + File.separator + filename);
}
@Override
protected String getNonCompilablePath(String filename) throws IOException {
return super.getNonCompilablePath("grammars" + File.separator + filename);
}
@Test
public void testClassAstTree1() throws Exception {
verifyAst(getPath("InputRegressionJavaClass1Ast.txt"),
getPath("InputRegressionJavaClass1.java"));
}
@Test
public void testClassAstTree2() throws Exception {
verifyAst(getPath("InputRegressionJavaClass2Ast.txt"),
getPath("InputRegressionJavaClass2.java"));
}
@Test
public void testJava8ClassAstTree1() throws Exception {
verifyAst(getNonCompilablePath("InputRegressionJava8Class1Ast.txt"),
getNonCompilablePath("InputRegressionJava8Class1.java"));
}
@Test
public void testInterfaceAstTree1() throws Exception {
verifyAst(getPath("InputRegressionJavaInterface1Ast.txt"),
getPath("InputRegressionJavaInterface1.java"));
}
@Test
public void testInterfaceAstTree2() throws Exception {
verifyAst(getPath("InputRegressionJavaInterface2Ast.txt"),
getPath("InputRegressionJavaInterface2.java"));
}
@Test
public void testJava8InterfaceAstTree1() throws Exception {
verifyAst(getNonCompilablePath("InputRegressionJava8Interface1Ast.txt"),
getNonCompilablePath("InputRegressionJava8Interface1.java"));
}
@Test
public void testEnumAstTree1() throws Exception {
verifyAst(getPath("InputRegressionJavaEnum1Ast.txt"),
getPath("InputRegressionJavaEnum1.java"));
}
@Test
public void testEnumAstTree2() throws Exception {
verifyAst(getPath("InputRegressionJavaEnum2Ast.txt"),
getPath("InputRegressionJavaEnum2.java"));
}
@Test
public void testAnnotationAstTree1() throws Exception {
verifyAst(getPath("InputRegressionJavaAnnotation1Ast.txt"),
getPath("InputRegressionJavaAnnotation1.java"));
}
@Test
public void testUnusedMethods() throws Exception {
final Class<?> clss = GeneratedJavaLexer.class;
final Constructor<?> constructor = clss.getDeclaredConstructor(InputStream.class);
constructor.newInstance((InputStream) null);
}
}

View File

@ -0,0 +1,64 @@
//Compilable with Java8
package com.puppycrawl.tools.checkstyle.grammars;
;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Map;
import java.util.List;
import java.util.function.IntBinaryOperator;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class InputRegressionJava8Class1 {
static class Inner1 { static class Inner2<V> { public void m() {} } }
static class Inner3<T> { public void m() {} }
public void m() {}
public static void sm() {}
void m1() throws @Nullable Exception {}
public static <T> void m2(T @Nullable [] array) {}
{
List<String> vlist = new ArrayList<String>();
}
public void instructions() {
// used to let inputs compile
boolean b = Math.random() > 0;
int vint;
Object o = null;
List<String> vlist;
vlist = new ArrayList<String>();
Supplier<?> s;
// annotations
Map.@Nullable Entry e;
String str = (@Nullable String) "";
(new Inner3()).<@Nullable String>m();
// method reference
IntBinaryOperator ibo = Math::max;
s = InputRegressionJava8Class1::new;
s = Inner1.Inner2<String>::new;
// lambda
Runnable r1 = () -> m();
Runnable r2 = () -> { m(); } ;
Collections.sort(vlist, (l, r) -> l == r ? 0 : 1);
Predicate<?> t = (b) ? null : object -> o.equals(object);
Double mPi = Math.PI;
}
static final Comparator<?> f = (Comparator<?>) (dateTime1, dateTime2) -> { return 0; };
}
;
@Retention(RetentionPolicy.CLASS)
@Target({ ElementType.TYPE_USE })
@interface Nullable {
}

View File

@ -0,0 +1,610 @@
PACKAGE_DEF -> package [2:0]
|--ANNOTATIONS -> ANNOTATIONS [2:39]
|--DOT -> . [2:39]
| |--DOT -> . [2:28]
| | |--DOT -> . [2:22]
| | | |--DOT -> . [2:11]
| | | | |--IDENT -> com [2:8]
| | | | `--IDENT -> puppycrawl [2:12]
| | | `--IDENT -> tools [2:23]
| | `--IDENT -> checkstyle [2:29]
| `--IDENT -> grammars [2:40]
`--SEMI -> ; [2:48]
SEMI -> ; [3:0]
IMPORT -> import [4:0]
|--DOT -> . [4:27]
| |--DOT -> . [4:16]
| | |--DOT -> . [4:11]
| | | |--IDENT -> java [4:7]
| | | `--IDENT -> lang [4:12]
| | `--IDENT -> annotation [4:17]
| `--IDENT -> ElementType [4:28]
`--SEMI -> ; [4:39]
IMPORT -> import [5:0]
|--DOT -> . [5:27]
| |--DOT -> . [5:16]
| | |--DOT -> . [5:11]
| | | |--IDENT -> java [5:7]
| | | `--IDENT -> lang [5:12]
| | `--IDENT -> annotation [5:17]
| `--IDENT -> Retention [5:28]
`--SEMI -> ; [5:37]
IMPORT -> import [6:0]
|--DOT -> . [6:27]
| |--DOT -> . [6:16]
| | |--DOT -> . [6:11]
| | | |--IDENT -> java [6:7]
| | | `--IDENT -> lang [6:12]
| | `--IDENT -> annotation [6:17]
| `--IDENT -> RetentionPolicy [6:28]
`--SEMI -> ; [6:43]
IMPORT -> import [7:0]
|--DOT -> . [7:27]
| |--DOT -> . [7:16]
| | |--DOT -> . [7:11]
| | | |--IDENT -> java [7:7]
| | | `--IDENT -> lang [7:12]
| | `--IDENT -> annotation [7:17]
| `--IDENT -> Target [7:28]
`--SEMI -> ; [7:34]
IMPORT -> import [8:0]
|--DOT -> . [8:16]
| |--DOT -> . [8:11]
| | |--IDENT -> java [8:7]
| | `--IDENT -> util [8:12]
| `--IDENT -> ArrayList [8:17]
`--SEMI -> ; [8:26]
IMPORT -> import [9:0]
|--DOT -> . [9:16]
| |--DOT -> . [9:11]
| | |--IDENT -> java [9:7]
| | `--IDENT -> util [9:12]
| `--IDENT -> Collections [9:17]
`--SEMI -> ; [9:28]
IMPORT -> import [10:0]
|--DOT -> . [10:16]
| |--DOT -> . [10:11]
| | |--IDENT -> java [10:7]
| | `--IDENT -> util [10:12]
| `--IDENT -> Comparator [10:17]
`--SEMI -> ; [10:27]
IMPORT -> import [11:0]
|--DOT -> . [11:16]
| |--DOT -> . [11:11]
| | |--IDENT -> java [11:7]
| | `--IDENT -> util [11:12]
| `--IDENT -> Map [11:17]
`--SEMI -> ; [11:20]
IMPORT -> import [12:0]
|--DOT -> . [12:16]
| |--DOT -> . [12:11]
| | |--IDENT -> java [12:7]
| | `--IDENT -> util [12:12]
| `--IDENT -> List [12:17]
`--SEMI -> ; [12:21]
IMPORT -> import [13:0]
|--DOT -> . [13:25]
| |--DOT -> . [13:16]
| | |--DOT -> . [13:11]
| | | |--IDENT -> java [13:7]
| | | `--IDENT -> util [13:12]
| | `--IDENT -> function [13:17]
| `--IDENT -> IntBinaryOperator [13:26]
`--SEMI -> ; [13:43]
IMPORT -> import [14:0]
|--DOT -> . [14:25]
| |--DOT -> . [14:16]
| | |--DOT -> . [14:11]
| | | |--IDENT -> java [14:7]
| | | `--IDENT -> util [14:12]
| | `--IDENT -> function [14:17]
| `--IDENT -> Predicate [14:26]
`--SEMI -> ; [14:35]
IMPORT -> import [15:0]
|--DOT -> . [15:25]
| |--DOT -> . [15:16]
| | |--DOT -> . [15:11]
| | | |--IDENT -> java [15:7]
| | | `--IDENT -> util [15:12]
| | `--IDENT -> function [15:17]
| `--IDENT -> Supplier [15:26]
`--SEMI -> ; [15:34]
CLASS_DEF -> CLASS_DEF [17:0]
|--MODIFIERS -> MODIFIERS [17:0]
| `--LITERAL_PUBLIC -> public [17:0]
|--LITERAL_CLASS -> class [17:7]
|--IDENT -> InputRegressionJava8Class1 [17:13]
`--OBJBLOCK -> OBJBLOCK [17:40]
|--LCURLY -> { [17:40]
|--CLASS_DEF -> CLASS_DEF [18:4]
| |--MODIFIERS -> MODIFIERS [18:4]
| | `--LITERAL_STATIC -> static [18:4]
| |--LITERAL_CLASS -> class [18:11]
| |--IDENT -> Inner1 [18:17]
| `--OBJBLOCK -> OBJBLOCK [18:24]
| |--LCURLY -> { [18:24]
| |--CLASS_DEF -> CLASS_DEF [18:26]
| | |--MODIFIERS -> MODIFIERS [18:26]
| | | `--LITERAL_STATIC -> static [18:26]
| | |--LITERAL_CLASS -> class [18:33]
| | |--IDENT -> Inner2 [18:39]
| | |--TYPE_PARAMETERS -> TYPE_PARAMETERS [18:45]
| | | |--GENERIC_START -> < [18:45]
| | | |--TYPE_PARAMETER -> TYPE_PARAMETER [18:46]
| | | | `--IDENT -> V [18:46]
| | | `--GENERIC_END -> > [18:47]
| | `--OBJBLOCK -> OBJBLOCK [18:49]
| | |--LCURLY -> { [18:49]
| | |--METHOD_DEF -> METHOD_DEF [18:51]
| | | |--MODIFIERS -> MODIFIERS [18:51]
| | | | `--LITERAL_PUBLIC -> public [18:51]
| | | |--TYPE -> TYPE [18:58]
| | | | `--LITERAL_VOID -> void [18:58]
| | | |--IDENT -> m [18:63]
| | | |--LPAREN -> ( [18:64]
| | | |--PARAMETERS -> PARAMETERS [18:65]
| | | |--RPAREN -> ) [18:65]
| | | `--SLIST -> { [18:67]
| | | `--RCURLY -> } [18:68]
| | `--RCURLY -> } [18:70]
| `--RCURLY -> } [18:72]
|--CLASS_DEF -> CLASS_DEF [19:4]
| |--MODIFIERS -> MODIFIERS [19:4]
| | `--LITERAL_STATIC -> static [19:4]
| |--LITERAL_CLASS -> class [19:11]
| |--IDENT -> Inner3 [19:17]
| |--TYPE_PARAMETERS -> TYPE_PARAMETERS [19:23]
| | |--GENERIC_START -> < [19:23]
| | |--TYPE_PARAMETER -> TYPE_PARAMETER [19:24]
| | | `--IDENT -> T [19:24]
| | `--GENERIC_END -> > [19:25]
| `--OBJBLOCK -> OBJBLOCK [19:27]
| |--LCURLY -> { [19:27]
| |--METHOD_DEF -> METHOD_DEF [19:29]
| | |--MODIFIERS -> MODIFIERS [19:29]
| | | `--LITERAL_PUBLIC -> public [19:29]
| | |--TYPE -> TYPE [19:36]
| | | `--LITERAL_VOID -> void [19:36]
| | |--IDENT -> m [19:41]
| | |--LPAREN -> ( [19:42]
| | |--PARAMETERS -> PARAMETERS [19:43]
| | |--RPAREN -> ) [19:43]
| | `--SLIST -> { [19:45]
| | `--RCURLY -> } [19:46]
| `--RCURLY -> } [19:48]
|--METHOD_DEF -> METHOD_DEF [21:4]
| |--MODIFIERS -> MODIFIERS [21:4]
| | `--LITERAL_PUBLIC -> public [21:4]
| |--TYPE -> TYPE [21:11]
| | `--LITERAL_VOID -> void [21:11]
| |--IDENT -> m [21:16]
| |--LPAREN -> ( [21:17]
| |--PARAMETERS -> PARAMETERS [21:18]
| |--RPAREN -> ) [21:18]
| `--SLIST -> { [21:20]
| `--RCURLY -> } [21:21]
|--METHOD_DEF -> METHOD_DEF [22:4]
| |--MODIFIERS -> MODIFIERS [22:4]
| | |--LITERAL_PUBLIC -> public [22:4]
| | `--LITERAL_STATIC -> static [22:11]
| |--TYPE -> TYPE [22:18]
| | `--LITERAL_VOID -> void [22:18]
| |--IDENT -> sm [22:23]
| |--LPAREN -> ( [22:25]
| |--PARAMETERS -> PARAMETERS [22:26]
| |--RPAREN -> ) [22:26]
| `--SLIST -> { [22:28]
| `--RCURLY -> } [22:29]
|--METHOD_DEF -> METHOD_DEF [23:4]
| |--MODIFIERS -> MODIFIERS [23:4]
| |--TYPE -> TYPE [23:4]
| | `--LITERAL_VOID -> void [23:4]
| |--IDENT -> m1 [23:9]
| |--LPAREN -> ( [23:11]
| |--PARAMETERS -> PARAMETERS [23:12]
| |--RPAREN -> ) [23:12]
| |--LITERAL_THROWS -> throws [23:14]
| | |--ANNOTATIONS -> ANNOTATIONS [23:21]
| | | `--ANNOTATION -> ANNOTATION [23:21]
| | | |--AT -> @ [23:21]
| | | `--IDENT -> Nullable [23:22]
| | `--IDENT -> Exception [23:31]
| `--SLIST -> { [23:41]
| `--RCURLY -> } [23:42]
|--METHOD_DEF -> METHOD_DEF [24:4]
| |--MODIFIERS -> MODIFIERS [24:4]
| | |--LITERAL_PUBLIC -> public [24:4]
| | `--LITERAL_STATIC -> static [24:11]
| |--TYPE_PARAMETERS -> TYPE_PARAMETERS [24:18]
| | |--GENERIC_START -> < [24:18]
| | |--TYPE_PARAMETER -> TYPE_PARAMETER [24:19]
| | | `--IDENT -> T [24:19]
| | `--GENERIC_END -> > [24:20]
| |--TYPE -> TYPE [24:22]
| | `--LITERAL_VOID -> void [24:22]
| |--IDENT -> m2 [24:27]
| |--LPAREN -> ( [24:29]
| |--PARAMETERS -> PARAMETERS [24:42]
| | `--PARAMETER_DEF -> PARAMETER_DEF [24:42]
| | |--MODIFIERS -> MODIFIERS [24:42]
| | |--TYPE -> TYPE [24:42]
| | | `--ARRAY_DECLARATOR -> [ [24:42]
| | | |--IDENT -> T [24:30]
| | | |--ANNOTATIONS -> ANNOTATIONS [24:32]
| | | | `--ANNOTATION -> ANNOTATION [24:32]
| | | | |--AT -> @ [24:32]
| | | | `--IDENT -> Nullable [24:33]
| | | `--RBRACK -> ] [24:43]
| | `--IDENT -> array [24:45]
| |--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]
| |--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]
| |--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]
| |--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]
| |--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]

View File

@ -0,0 +1,6 @@
//Compilable with Java8
package com.puppycrawl.tools.checkstyle.grammars;
public interface InputRegressionJava8Interface1 {
default void m() {}
}

View File

@ -0,0 +1,31 @@
PACKAGE_DEF -> package [2:0]
|--ANNOTATIONS -> ANNOTATIONS [2:39]
|--DOT -> . [2:39]
| |--DOT -> . [2:28]
| | |--DOT -> . [2:22]
| | | |--DOT -> . [2:11]
| | | | |--IDENT -> com [2:8]
| | | | `--IDENT -> puppycrawl [2:12]
| | | `--IDENT -> tools [2:23]
| | `--IDENT -> checkstyle [2:29]
| `--IDENT -> grammars [2:40]
`--SEMI -> ; [2:48]
INTERFACE_DEF -> INTERFACE_DEF [4:0]
|--MODIFIERS -> MODIFIERS [4:0]
| `--LITERAL_PUBLIC -> public [4:0]
|--LITERAL_INTERFACE -> interface [4:7]
|--IDENT -> InputRegressionJava8Interface1 [4:17]
`--OBJBLOCK -> OBJBLOCK [4:48]
|--LCURLY -> { [4:48]
|--METHOD_DEF -> METHOD_DEF [5:4]
| |--MODIFIERS -> MODIFIERS [5:4]
| | `--LITERAL_DEFAULT -> default [5:4]
| |--TYPE -> TYPE [5:12]
| | `--LITERAL_VOID -> void [5:12]
| |--IDENT -> m [5:17]
| |--LPAREN -> ( [5:18]
| |--PARAMETERS -> PARAMETERS [5:19]
| |--RPAREN -> ) [5:19]
| `--SLIST -> { [5:21]
| `--RCURLY -> } [5:22]
`--RCURLY -> } [6:0]

View File

@ -0,0 +1,15 @@
package com.puppycrawl.tools.checkstyle.grammars;
@interface InputRegressionJavaAnnotation1 {
int f1 = 0;
String[] m1();
String[] m2() default {};
class SomeClass {
private SomeClass() {}
}
}
@interface ComplexAnnotation {
InputRegressionJavaAnnotation1[] value();
}

View File

@ -0,0 +1,86 @@
PACKAGE_DEF -> package [1:0]
|--ANNOTATIONS -> ANNOTATIONS [1:39]
|--DOT -> . [1:39]
| |--DOT -> . [1:28]
| | |--DOT -> . [1:22]
| | | |--DOT -> . [1:11]
| | | | |--IDENT -> com [1:8]
| | | | `--IDENT -> puppycrawl [1:12]
| | | `--IDENT -> tools [1:23]
| | `--IDENT -> checkstyle [1:29]
| `--IDENT -> grammars [1:40]
`--SEMI -> ; [1:48]
ANNOTATION_DEF -> ANNOTATION_DEF [3:0]
|--MODIFIERS -> MODIFIERS [3:0]
|--AT -> @ [3:0]
|--LITERAL_INTERFACE -> interface [3:1]
|--IDENT -> InputRegressionJavaAnnotation1 [3:11]
`--OBJBLOCK -> OBJBLOCK [3:42]
|--LCURLY -> { [3:42]
|--VARIABLE_DEF -> VARIABLE_DEF [4:4]
| |--MODIFIERS -> MODIFIERS [4:4]
| |--TYPE -> TYPE [4:4]
| | `--LITERAL_INT -> int [4:4]
| |--IDENT -> f1 [4:8]
| |--ASSIGN -> = [4:11]
| | `--EXPR -> EXPR [4:13]
| | `--NUM_INT -> 0 [4:13]
| `--SEMI -> ; [4:14]
|--ANNOTATION_FIELD_DEF -> ANNOTATION_FIELD_DEF [6:10]
| |--MODIFIERS -> MODIFIERS [6:10]
| |--TYPE -> TYPE [6:10]
| | `--ARRAY_DECLARATOR -> [ [6:10]
| | |--IDENT -> String [6:4]
| | `--RBRACK -> ] [6:11]
| |--IDENT -> m1 [6:13]
| |--LPAREN -> ( [6:15]
| |--RPAREN -> ) [6:16]
| `--SEMI -> ; [6:17]
|--ANNOTATION_FIELD_DEF -> ANNOTATION_FIELD_DEF [7:10]
| |--MODIFIERS -> MODIFIERS [7:10]
| |--TYPE -> TYPE [7:10]
| | `--ARRAY_DECLARATOR -> [ [7:10]
| | |--IDENT -> String [7:4]
| | `--RBRACK -> ] [7:11]
| |--IDENT -> m2 [7:13]
| |--LPAREN -> ( [7:15]
| |--RPAREN -> ) [7:16]
| |--LITERAL_DEFAULT -> default [7:18]
| | `--ANNOTATION_ARRAY_INIT -> { [7:26]
| | `--RCURLY -> } [7:27]
| `--SEMI -> ; [7:28]
|--CLASS_DEF -> CLASS_DEF [9:4]
| |--MODIFIERS -> MODIFIERS [9:4]
| |--LITERAL_CLASS -> class [9:4]
| |--IDENT -> SomeClass [9:10]
| `--OBJBLOCK -> OBJBLOCK [9:20]
| |--LCURLY -> { [9:20]
| |--CTOR_DEF -> CTOR_DEF [10:8]
| | |--MODIFIERS -> MODIFIERS [10:8]
| | | `--LITERAL_PRIVATE -> private [10:8]
| | |--IDENT -> SomeClass [10:16]
| | |--LPAREN -> ( [10:25]
| | |--PARAMETERS -> PARAMETERS [10:26]
| | |--RPAREN -> ) [10:26]
| | `--SLIST -> { [10:28]
| | `--RCURLY -> } [10:29]
| `--RCURLY -> } [11:4]
`--RCURLY -> } [12:0]
ANNOTATION_DEF -> ANNOTATION_DEF [13:0]
|--MODIFIERS -> MODIFIERS [13:0]
|--AT -> @ [13:0]
|--LITERAL_INTERFACE -> interface [13:1]
|--IDENT -> ComplexAnnotation [13:11]
`--OBJBLOCK -> OBJBLOCK [13:29]
|--LCURLY -> { [13:29]
|--ANNOTATION_FIELD_DEF -> ANNOTATION_FIELD_DEF [14:34]
| |--MODIFIERS -> MODIFIERS [14:34]
| |--TYPE -> TYPE [14:34]
| | `--ARRAY_DECLARATOR -> [ [14:34]
| | |--IDENT -> InputRegressionJavaAnnotation1 [14:4]
| | `--RBRACK -> ] [14:35]
| |--IDENT -> value [14:37]
| |--LPAREN -> ( [14:42]
| |--RPAREN -> ) [14:43]
| `--SEMI -> ; [14:44]
`--RCURLY -> } [15:0]

View File

@ -0,0 +1,348 @@
package com.puppycrawl.tools.checkstyle.grammars;
import static java.lang.String.valueOf;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.xml.*;
public class InputRegressionJavaClass1 {
//comments
// single line
/* multi on single line */
/* multi
line */
/** javadoc */
// tab -> <-
// fields
// modifiers
public int f1;
private int f2;
protected int f3;
int f4;
static int f5;
final int f6;
volatile int f7;
transient int f8;
Object f9;
// constructors
static {}
public InputRegressionJavaClass1() {f6 = 0;}
public InputRegressionJavaClass1(int i) {this.f6 = i;}
public InputRegressionJavaClass1(float f) {this((int)f);}
InputRegressionJavaClass1(double a) throws Exception {f6 = 0;}
// methods
// modifiers
native void m1();
void m2() {}
synchronized void m4() {}
strictfp void m5() {}
// returns
public int[] m6() {return null;}
public int m7() [] {return null;}
// parameters
public void m10(String p1) {}
public void m11(final String p1) {}
public void m12(String[] p1) {}
public void m13(String[][] p1) {}
public void m14(String p1, String p2) {}
public void m15(String... p1) {}
public void m16(String[]... p1) {}
public void m17(int p1, String[]... p2) {}
// throws
public void m18() throws Exception {}
public void m19() throws IOException, Exception {}
// types
public <T_$> T_$ m20() {return null;}
public <$_T> $_T m21() {return null;}
public <T extends Enum<T>> void m22() {}
public <T> void m23() {};
public <T extends RuntimeException & java.io.Serializable> void m24() {}
// annotations
@SuppressWarnings({})
public void m50() {}
@SuppressWarnings({"1"})
public void m51() {}
@SuppressWarnings({"1","2"})
public void m52() {}
@SuppressWarnings(value={"1"})
public void m53() {}
@SuppressWarnings(value={"1",})
public void m54() {}
@SuppressWarnings(value={"1","2"})
public void m55() {}
@InputRegressionJavaAnnotation1(m1="1", m2="2")
public void m56() {}
@ComplexAnnotation({
@InputRegressionJavaAnnotation1(m1 = "1"), @InputRegressionJavaAnnotation1(m1 = "1")
})
public void m57() {}
public void m58(@Deprecated String s) {}
public void m59(final @Deprecated List l) {}
// extra
{}
;
// instructions
public void instructions() throws Exception {
// used to let inputs compile
boolean b = Math.random() > 0;
// variables and types
byte vbyte;
boolean vboolean;
char vchar;
short vshort;
int vint;
long vlong;
float vfloat;
double vdouble;
int[] varray;
int varray2[];
boolean test1 = true;
// types
String vstring;
List<String> vlist;
Map<String, String[]> vmap;
int[] test2 = {};
List<char[]> test3;
Class<?> test4;
List<? extends InputRegressionJavaClass1> test5;
List<? extends List<Object>> test6;
List<? extends List<List<Object>>> test7;
List<? extends int[]> test8;
List<? super InputRegressionJavaClass1> test9;
// literals
vboolean = true;
vboolean = false;
vchar = ' ';
vchar = '"';
vchar = '\0';
vchar = '\'';
vchar = '\n';
vchar = '\r';
vchar = '\t';
vchar = '\b';
vchar = '\f';
vchar = '\"';
vchar = '\'';
vchar = '\\';
vchar = '\00';
vchar = '\013';
vchar = '\4';
vchar = '\40';
vchar = '\u0000';
vchar = '\u1234';
vchar = '\u005C\u005C';
vchar = '\u005c\u005c';
vchar = '\uu005C\uuuuu005C';
vchar = '\u005cn';
vchar = '\u005cr';
vchar = '\u005ct';
vchar = '\u005cb';
vchar = '\u005cf';
vchar = '\u005c"';
vchar = '\u005c'';
vchar = '\u005c\';
vint = 0;
vint = -1;
vint = +1;
vint = 100_000;
vint = 0x00;
vint = 0x12345678;
vint = 0X9;
vint = 0x1234_5678;
vint = 0b101;
vint = 0B101;
vint = 0b1;
vint = 0b1_0;
vint = 012345670;
vint = 01234_5670;
vlong = 0L;
vlong = 1L;
vlong = 0b1L;
vlong = 1234567890l;
vlong = 1234567890L;
vlong = 0x0l;
vlong = 0xABCDEFl;
vlong = 0XABCDEFL;
vfloat = 0f;
vfloat = 0F;
vfloat = 1.1f;
vfloat = 1.10_1F;
vfloat = 0_1.1_1F;
vfloat = 1e0f;
vfloat = 1e0F;
vfloat = 1.0e0F;
vfloat = 0x2__3_34.4___AFP00_00f;
vdouble = 10.;
vdouble = .1;
vdouble = .1__1_1;
vdouble = 0.0;
vdouble = 1000.0;
vdouble = .1d;
vdouble = 1.D;
vdouble = 0_1.0d;
vdouble = 0_1.0D;
vdouble = 4e23;
vdouble = 4E23;
vdouble = 4E2_3;
vdouble = 0x0.0000000000001p-1022;
vdouble = 0x0.0000000000001P-1022;
vdouble = 0X0.0000000000001p+1022;
vdouble = 0X0.0000000000001P+1022;
vdouble = 0x.0P0;
vdouble = 0X0p+2;
vdouble = 0X0p+20F;
vdouble = 0X0p+2D;
vdouble = 0X0p+2d;
vdouble = 0x1.P-1;
vdouble = 0x.1___AFp1;
vstring = null;
vstring = "";
vstring = "\\";
// assignments and operators
vint = 1 + 1;
vint = 1 - 1;
vint = 1 * 1;
vint = 1 / 1;
vint = 1 % 1;
vint = 1 & 1;
vint = 1 | 1;
vint = 1 ^ 1;
vint = ~1;
vboolean = 1 != 0;
vboolean = 1 == 0;
vboolean = 1 > 0;
vboolean = 1 >= 0;
vboolean = 1 < 0;
vboolean = 1 <= 0;
vboolean = true && true;
vboolean = true || true;
vboolean = true ? true : false;
vboolean = !true;
vboolean = f9 instanceof Object;
vint = 1 << 1;
vint = 1 >> 1;
vint = 1 >>> 1;
vint += 1;
vint -= 1;
vint *= 1;
vint /= 1;
vint %= 1;
vint &= 1;
vint |= 1;
vint ^= 1;
vint <<= 1;
vint >>= 1;
vint >>>= 1;
vint++;
vint--;
++vint;
--vint;
String[] arrayinit = {};
String[] arrayinit2 = {""};
String[] arrayinit3 = {"", "",};
// new
varray = new int[]{};
varray = new int[]{0};
varray = new int[]{0, 1};
varray = new int[5];
vlist = new ArrayList<String>();
vmap = new HashMap<String, String[]>();
Object anonymous = new InputRegressionJavaClass1() {};
// stataments
;
this.f1 = 0;
// labels
test_label1:
// blocks
{}
if (true) ;
if (true) {}
if (true) {} else ;
if (true) {} else {}
if (b) { for (;;) ; }
if (b) { for (;;) {} }
for (int i = 0; i < 1; i++) {}
for (int i = 0, j = 0; i < 1; i++, j += 2) {}
for (int value: new int[]{}) ;
for (String s : new String[]{}) ;
for (final String s : new String[]{}) ;
if (b) { while (true) ; }
if (b) { while (true) {} }
do {} while (false);
synchronized (f9) {}
switch (0) {
case 1:
case 0: break;
default: break;
}
try {
if (b) { throw new IOException(); }
if (b) { throw new ArrayIndexOutOfBoundsException(); }
throw new Exception();
} catch (IOException | ArrayIndexOutOfBoundsException e) {
} catch (Exception e) {
} finally {}
try (BufferedReader br = new BufferedReader(new FileReader(""))) {}
try (BufferedReader br1 = new BufferedReader(new FileReader(""));
BufferedReader br2 = new BufferedReader(new FileReader(""));) {}
// access
test4 = InputRegressionJavaClass1.class;
test4 = List[].class;
test4 = boolean[].class;
varray[0] = 0;
for (String[] s : new String[][]{{}}) ;
for (Map.Entry<String, String[]> e : vmap.entrySet()) { }
// others
for (;;) {break;}
test_label2:
for (;;) {break test_label2;}
if (b) { for (;;) {continue;} }
if (b) { test_label3: for (;;) {continue test_label3;} }
if (false) return;
if (false) throw new Exception();
assert(false);
assert true : "false";
f9 = (Object) f9;
f9.equals(((vstring = "")));
for (int i = 0; ((i) < (6+6)); i++) ;
if ((b & b)) {}
// ast error handling
vint = vboolean ? (vint = 1) : (vint = 0);
varray[vint] = Integer.parseInt("0");
}
public @interface innerAnnotation {}
}

View File

@ -0,0 +1,41 @@
package com.puppycrawl.tools.checkstyle.grammars;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@SuppressWarnings("serial")
class InputRegressionJavaClass2 extends ArrayList implements List, Collection {
public InputRegressionJavaClass2() { super(); }
@Override
public int size() { return super.size(); }
@Override()
public boolean isEmpty() { return InputRegressionJavaClass2.super.isEmpty(); }
public class Inner1 {
public void m() {
class Inner2 {
}
};
public InputRegressionJavaClass2 m2() {
return InputRegressionJavaClass2.this;
}
}
public void m() { this.new Inner1().m(); }
}
class _c1 {}
abstract class c2 {}
class c3<A> { public c3<A> m(){return null;} }
class c4<A,B> extends c3<A> {
class c4a {}
public c4() { <String>super(); }
public c3<A> m() { return super.<A>m(); }
}
class c5 extends c4.c4a {
c5() { new c4().super(); }
c5(int a) { new c4().<String>super(); }
}

View File

@ -0,0 +1,370 @@
PACKAGE_DEF -> package [1:0]
|--ANNOTATIONS -> ANNOTATIONS [1:39]
|--DOT -> . [1:39]
| |--DOT -> . [1:28]
| | |--DOT -> . [1:22]
| | | |--DOT -> . [1:11]
| | | | |--IDENT -> com [1:8]
| | | | `--IDENT -> puppycrawl [1:12]
| | | `--IDENT -> tools [1:23]
| | `--IDENT -> checkstyle [1:29]
| `--IDENT -> grammars [1:40]
`--SEMI -> ; [1:48]
IMPORT -> import [3:0]
|--DOT -> . [3:16]
| |--DOT -> . [3:11]
| | |--IDENT -> java [3:7]
| | `--IDENT -> util [3:12]
| `--IDENT -> ArrayList [3:17]
`--SEMI -> ; [3:26]
IMPORT -> import [4:0]
|--DOT -> . [4:16]
| |--DOT -> . [4:11]
| | |--IDENT -> java [4:7]
| | `--IDENT -> util [4:12]
| `--IDENT -> Collection [4:17]
`--SEMI -> ; [4:27]
IMPORT -> import [5:0]
|--DOT -> . [5:16]
| |--DOT -> . [5:11]
| | |--IDENT -> java [5:7]
| | `--IDENT -> util [5:12]
| `--IDENT -> List [5:17]
`--SEMI -> ; [5:21]
CLASS_DEF -> CLASS_DEF [7:0]
|--MODIFIERS -> MODIFIERS [7:0]
| `--ANNOTATION -> ANNOTATION [7:0]
| |--AT -> @ [7:0]
| |--IDENT -> SuppressWarnings [7:1]
| |--LPAREN -> ( [7:17]
| |--EXPR -> EXPR [7:18]
| | `--STRING_LITERAL -> "serial" [7:18]
| `--RPAREN -> ) [7:26]
|--LITERAL_CLASS -> class [8:0]
|--IDENT -> InputRegressionJavaClass2 [8:6]
|--EXTENDS_CLAUSE -> extends [8:32]
| `--IDENT -> ArrayList [8:40]
|--IMPLEMENTS_CLAUSE -> implements [8:50]
| |--IDENT -> List [8:61]
| |--COMMA -> , [8:65]
| `--IDENT -> Collection [8:67]
`--OBJBLOCK -> OBJBLOCK [8:78]
|--LCURLY -> { [8:78]
|--CTOR_DEF -> CTOR_DEF [9:4]
| |--MODIFIERS -> MODIFIERS [9:4]
| | `--LITERAL_PUBLIC -> public [9:4]
| |--IDENT -> InputRegressionJavaClass2 [9:11]
| |--LPAREN -> ( [9:36]
| |--PARAMETERS -> PARAMETERS [9:37]
| |--RPAREN -> ) [9:37]
| `--SLIST -> { [9:39]
| |--SUPER_CTOR_CALL -> super [9:41]
| | |--LPAREN -> ( [9:46]
| | |--ELIST -> ELIST [9:47]
| | |--RPAREN -> ) [9:47]
| | `--SEMI -> ; [9:48]
| `--RCURLY -> } [9:50]
|--METHOD_DEF -> METHOD_DEF [11:4]
| |--MODIFIERS -> MODIFIERS [11:4]
| | |--ANNOTATION -> ANNOTATION [11:4]
| | | |--AT -> @ [11:4]
| | | `--IDENT -> Override [11:5]
| | `--LITERAL_PUBLIC -> public [12:4]
| |--TYPE -> TYPE [12:11]
| | `--LITERAL_INT -> int [12:11]
| |--IDENT -> size [12:15]
| |--LPAREN -> ( [12:19]
| |--PARAMETERS -> PARAMETERS [12:20]
| |--RPAREN -> ) [12:20]
| `--SLIST -> { [12:22]
| |--LITERAL_RETURN -> return [12:24]
| | |--EXPR -> EXPR [12:41]
| | | `--METHOD_CALL -> ( [12:41]
| | | |--DOT -> . [12:36]
| | | | |--LITERAL_SUPER -> super [12:31]
| | | | `--IDENT -> size [12:37]
| | | |--ELIST -> ELIST [12:42]
| | | `--RPAREN -> ) [12:42]
| | `--SEMI -> ; [12:43]
| `--RCURLY -> } [12:45]
|--METHOD_DEF -> METHOD_DEF [13:4]
| |--MODIFIERS -> MODIFIERS [13:4]
| | |--ANNOTATION -> ANNOTATION [13:4]
| | | |--AT -> @ [13:4]
| | | |--IDENT -> Override [13:5]
| | | |--LPAREN -> ( [13:13]
| | | `--RPAREN -> ) [13:14]
| | `--LITERAL_PUBLIC -> public [14:4]
| |--TYPE -> TYPE [14:11]
| | `--LITERAL_BOOLEAN -> boolean [14:11]
| |--IDENT -> isEmpty [14:19]
| |--LPAREN -> ( [14:26]
| |--PARAMETERS -> PARAMETERS [14:27]
| |--RPAREN -> ) [14:27]
| `--SLIST -> { [14:29]
| |--LITERAL_RETURN -> return [14:31]
| | |--EXPR -> EXPR [14:77]
| | | `--METHOD_CALL -> ( [14:77]
| | | |--DOT -> . [14:69]
| | | | |--DOT -> . [14:63]
| | | | | |--IDENT -> InputRegressionJavaClass2 [14:38]
| | | | | `--LITERAL_SUPER -> super [14:64]
| | | | `--IDENT -> isEmpty [14:70]
| | | |--ELIST -> ELIST [14:78]
| | | `--RPAREN -> ) [14:78]
| | `--SEMI -> ; [14:79]
| `--RCURLY -> } [14:81]
|--CLASS_DEF -> CLASS_DEF [16:4]
| |--MODIFIERS -> MODIFIERS [16:4]
| | `--LITERAL_PUBLIC -> public [16:4]
| |--LITERAL_CLASS -> class [16:11]
| |--IDENT -> Inner1 [16:17]
| `--OBJBLOCK -> OBJBLOCK [16:24]
| |--LCURLY -> { [16:24]
| |--METHOD_DEF -> METHOD_DEF [17:8]
| | |--MODIFIERS -> MODIFIERS [17:8]
| | | `--LITERAL_PUBLIC -> public [17:8]
| | |--TYPE -> TYPE [17:15]
| | | `--LITERAL_VOID -> void [17:15]
| | |--IDENT -> m [17:20]
| | |--LPAREN -> ( [17:21]
| | |--PARAMETERS -> PARAMETERS [17:22]
| | |--RPAREN -> ) [17:22]
| | `--SLIST -> { [17:24]
| | |--CLASS_DEF -> CLASS_DEF [18:12]
| | | |--MODIFIERS -> MODIFIERS [18:12]
| | | |--LITERAL_CLASS -> class [18:12]
| | | |--IDENT -> Inner2 [18:18]
| | | `--OBJBLOCK -> OBJBLOCK [18:25]
| | | |--LCURLY -> { [18:25]
| | | `--RCURLY -> } [19:12]
| | `--RCURLY -> } [20:8]
| |--SEMI -> ; [20:9]
| |--METHOD_DEF -> METHOD_DEF [22:8]
| | |--MODIFIERS -> MODIFIERS [22:8]
| | | `--LITERAL_PUBLIC -> public [22:8]
| | |--TYPE -> TYPE [22:15]
| | | `--IDENT -> InputRegressionJavaClass2 [22:15]
| | |--IDENT -> m2 [22:41]
| | |--LPAREN -> ( [22:43]
| | |--PARAMETERS -> PARAMETERS [22:44]
| | |--RPAREN -> ) [22:44]
| | `--SLIST -> { [22:46]
| | |--LITERAL_RETURN -> return [23:12]
| | | |--EXPR -> EXPR [23:44]
| | | | `--DOT -> . [23:44]
| | | | |--IDENT -> InputRegressionJavaClass2 [23:19]
| | | | `--LITERAL_THIS -> this [23:45]
| | | `--SEMI -> ; [23:49]
| | `--RCURLY -> } [24:8]
| `--RCURLY -> } [25:4]
|--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 -> m [27:16]
| |--LPAREN -> ( [27:17]
| |--PARAMETERS -> PARAMETERS [27:18]
| |--RPAREN -> ) [27:18]
| `--SLIST -> { [27:20]
| |--EXPR -> EXPR [27:41]
| | `--METHOD_CALL -> ( [27:41]
| | |--DOT -> . [27:39]
| | | |--DOT -> . [27:26]
| | | | |--LITERAL_THIS -> this [27:22]
| | | | `--LITERAL_NEW -> new [27:27]
| | | | |--IDENT -> Inner1 [27:31]
| | | | |--LPAREN -> ( [27:37]
| | | | |--ELIST -> ELIST [27:38]
| | | | `--RPAREN -> ) [27:38]
| | | `--IDENT -> m [27:40]
| | |--ELIST -> ELIST [27:42]
| | `--RPAREN -> ) [27:42]
| |--SEMI -> ; [27:43]
| `--RCURLY -> } [27:45]
`--RCURLY -> } [28:0]
CLASS_DEF -> CLASS_DEF [29:0]
|--MODIFIERS -> MODIFIERS [29:0]
|--LITERAL_CLASS -> class [29:0]
|--IDENT -> _c1 [29:6]
`--OBJBLOCK -> OBJBLOCK [29:10]
|--LCURLY -> { [29:10]
`--RCURLY -> } [29:11]
CLASS_DEF -> CLASS_DEF [30:0]
|--MODIFIERS -> MODIFIERS [30:0]
| `--ABSTRACT -> abstract [30:0]
|--LITERAL_CLASS -> class [30:9]
|--IDENT -> c2 [30:15]
`--OBJBLOCK -> OBJBLOCK [30:18]
|--LCURLY -> { [30:18]
`--RCURLY -> } [30:19]
CLASS_DEF -> CLASS_DEF [31:0]
|--MODIFIERS -> MODIFIERS [31:0]
|--LITERAL_CLASS -> class [31:0]
|--IDENT -> c3 [31:6]
|--TYPE_PARAMETERS -> TYPE_PARAMETERS [31:8]
| |--GENERIC_START -> < [31:8]
| |--TYPE_PARAMETER -> TYPE_PARAMETER [31:9]
| | `--IDENT -> A [31:9]
| `--GENERIC_END -> > [31:10]
`--OBJBLOCK -> OBJBLOCK [31:12]
|--LCURLY -> { [31:12]
|--METHOD_DEF -> METHOD_DEF [31:14]
| |--MODIFIERS -> MODIFIERS [31:14]
| | `--LITERAL_PUBLIC -> public [31:14]
| |--TYPE -> TYPE [31:21]
| | |--IDENT -> c3 [31:21]
| | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [31:23]
| | |--GENERIC_START -> < [31:23]
| | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [31:24]
| | | `--IDENT -> A [31:24]
| | `--GENERIC_END -> > [31:25]
| |--IDENT -> m [31:27]
| |--LPAREN -> ( [31:28]
| |--PARAMETERS -> PARAMETERS [31:29]
| |--RPAREN -> ) [31:29]
| `--SLIST -> { [31:30]
| |--LITERAL_RETURN -> return [31:31]
| | |--EXPR -> EXPR [31:38]
| | | `--LITERAL_NULL -> null [31:38]
| | `--SEMI -> ; [31:42]
| `--RCURLY -> } [31:43]
`--RCURLY -> } [31:45]
CLASS_DEF -> CLASS_DEF [32:0]
|--MODIFIERS -> MODIFIERS [32:0]
|--LITERAL_CLASS -> class [32:0]
|--IDENT -> c4 [32:6]
|--TYPE_PARAMETERS -> TYPE_PARAMETERS [32:8]
| |--GENERIC_START -> < [32:8]
| |--TYPE_PARAMETER -> TYPE_PARAMETER [32:9]
| | `--IDENT -> A [32:9]
| |--COMMA -> , [32:10]
| |--TYPE_PARAMETER -> TYPE_PARAMETER [32:11]
| | `--IDENT -> B [32:11]
| `--GENERIC_END -> > [32:12]
|--EXTENDS_CLAUSE -> extends [32:14]
| |--IDENT -> c3 [32:22]
| `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [32:24]
| |--GENERIC_START -> < [32:24]
| |--TYPE_ARGUMENT -> TYPE_ARGUMENT [32:25]
| | `--IDENT -> A [32:25]
| `--GENERIC_END -> > [32:26]
`--OBJBLOCK -> OBJBLOCK [32:28]
|--LCURLY -> { [32:28]
|--CLASS_DEF -> CLASS_DEF [33:4]
| |--MODIFIERS -> MODIFIERS [33:4]
| |--LITERAL_CLASS -> class [33:4]
| |--IDENT -> c4a [33:10]
| `--OBJBLOCK -> OBJBLOCK [33:14]
| |--LCURLY -> { [33:14]
| `--RCURLY -> } [33:15]
|--CTOR_DEF -> CTOR_DEF [35:4]
| |--MODIFIERS -> MODIFIERS [35:4]
| | `--LITERAL_PUBLIC -> public [35:4]
| |--IDENT -> c4 [35:11]
| |--LPAREN -> ( [35:13]
| |--PARAMETERS -> PARAMETERS [35:14]
| |--RPAREN -> ) [35:14]
| `--SLIST -> { [35:16]
| |--SUPER_CTOR_CALL -> super [35:26]
| | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [35:18]
| | | |--GENERIC_START -> < [35:18]
| | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [35:19]
| | | | `--IDENT -> String [35:19]
| | | `--GENERIC_END -> > [35:25]
| | |--LPAREN -> ( [35:31]
| | |--ELIST -> ELIST [35:32]
| | |--RPAREN -> ) [35:32]
| | `--SEMI -> ; [35:33]
| `--RCURLY -> } [35:35]
|--METHOD_DEF -> METHOD_DEF [36:4]
| |--MODIFIERS -> MODIFIERS [36:4]
| | `--LITERAL_PUBLIC -> public [36:4]
| |--TYPE -> TYPE [36:11]
| | |--IDENT -> c3 [36:11]
| | `--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [36:13]
| | |--GENERIC_START -> < [36:13]
| | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [36:14]
| | | `--IDENT -> A [36:14]
| | `--GENERIC_END -> > [36:15]
| |--IDENT -> m [36:17]
| |--LPAREN -> ( [36:18]
| |--PARAMETERS -> PARAMETERS [36:19]
| |--RPAREN -> ) [36:19]
| `--SLIST -> { [36:21]
| |--LITERAL_RETURN -> return [36:23]
| | |--EXPR -> EXPR [36:40]
| | | `--METHOD_CALL -> ( [36:40]
| | | |--DOT -> . [36:35]
| | | | |--LITERAL_SUPER -> super [36:30]
| | | | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [36:36]
| | | | | |--GENERIC_START -> < [36:36]
| | | | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [36:37]
| | | | | | `--IDENT -> A [36:37]
| | | | | `--GENERIC_END -> > [36:38]
| | | | `--IDENT -> m [36:39]
| | | |--ELIST -> ELIST [36:41]
| | | `--RPAREN -> ) [36:41]
| | `--SEMI -> ; [36:42]
| `--RCURLY -> } [36:44]
`--RCURLY -> } [37:0]
CLASS_DEF -> CLASS_DEF [38:0]
|--MODIFIERS -> MODIFIERS [38:0]
|--LITERAL_CLASS -> class [38:0]
|--IDENT -> c5 [38:6]
|--EXTENDS_CLAUSE -> extends [38:9]
| `--DOT -> . [38:19]
| |--IDENT -> c4 [38:17]
| `--IDENT -> c4a [38:20]
`--OBJBLOCK -> OBJBLOCK [38:24]
|--LCURLY -> { [38:24]
|--CTOR_DEF -> CTOR_DEF [39:4]
| |--MODIFIERS -> MODIFIERS [39:4]
| |--IDENT -> c5 [39:4]
| |--LPAREN -> ( [39:6]
| |--PARAMETERS -> PARAMETERS [39:7]
| |--RPAREN -> ) [39:7]
| `--SLIST -> { [39:9]
| |--SUPER_CTOR_CALL -> super [39:20]
| | |--LITERAL_NEW -> new [39:11]
| | | |--IDENT -> c4 [39:15]
| | | |--LPAREN -> ( [39:17]
| | | |--ELIST -> ELIST [39:18]
| | | `--RPAREN -> ) [39:18]
| | |--DOT -> . [39:19]
| | |--LPAREN -> ( [39:25]
| | |--ELIST -> ELIST [39:26]
| | |--RPAREN -> ) [39:26]
| | `--SEMI -> ; [39:27]
| `--RCURLY -> } [39:29]
|--CTOR_DEF -> CTOR_DEF [40:4]
| |--MODIFIERS -> MODIFIERS [40:4]
| |--IDENT -> c5 [40:4]
| |--LPAREN -> ( [40:6]
| |--PARAMETERS -> PARAMETERS [40:7]
| | `--PARAMETER_DEF -> PARAMETER_DEF [40:7]
| | |--MODIFIERS -> MODIFIERS [40:7]
| | |--TYPE -> TYPE [40:7]
| | | `--LITERAL_INT -> int [40:7]
| | `--IDENT -> a [40:11]
| |--RPAREN -> ) [40:12]
| `--SLIST -> { [40:14]
| |--SUPER_CTOR_CALL -> super [40:33]
| | |--LITERAL_NEW -> new [40:16]
| | | |--IDENT -> c4 [40:20]
| | | |--LPAREN -> ( [40:22]
| | | |--ELIST -> ELIST [40:23]
| | | `--RPAREN -> ) [40:23]
| | |--DOT -> . [40:24]
| | |--TYPE_ARGUMENTS -> TYPE_ARGUMENTS [40:25]
| | | |--GENERIC_START -> < [40:25]
| | | |--TYPE_ARGUMENT -> TYPE_ARGUMENT [40:26]
| | | | `--IDENT -> String [40:26]
| | | `--GENERIC_END -> > [40:32]
| | |--LPAREN -> ( [40:38]
| | |--ELIST -> ELIST [40:39]
| | |--RPAREN -> ) [40:39]
| | `--SEMI -> ; [40:40]
| `--RCURLY -> } [40:42]
`--RCURLY -> } [41:0]

View File

@ -0,0 +1,25 @@
package com.puppycrawl.tools.checkstyle.grammars;
public enum InputRegressionJavaEnum1 {
E1(), E2 {
class anonymous {}
private static final int f = 1;
@Override
public void override() {};
public <T> void m1() {};
public void m2() throws Exception { throw new Exception(); };
public native void m3() throws Exception;
{;}
}
;
public void override() {}
}
enum e1 {
E1(),;
}
enum e2 {
E1();;
}

View File

@ -0,0 +1,165 @@
PACKAGE_DEF -> package [1:0]
|--ANNOTATIONS -> ANNOTATIONS [1:39]
|--DOT -> . [1:39]
| |--DOT -> . [1:28]
| | |--DOT -> . [1:22]
| | | |--DOT -> . [1:11]
| | | | |--IDENT -> com [1:8]
| | | | `--IDENT -> puppycrawl [1:12]
| | | `--IDENT -> tools [1:23]
| | `--IDENT -> checkstyle [1:29]
| `--IDENT -> grammars [1:40]
`--SEMI -> ; [1:48]
ENUM_DEF -> ENUM_DEF [3:0]
|--MODIFIERS -> MODIFIERS [3:0]
| `--LITERAL_PUBLIC -> public [3:0]
|--ENUM -> enum [3:7]
|--IDENT -> InputRegressionJavaEnum1 [3:12]
`--OBJBLOCK -> OBJBLOCK [3:37]
|--LCURLY -> { [3:37]
|--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF [4:4]
| |--ANNOTATIONS -> ANNOTATIONS [4:4]
| |--IDENT -> E1 [4:4]
| |--LPAREN -> ( [4:6]
| |--ELIST -> ELIST [4:7]
| `--RPAREN -> ) [4:7]
|--COMMA -> , [4:8]
|--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF [4:10]
| |--ANNOTATIONS -> ANNOTATIONS [4:10]
| |--IDENT -> E2 [4:10]
| `--OBJBLOCK -> OBJBLOCK [4:13]
| |--LCURLY -> { [4:13]
| |--CLASS_DEF -> CLASS_DEF [5:8]
| | |--MODIFIERS -> MODIFIERS [5:8]
| | |--LITERAL_CLASS -> class [5:8]
| | |--IDENT -> anonymous [5:14]
| | `--OBJBLOCK -> OBJBLOCK [5:24]
| | |--LCURLY -> { [5:24]
| | `--RCURLY -> } [5:25]
| |--VARIABLE_DEF -> VARIABLE_DEF [6:8]
| | |--MODIFIERS -> MODIFIERS [6:8]
| | | |--LITERAL_PRIVATE -> private [6:8]
| | | |--LITERAL_STATIC -> static [6:16]
| | | `--FINAL -> final [6:23]
| | |--TYPE -> TYPE [6:29]
| | | `--LITERAL_INT -> int [6:29]
| | |--IDENT -> f [6:33]
| | |--ASSIGN -> = [6:35]
| | | `--EXPR -> EXPR [6:37]
| | | `--NUM_INT -> 1 [6:37]
| | `--SEMI -> ; [6:38]
| |--METHOD_DEF -> METHOD_DEF [8:8]
| | |--MODIFIERS -> MODIFIERS [8:8]
| | | |--ANNOTATION -> ANNOTATION [8:8]
| | | | |--AT -> @ [8:8]
| | | | `--IDENT -> Override [8:9]
| | | `--LITERAL_PUBLIC -> public [9:8]
| | |--TYPE -> TYPE [9:15]
| | | `--LITERAL_VOID -> void [9:15]
| | |--IDENT -> override [9:20]
| | |--LPAREN -> ( [9:28]
| | |--PARAMETERS -> PARAMETERS [9:29]
| | |--RPAREN -> ) [9:29]
| | `--SLIST -> { [9:31]
| | `--RCURLY -> } [9:32]
| |--SEMI -> ; [9:33]
| |--METHOD_DEF -> METHOD_DEF [10:8]
| | |--MODIFIERS -> MODIFIERS [10:8]
| | | `--LITERAL_PUBLIC -> public [10:8]
| | |--TYPE_PARAMETERS -> TYPE_PARAMETERS [10:15]
| | | |--GENERIC_START -> < [10:15]
| | | |--TYPE_PARAMETER -> TYPE_PARAMETER [10:16]
| | | | `--IDENT -> T [10:16]
| | | `--GENERIC_END -> > [10:17]
| | |--TYPE -> TYPE [10:19]
| | | `--LITERAL_VOID -> void [10:19]
| | |--IDENT -> m1 [10:24]
| | |--LPAREN -> ( [10:26]
| | |--PARAMETERS -> PARAMETERS [10:27]
| | |--RPAREN -> ) [10:27]
| | `--SLIST -> { [10:29]
| | `--RCURLY -> } [10:30]
| |--SEMI -> ; [10:31]
| |--METHOD_DEF -> METHOD_DEF [11:8]
| | |--MODIFIERS -> MODIFIERS [11:8]
| | | `--LITERAL_PUBLIC -> public [11:8]
| | |--TYPE -> TYPE [11:15]
| | | `--LITERAL_VOID -> void [11:15]
| | |--IDENT -> m2 [11:20]
| | |--LPAREN -> ( [11:22]
| | |--PARAMETERS -> PARAMETERS [11:23]
| | |--RPAREN -> ) [11:23]
| | |--LITERAL_THROWS -> throws [11:25]
| | | `--IDENT -> Exception [11:32]
| | `--SLIST -> { [11:42]
| | |--LITERAL_THROW -> throw [11:44]
| | | |--EXPR -> EXPR [11:50]
| | | | `--LITERAL_NEW -> new [11:50]
| | | | |--IDENT -> Exception [11:54]
| | | | |--LPAREN -> ( [11:63]
| | | | |--ELIST -> ELIST [11:64]
| | | | `--RPAREN -> ) [11:64]
| | | `--SEMI -> ; [11:65]
| | `--RCURLY -> } [11:67]
| |--SEMI -> ; [11:68]
| |--METHOD_DEF -> METHOD_DEF [12:8]
| | |--MODIFIERS -> MODIFIERS [12:8]
| | | |--LITERAL_PUBLIC -> public [12:8]
| | | `--LITERAL_NATIVE -> native [12:15]
| | |--TYPE -> TYPE [12:22]
| | | `--LITERAL_VOID -> void [12:22]
| | |--IDENT -> m3 [12:27]
| | |--LPAREN -> ( [12:29]
| | |--PARAMETERS -> PARAMETERS [12:30]
| | |--RPAREN -> ) [12:30]
| | |--LITERAL_THROWS -> throws [12:32]
| | | `--IDENT -> Exception [12:39]
| | `--SEMI -> ; [12:48]
| |--INSTANCE_INIT -> INSTANCE_INIT [14:8]
| | `--SLIST -> { [14:8]
| | |--EMPTY_STAT -> ; [14:9]
| | `--RCURLY -> } [14:10]
| `--RCURLY -> } [15:4]
|--SEMI -> ; [16:4]
|--METHOD_DEF -> METHOD_DEF [18:4]
| |--MODIFIERS -> MODIFIERS [18:4]
| | `--LITERAL_PUBLIC -> public [18:4]
| |--TYPE -> TYPE [18:11]
| | `--LITERAL_VOID -> void [18:11]
| |--IDENT -> override [18:16]
| |--LPAREN -> ( [18:24]
| |--PARAMETERS -> PARAMETERS [18:25]
| |--RPAREN -> ) [18:25]
| `--SLIST -> { [18:27]
| `--RCURLY -> } [18:28]
`--RCURLY -> } [19:0]
ENUM_DEF -> ENUM_DEF [20:0]
|--MODIFIERS -> MODIFIERS [20:0]
|--ENUM -> enum [20:0]
|--IDENT -> e1 [20:5]
`--OBJBLOCK -> OBJBLOCK [20:8]
|--LCURLY -> { [20:8]
|--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF [21:4]
| |--ANNOTATIONS -> ANNOTATIONS [21:4]
| |--IDENT -> E1 [21:4]
| |--LPAREN -> ( [21:6]
| |--ELIST -> ELIST [21:7]
| `--RPAREN -> ) [21:7]
|--COMMA -> , [21:8]
|--SEMI -> ; [21:9]
`--RCURLY -> } [22:0]
ENUM_DEF -> ENUM_DEF [23:0]
|--MODIFIERS -> MODIFIERS [23:0]
|--ENUM -> enum [23:0]
|--IDENT -> e2 [23:5]
`--OBJBLOCK -> OBJBLOCK [23:8]
|--LCURLY -> { [23:8]
|--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF [24:4]
| |--ANNOTATIONS -> ANNOTATIONS [24:4]
| |--IDENT -> E1 [24:4]
| |--LPAREN -> ( [24:6]
| |--ELIST -> ELIST [24:7]
| `--RPAREN -> ) [24:7]
|--SEMI -> ; [24:8]
|--SEMI -> ; [24:9]
`--RCURLY -> } [25:0]

View File

@ -0,0 +1,4 @@
package com.puppycrawl.tools.checkstyle.grammars;
public enum InputRegressionJavaEnum2 {
}

View File

@ -0,0 +1,20 @@
PACKAGE_DEF -> package [1:0]
|--ANNOTATIONS -> ANNOTATIONS [1:39]
|--DOT -> . [1:39]
| |--DOT -> . [1:28]
| | |--DOT -> . [1:22]
| | | |--DOT -> . [1:11]
| | | | |--IDENT -> com [1:8]
| | | | `--IDENT -> puppycrawl [1:12]
| | | `--IDENT -> tools [1:23]
| | `--IDENT -> checkstyle [1:29]
| `--IDENT -> grammars [1:40]
`--SEMI -> ; [1:48]
ENUM_DEF -> ENUM_DEF [3:0]
|--MODIFIERS -> MODIFIERS [3:0]
| `--LITERAL_PUBLIC -> public [3:0]
|--ENUM -> enum [3:7]
|--IDENT -> InputRegressionJavaEnum2 [3:12]
`--OBJBLOCK -> OBJBLOCK [3:37]
|--LCURLY -> { [3:37]
`--RCURLY -> } [4:0]

View File

@ -0,0 +1,8 @@
package com.puppycrawl.tools.checkstyle.grammars;
import java.util.Collection;
import java.util.List;
public interface InputRegressionJavaInterface1 extends List, Collection {
}

View File

@ -0,0 +1,38 @@
PACKAGE_DEF -> package [1:0]
|--ANNOTATIONS -> ANNOTATIONS [1:39]
|--DOT -> . [1:39]
| |--DOT -> . [1:28]
| | |--DOT -> . [1:22]
| | | |--DOT -> . [1:11]
| | | | |--IDENT -> com [1:8]
| | | | `--IDENT -> puppycrawl [1:12]
| | | `--IDENT -> tools [1:23]
| | `--IDENT -> checkstyle [1:29]
| `--IDENT -> grammars [1:40]
`--SEMI -> ; [1:48]
IMPORT -> import [4:0]
|--DOT -> . [4:16]
| |--DOT -> . [4:11]
| | |--IDENT -> java [4:7]
| | `--IDENT -> util [4:12]
| `--IDENT -> Collection [4:17]
`--SEMI -> ; [4:27]
IMPORT -> import [5:0]
|--DOT -> . [5:16]
| |--DOT -> . [5:11]
| | |--IDENT -> java [5:7]
| | `--IDENT -> util [5:12]
| `--IDENT -> List [5:17]
`--SEMI -> ; [5:21]
INTERFACE_DEF -> INTERFACE_DEF [7:0]
|--MODIFIERS -> MODIFIERS [7:0]
| `--LITERAL_PUBLIC -> public [7:0]
|--LITERAL_INTERFACE -> interface [7:7]
|--IDENT -> InputRegressionJavaInterface1 [7:17]
|--EXTENDS_CLAUSE -> extends [7:47]
| |--IDENT -> List [7:55]
| |--COMMA -> , [7:59]
| `--IDENT -> Collection [7:61]
`--OBJBLOCK -> OBJBLOCK [7:72]
|--LCURLY -> { [7:72]
`--RCURLY -> } [8:0]

View File

@ -0,0 +1,6 @@
package com.puppycrawl.tools.checkstyle.grammars;
public interface InputRegressionJavaInterface2 {
}
interface MyInterface<T> {
}

View File

@ -0,0 +1,32 @@
PACKAGE_DEF -> package [1:0]
|--ANNOTATIONS -> ANNOTATIONS [1:39]
|--DOT -> . [1:39]
| |--DOT -> . [1:28]
| | |--DOT -> . [1:22]
| | | |--DOT -> . [1:11]
| | | | |--IDENT -> com [1:8]
| | | | `--IDENT -> puppycrawl [1:12]
| | | `--IDENT -> tools [1:23]
| | `--IDENT -> checkstyle [1:29]
| `--IDENT -> grammars [1:40]
`--SEMI -> ; [1:48]
INTERFACE_DEF -> INTERFACE_DEF [3:0]
|--MODIFIERS -> MODIFIERS [3:0]
| `--LITERAL_PUBLIC -> public [3:0]
|--LITERAL_INTERFACE -> interface [3:7]
|--IDENT -> InputRegressionJavaInterface2 [3:17]
`--OBJBLOCK -> OBJBLOCK [3:47]
|--LCURLY -> { [3:47]
`--RCURLY -> } [4:0]
INTERFACE_DEF -> INTERFACE_DEF [5:0]
|--MODIFIERS -> MODIFIERS [5:0]
|--LITERAL_INTERFACE -> interface [5:0]
|--IDENT -> MyInterface [5:10]
|--TYPE_PARAMETERS -> TYPE_PARAMETERS [5:21]
| |--GENERIC_START -> < [5:21]
| |--TYPE_PARAMETER -> TYPE_PARAMETER [5:22]
| | `--IDENT -> T [5:22]
| `--GENERIC_END -> > [5:23]
`--OBJBLOCK -> OBJBLOCK [5:25]
|--LCURLY -> { [5:25]
`--RCURLY -> } [6:0]