forked from OSchip/llvm-project
[clang-format] Improve ObjC guessing heuristic by supporting all @keywords
Summary: This diff improves the Objective-C guessing heuristic by replacing the hard-coded list of a subset of Objective-C @keywords with a general check which supports all @keywords. I also added a few more Foundation keywords which were missing from the heuristic. Test Plan: Unit tests updated. Ran tests with: % make -j16 FormatTests && ./tools/clang/unittests/Format/FormatTests Reviewers: djasper, jolesiak Reviewed By: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D45521 llvm-svn: 329918
This commit is contained in:
parent
df72e9851a
commit
b1a7919e4c
|
@ -1465,6 +1465,7 @@ private:
|
|||
"NSAffineTransform",
|
||||
"NSArray",
|
||||
"NSAttributedString",
|
||||
"NSBlockOperation",
|
||||
"NSBundle",
|
||||
"NSCache",
|
||||
"NSCalendar",
|
||||
|
@ -1480,6 +1481,7 @@ private:
|
|||
"NSIndexPath",
|
||||
"NSIndexSet",
|
||||
"NSInteger",
|
||||
"NSInvocationOperation",
|
||||
"NSLocale",
|
||||
"NSMapTable",
|
||||
"NSMutableArray",
|
||||
|
@ -1494,9 +1496,13 @@ private:
|
|||
"NSNumber",
|
||||
"NSNumberFormatter",
|
||||
"NSObject",
|
||||
"NSOperation",
|
||||
"NSOperationQueue",
|
||||
"NSOperationQueuePriority",
|
||||
"NSOrderedSet",
|
||||
"NSPoint",
|
||||
"NSPointerArray",
|
||||
"NSQualityOfService",
|
||||
"NSRange",
|
||||
"NSRect",
|
||||
"NSRegularExpression",
|
||||
|
@ -1518,10 +1524,7 @@ private:
|
|||
for (const FormatToken *FormatTok = Line->First; FormatTok;
|
||||
FormatTok = FormatTok->Next) {
|
||||
if ((FormatTok->Previous && FormatTok->Previous->is(tok::at) &&
|
||||
(FormatTok->isObjCAtKeyword(tok::objc_interface) ||
|
||||
FormatTok->isObjCAtKeyword(tok::objc_implementation) ||
|
||||
FormatTok->isObjCAtKeyword(tok::objc_protocol) ||
|
||||
FormatTok->isObjCAtKeyword(tok::objc_end) ||
|
||||
(FormatTok->Tok.getObjCKeywordID() != tok::objc_not_keyword ||
|
||||
FormatTok->isOneOf(tok::numeric_constant, tok::l_square,
|
||||
tok::l_brace))) ||
|
||||
(FormatTok->Tok.isAnyIdentifier() &&
|
||||
|
|
|
@ -12118,6 +12118,12 @@ TEST_F(FormatTest, FileAndCode) {
|
|||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo.mm", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_Cpp, guessLanguage("foo.h", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo.h", "@interface Foo\n@end\n"));
|
||||
EXPECT_EQ(
|
||||
FormatStyle::LK_ObjC,
|
||||
guessLanguage("foo.h", "#define TRY(x, y) @try { x; } @finally { y; }"));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC,
|
||||
guessLanguage("foo.h", "#define AVAIL(x) @available(x, *))"));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo.h", "@class Foo;"));
|
||||
EXPECT_EQ(FormatStyle::LK_Cpp, guessLanguage("foo", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo", "@interface Foo\n@end\n"));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC,
|
||||
|
|
Loading…
Reference in New Issue