Rollback "Revise the google-objc-global-variable-declaration check to match the style guide." 💥

The change introduced new test failures.

Phabricator URL of original commit: https://reviews.llvm.org/rG12e3726fadb0b2a4d8aeed0a2817b5159f9d029d

llvm-svn: 361914
This commit is contained in:
Stephane Moore 2019-05-29 02:23:32 +00:00
parent 2405bd6898
commit 9ac757bf09
2 changed files with 11 additions and 31 deletions

View File

@ -23,35 +23,29 @@ namespace objc {
namespace {
AST_MATCHER(VarDecl, isLocalVariable) { return Node.isLocalVarDecl(); }
AST_MATCHER(VarDecl, isLocalVariable) {
return Node.isLocalVarDecl();
}
FixItHint generateFixItHint(const VarDecl *Decl, bool IsConst) {
if (IsConst && (Decl->getStorageClass() != SC_Static)) {
// No fix available if it is not a static constant, since it is difficult
// to determine the proper fix in this case.
return FixItHint();
}
char FC = Decl->getName()[0];
if (!llvm::isAlpha(FC) || Decl->getName().size() == 1) {
// No fix available if first character is not alphabetical character, or it
// is a single-character variable, since it is difficult to determine the
// is a single-character variable, since it is difficult to determine the
// proper fix in this case. Users should create a proper variable name by
// their own.
return FixItHint();
}
char SC = Decl->getName()[1];
if ((FC == 'k' || FC == 'g') && !llvm::isAlpha(SC)) {
// No fix available if the prefix is correct but the second character is
// not alphabetical, since it is difficult to determine the proper fix in
// this case.
// No fix available if the prefix is correct but the second character is not
// alphabetical, since it is difficult to determine the proper fix in this
// case.
return FixItHint();
}
auto NewName = (IsConst ? "k" : "g") +
llvm::StringRef(std::string(1, FC)).upper() +
Decl->getName().substr(1).str();
return FixItHint::CreateReplacement(
CharSourceRange::getTokenRange(SourceRange(Decl->getLocation())),
llvm::StringRef(NewName));
@ -77,7 +71,7 @@ void GlobalVariableDeclarationCheck::registerMatchers(MatchFinder *Finder) {
this);
Finder->addMatcher(varDecl(hasGlobalStorage(), hasType(isConstQualified()),
unless(isLocalVariable()),
unless(matchesName("::(k[A-Z])|([A-Z][A-Z0-9])")))
unless(matchesName("::(k[A-Z]|[A-Z]{2,})")))
.bind("global_const"),
this);
}

View File

@ -1,14 +1,10 @@
// RUN: %check_clang_tidy %s google-objc-global-variable-declaration %t
@class NSString;
static NSString* const myConstString = @"hello";
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: const global variable 'myConstString' must have a name which starts with an appropriate prefix [google-objc-global-variable-declaration]
// CHECK-FIXES: static NSString* const kMyConstString = @"hello";
extern NSString* const GlobalConstant = @"hey";
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: const global variable 'GlobalConstant' must have a name which starts with an appropriate prefix [google-objc-global-variable-declaration]
static NSString* MyString = @"hi";
// CHECK-MESSAGES: :[[@LINE-1]]:18: warning: non-const global variable 'MyString' must have a name which starts with 'g[A-Z]' [google-objc-global-variable-declaration]
// CHECK-FIXES: static NSString* gMyString = @"hi";
@ -29,23 +25,13 @@ static NSString* const _notAlpha = @"NotBeginWithAlpha";
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: const global variable '_notAlpha' must have a name which starts with an appropriate prefix [google-objc-global-variable-declaration]
// CHECK-FIXES: static NSString* const _notAlpha = @"NotBeginWithAlpha";
static NSString* const notCap = @"NotBeginWithCap";
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: const global variable 'notCap' must have a name which starts with an appropriate prefix [google-objc-global-variable-declaration]
// CHECK-FIXES: static NSString* const kNotCap = @"NotBeginWithCap";
static NSString* const k_Alpha = @"SecondNotAlpha";
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: const global variable 'k_Alpha' must have a name which starts with an appropriate prefix [google-objc-global-variable-declaration]
// CHECK-FIXES: static NSString* const k_Alpha = @"SecondNotAlpha";
static NSString* const SecondNotCap = @"SecondNotCapOrNumber";
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: const global variable 'SecondNotCap' must have a name which starts with an appropriate prefix [google-objc-global-variable-declaration]
// CHECK-FIXES: static NSString* const kSecondNotCap = @"SecondNotCapOrNumber";
static NSString* const kGood = @"hello";
static NSString* const XYGood = @"hello";
static NSString* const X1Good = @"hello";
static NSString* gMyIntGood = 0;
extern NSString* Y2Good;
extern NSString* const GTLServiceErrorDomain;
@ -56,8 +42,8 @@ enum GTLServiceError {
@implementation Foo
- (void)f {
int x = 0;
static int bar;
static const int baz = 42;
int x = 0;
static int bar;
static const int baz = 42;
}
@end