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>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199467 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/Basic/Attr.td 3 additions, 2 deletionsinclude/clang/Basic/Attr.td
- include/clang/Basic/DiagnosticSemaKinds.td 3 additions, 0 deletionsinclude/clang/Basic/DiagnosticSemaKinds.td
- lib/Sema/SemaChecking.cpp 16 additions, 0 deletionslib/Sema/SemaChecking.cpp
- lib/Sema/SemaDeclAttr.cpp 39 additions, 9 deletionslib/Sema/SemaDeclAttr.cpp
- test/Sema/nonnull.c 11 additions, 0 deletionstest/Sema/nonnull.c
- test/SemaObjC/nonnull.m 14 additions, 0 deletionstest/SemaObjC/nonnull.m
Loading
Please register or sign in to comment