Enhance attribute 'nonnull' to be applicable to parameters directly (infix).

Description

Enhance attribute 'nonnull' to be applicable to parameters directly (infix).

This allows the following syntax:

void baz(__attribute__((nonnull)) const char *str);

instead of:

void baz(const char *str) __attribute__((nonnull(1)));

This also extends to Objective-C methods.

The checking logic in Sema is not as clean as I would like. Effectively
now we need to check both the FunctionDecl/ObjCMethodDecl and the parameters,
so the point of truth is spread in two places, but the logic isn't that
cumbersome.

Implements rdar://problem/14691443.

Details

Committed
kremenekJan 16 2014, 10:24 PM
Parents
rL199466: Add ArrayRef<> interface to get the parameters of a FunctionDecl/ObjCMethodDecl.
Branches
Unknown
Tags
Unknown