google / google/error-prone

FieldMatchers throws null pointer exception on primitive class literals (e.g. `long.class`)

Open
#5,589 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
7.2k
Forks
820
Avg merge
5h 9m
Merged PRs (30d)
50

Description

`FieldMatchers.anyFieldInClass()` (and likely other `FieldMatchers` methods) throws a `NullPointerException` when a `MemberSelectTreeMatcher` checker encounters a primitive class literal such as `long.class`, `int.class`, etc.

## To reproduce

Create a BugChecker that implements `MemberSelectTreeMatcher` and uses `FieldMatchers.anyFieldInClass(...)` in its matcher. Compile any code that contains a primitive class literal (e.g. `long.class`).

```java
@AutoService(BugChecker.class)
@BugPattern(summary = "Example checker", severity = SeverityLevel.ERROR, linkType = LinkType.NONE)
public final class ExampleChecker extends BugChecker implements MemberSelectTreeMatcher {

private static final Matcher MATCHER =
FieldMatchers.anyFieldInClass("com.example.SomeClass");

@Override
public Description matchMemberSelect(MemberSelectTree tree, VisitorState state) {
if (MATCHER.matches(tree, state)) {
return describeMatch(tree);
}
return Description.NO_MATCH;
}
}
```

Compiling any code containing `long.class` (or another primitive `.class` literal) with this checker active will crash with a NPE.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.