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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions