Skip to content

Checkstyle fails to parse qualified constructor parameter #10424

@nrmancuso

Description

@nrmancuso

This file is compilable, but Checkstyle cannot parse it:

➜  src javac Test.java

➜  src cat Test.java
public class Test {
    class Inner {
        class Inner2 {
            Inner2(Test.Inner Test.Inner.this) { }
        }
    }
}

➜  src java -jar checkstyle-8.44-all.jar -t Test.java
com.puppycrawl.tools.checkstyle.api.CheckstyleException: IllegalStateException occurred while parsing file /home/nick/Desktop/Tester/src/Test.java.
        at com.puppycrawl.tools.checkstyle.JavaParser.parse(JavaParser.java:120)
        at com.puppycrawl.tools.checkstyle.JavaParser.parseFileText(JavaParser.java:137)
        at com.puppycrawl.tools.checkstyle.JavaParser.parseFile(JavaParser.java:157)
        at com.puppycrawl.tools.checkstyle.AstTreeStringPrinter.printFileAst(AstTreeStringPrinter.java:65)
        at com.puppycrawl.tools.checkstyle.Main.runCli(Main.java:285)
        at com.puppycrawl.tools.checkstyle.Main.execute(Main.java:191)
        at com.puppycrawl.tools.checkstyle.Main.main(Main.java:126)
Caused by: java.lang.IllegalStateException: /home/nick/Desktop/Tester/src/Test.java:4:31: unexpected token: Test
        at com.puppycrawl.tools.checkstyle.JavaParser$1.reportError(JavaParser.java:108)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.typeDefinition(GeneratedJavaRecognizer.java:429)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.compilationUnit(GeneratedJavaRecognizer.java:212)
        at com.puppycrawl.tools.checkstyle.JavaParser.parse(JavaParser.java:114)
        ... 6 more
Caused by: /home/nick/Desktop/Tester/src/Test.java:4:31: unexpected token: Test
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.variableLengthParameterTypeSpec(GeneratedJavaRecognizer.java:1004)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.variableLengthParameterDeclaration(GeneratedJavaRecognizer.java:5573)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.parameterDeclarationList(GeneratedJavaRecognizer.java:4610)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.ctorHead(GeneratedJavaRecognizer.java:4737)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.field(GeneratedJavaRecognizer.java:3192)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.classBlock(GeneratedJavaRecognizer.java:3560)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.classDefinition(GeneratedJavaRecognizer.java:655)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.typeDefinitionInternal(GeneratedJavaRecognizer.java:566)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.field(GeneratedJavaRecognizer.java:3145)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.classBlock(GeneratedJavaRecognizer.java:3560)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.classDefinition(GeneratedJavaRecognizer.java:655)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.typeDefinitionInternal(GeneratedJavaRecognizer.java:566)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.field(GeneratedJavaRecognizer.java:3145)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.classBlock(GeneratedJavaRecognizer.java:3560)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.classDefinition(GeneratedJavaRecognizer.java:655)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.typeDefinitionInternal(GeneratedJavaRecognizer.java:566)
        at com.puppycrawl.tools.checkstyle.grammar.GeneratedJavaRecognizer.typeDefinition(GeneratedJavaRecognizer.java:407)
        ... 8 more
Checkstyle ends with 1 errors.

I would expect something like the following:

...
    |       |       |--CTOR_DEF -> CTOR_DEF [4:12]
    |       |       |   |--MODIFIERS -> MODIFIERS [4:12]
    |       |       |   |--IDENT -> Inner2 [4:12]
    |       |       |   |--LPAREN -> ( [4:18]
    |       |       |   |--PARAMETERS -> PARAMETERS [4:23]
    |       |       |   |   `--PARAMETER_DEF -> PARAMETER_DEF [4:23]
    |       |       |   |       |--MODIFIERS -> MODIFIERS [4:23]
    |       |       |   |       |--TYPE -> TYPE [4:23]
    |       |       |   |       |   `--DOT -> . [4:23]
    |       |       |   |       |       |--IDENT -> Test [4:19]
    |       |       |   |       |       `--IDENT -> Inner [4:24]
    |       |       |   |       `--DOT -> . [4:40]
    |       |       |   |           |--DOT -> . [4:34]
    |       |       |   |           |   |--IDENT -> Test [4:30]
    |       |       |   |           |   `--IDENT -> Inner [4:35]
    |       |       |   |           `--LITERAL_THIS -> this [4:41]
    |       |       |   |--RPAREN -> ) [4:45]
    |       |       |   `--SLIST -> { [4:47]
    |       |       |       `--RCURLY -> } [4:49]
...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions