[clang-tidy] Make google-objc-function-naming ignore implicit functions 🙈

Summary:
Implicit functions are outside the control of source authors and should
be exempt from style restrictions.

Tested via running clang tools tests.

Reviewers: aaron.ballman

Reviewed By: aaron.ballman

Subscribers: xazax.hun, cfe-commits

Differential Revision: https://reviews.llvm.org/D57207

llvm-svn: 352968
This commit is contained in:
Stephane Moore 2019-02-02 22:07:00 +00:00
parent cf07b097c6
commit b08a2d4851
2 changed files with 15 additions and 3 deletions

View File

@ -93,12 +93,16 @@ void FunctionNamingCheck::registerMatchers(MatchFinder *Finder) {
if (!getLangOpts().ObjC)
return;
// Match function declarations that are not in system headers and are not
// main.
// Enforce Objective-C function naming conventions on all functions except:
// • Functions defined in system headers.
// • C++ member functions.
// • Namespaced functions.
// • Implicitly defined functions.
// • The main function.
Finder->addMatcher(
functionDecl(
unless(anyOf(isExpansionInSystemHeader(), cxxMethodDecl(),
hasAncestor(namespaceDecl()), isMain(),
hasAncestor(namespaceDecl()), isMain(), isImplicit(),
matchesName(validFunctionNameRegex(true)),
allOf(isStaticStorageClass(),
matchesName(validFunctionNameRegex(false))))))

View File

@ -1,5 +1,13 @@
// RUN: %check_clang_tidy %s google-objc-function-naming %t
#import <stdio.h>
static void TestImplicitFunctionDeclaration(int a) {
// Call a builtin function so that the compiler generates an implicit
// function declaration.
printf("%d", a);
}
typedef _Bool bool;
static bool ispositive(int a) { return a > 0; }