Skip to content

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

@sebastiantoh

Description

@sebastiantoh

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).

@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<ExpressionTree> 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions