-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Closed
Description
Check documentation: https://checkstyle.sourceforge.io/config_misc.html#OuterTypeFilename
➜ full-record-grammar /usr/lib/jvm/java-14-openjdk/bin/javac --enable-preview --source 14 TestClass.java
Note: TestClass.java uses preview language features.
Note: Recompile with -Xlint:preview for details.
➜ full-record-grammar cat config.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="TreeWalker">
<module name="OuterTypeFilename"/>
</module>
</module>
➜ full-record-grammar cat TestClass.java
public class TestClass {
class LocalRecordHelper {
Class<?> m(int x) {
record R76 (int x) { }
return R76.class;
}
}
}
➜ full-record-grammar java $RUN_LOCALE -jar ~/IdeaProjects/checkstyle/target/checkstyle-8.36-SNAPSHOT-all.jar -c config.xml TestClass.java
Starting audit...
com.puppycrawl.tools.checkstyle.api.CheckstyleException: Exception was thrown while processing TestClass.java
at com.puppycrawl.tools.checkstyle.Checker.processFiles(Checker.java:311)
at com.puppycrawl.tools.checkstyle.Checker.process(Checker.java:221)
at com.puppycrawl.tools.checkstyle.Main.runCheckstyle(Main.java:408)
at com.puppycrawl.tools.checkstyle.Main.runCli(Main.java:331)
at com.puppycrawl.tools.checkstyle.Main.execute(Main.java:190)
at com.puppycrawl.tools.checkstyle.Main.main(Main.java:125)
Caused by: java.lang.NullPointerException
at com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheck.visitToken(OuterTypeFilenameCheck.java:142)
at com.puppycrawl.tools.checkstyle.TreeWalker.notifyVisit(TreeWalker.java:340)
at com.puppycrawl.tools.checkstyle.TreeWalker.processIter(TreeWalker.java:451)
at com.puppycrawl.tools.checkstyle.TreeWalker.walk(TreeWalker.java:278)
at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered(TreeWalker.java:151)
at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process(AbstractFileSetCheck.java:87)
at com.puppycrawl.tools.checkstyle.Checker.processFile(Checker.java:337)
at com.puppycrawl.tools.checkstyle.Checker.processFiles(Checker.java:298)
... 5 more
Checkstyle ends with 1 errors.
Relevant grammar from java.g
:
checkstyle/src/main/resources/com/puppycrawl/tools/checkstyle/grammar/java.g
Lines 1121 to 1122 in 86e2754
// record declaration, note that you cannot have modifiers in this case | |
| recordDefinition[#null] |
Since the modifiers AST is null when a record definition is inside of a method, a NPE is thrown here:
checkstyle/src/main/java/com/puppycrawl/tools/checkstyle/checks/OuterTypeFilenameCheck.java
Line 142 in 86e2754
if (modifiers.findFirstToken(TokenTypes.LITERAL_PUBLIC) != null |