forked from OSchip/llvm-project
Adds support for formatting NS_CLOSED_ENUM and CF_CLOSED_ENUM alongside NS_ENUM and CF_ENUM.
Summary: Addresses the formatting of NS_CLOSED_ENUM and CF_CLOSED_ENUM, introduced in Swift 5. Before: ``` typedef NS_CLOSED_ENUM(NSInteger, Foo){FooValueOne = 1, FooValueTwo, FooValueThree}; ``` After: ``` typedef NS_CLOSED_ENUM(NSInteger, Foo) { FooValueOne = 1, FooValueTwo, FooValueThree }; ``` Contributed by heijink. Reviewers: benhamilton, krasimir Reviewed By: benhamilton Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65012 llvm-svn: 366719
This commit is contained in:
parent
4138b2f167
commit
d9212ef77b
|
@ -1685,10 +1685,11 @@ private:
|
|||
std::end(FoundationIdentifiers),
|
||||
FormatTok->TokenText)) ||
|
||||
FormatTok->is(TT_ObjCStringLiteral) ||
|
||||
FormatTok->isOneOf(Keywords.kw_NS_ENUM, Keywords.kw_NS_OPTIONS,
|
||||
TT_ObjCBlockLBrace, TT_ObjCBlockLParen,
|
||||
TT_ObjCDecl, TT_ObjCForIn, TT_ObjCMethodExpr,
|
||||
TT_ObjCMethodSpecifier, TT_ObjCProperty)) {
|
||||
FormatTok->isOneOf(Keywords.kw_NS_CLOSED_ENUM, Keywords.kw_NS_ENUM,
|
||||
Keywords.kw_NS_OPTIONS, TT_ObjCBlockLBrace,
|
||||
TT_ObjCBlockLParen, TT_ObjCDecl, TT_ObjCForIn,
|
||||
TT_ObjCMethodExpr, TT_ObjCMethodSpecifier,
|
||||
TT_ObjCProperty)) {
|
||||
LLVM_DEBUG(llvm::dbgs()
|
||||
<< "Detected ObjC at location "
|
||||
<< FormatTok->Tok.getLocation().printToString(
|
||||
|
|
|
@ -677,8 +677,10 @@ struct AdditionalKeywords {
|
|||
kw_override = &IdentTable.get("override");
|
||||
kw_in = &IdentTable.get("in");
|
||||
kw_of = &IdentTable.get("of");
|
||||
kw_CF_CLOSED_ENUM = &IdentTable.get("CF_CLOSED_ENUM");
|
||||
kw_CF_ENUM = &IdentTable.get("CF_ENUM");
|
||||
kw_CF_OPTIONS = &IdentTable.get("CF_OPTIONS");
|
||||
kw_NS_CLOSED_ENUM = &IdentTable.get("NS_CLOSED_ENUM");
|
||||
kw_NS_ENUM = &IdentTable.get("NS_ENUM");
|
||||
kw_NS_OPTIONS = &IdentTable.get("NS_OPTIONS");
|
||||
|
||||
|
@ -787,8 +789,10 @@ struct AdditionalKeywords {
|
|||
IdentifierInfo *kw_override;
|
||||
IdentifierInfo *kw_in;
|
||||
IdentifierInfo *kw_of;
|
||||
IdentifierInfo *kw_CF_CLOSED_ENUM;
|
||||
IdentifierInfo *kw_CF_ENUM;
|
||||
IdentifierInfo *kw_CF_OPTIONS;
|
||||
IdentifierInfo *kw_NS_CLOSED_ENUM;
|
||||
IdentifierInfo *kw_NS_ENUM;
|
||||
IdentifierInfo *kw_NS_OPTIONS;
|
||||
IdentifierInfo *kw___except;
|
||||
|
|
|
@ -1215,7 +1215,8 @@ void UnwrappedLineParser::parseStructuralElement() {
|
|||
case tok::kw_typedef:
|
||||
nextToken();
|
||||
if (FormatTok->isOneOf(Keywords.kw_NS_ENUM, Keywords.kw_NS_OPTIONS,
|
||||
Keywords.kw_CF_ENUM, Keywords.kw_CF_OPTIONS))
|
||||
Keywords.kw_CF_ENUM, Keywords.kw_CF_OPTIONS,
|
||||
Keywords.kw_CF_CLOSED_ENUM, Keywords.kw_NS_CLOSED_ENUM))
|
||||
parseEnum();
|
||||
break;
|
||||
case tok::kw_struct:
|
||||
|
|
|
@ -1716,6 +1716,8 @@ TEST_F(FormatTest, FormatsTypedefEnum) {
|
|||
|
||||
TEST_F(FormatTest, FormatsNSEnums) {
|
||||
verifyGoogleFormat("typedef NS_ENUM(NSInteger, SomeName) { AAA, BBB }");
|
||||
verifyGoogleFormat(
|
||||
"typedef NS_CLOSED_ENUM(NSInteger, SomeName) { AAA, BBB }");
|
||||
verifyGoogleFormat("typedef NS_ENUM(NSInteger, MyType) {\n"
|
||||
" // Information about someDecentlyLongValue.\n"
|
||||
" someDecentlyLongValue,\n"
|
||||
|
@ -1724,6 +1726,14 @@ TEST_F(FormatTest, FormatsNSEnums) {
|
|||
" // Information about aThirdDecentlyLongValue.\n"
|
||||
" aThirdDecentlyLongValue\n"
|
||||
"};");
|
||||
verifyGoogleFormat("typedef NS_CLOSED_ENUM(NSInteger, MyType) {\n"
|
||||
" // Information about someDecentlyLongValue.\n"
|
||||
" someDecentlyLongValue,\n"
|
||||
" // Information about anotherDecentlyLongValue.\n"
|
||||
" anotherDecentlyLongValue,\n"
|
||||
" // Information about aThirdDecentlyLongValue.\n"
|
||||
" aThirdDecentlyLongValue\n"
|
||||
"};");
|
||||
verifyGoogleFormat("typedef NS_OPTIONS(NSInteger, MyType) {\n"
|
||||
" a = 1,\n"
|
||||
" b = 2,\n"
|
||||
|
@ -1734,6 +1744,11 @@ TEST_F(FormatTest, FormatsNSEnums) {
|
|||
" b = 2,\n"
|
||||
" c = 3,\n"
|
||||
"};");
|
||||
verifyGoogleFormat("typedef CF_CLOSED_ENUM(NSInteger, MyType) {\n"
|
||||
" a = 1,\n"
|
||||
" b = 2,\n"
|
||||
" c = 3,\n"
|
||||
"};");
|
||||
verifyGoogleFormat("typedef CF_OPTIONS(NSInteger, MyType) {\n"
|
||||
" a = 1,\n"
|
||||
" b = 2,\n"
|
||||
|
|
|
@ -114,7 +114,12 @@ TEST(FormatTestObjCStyle, DetectsObjCInHeaders) {
|
|||
EXPECT_EQ(FormatStyle::LK_Cpp, Style->Language);
|
||||
|
||||
Style =
|
||||
getStyle("{}", "a.h", "none", "typedef NS_ENUM(NSInteger, Foo) {};\n");
|
||||
getStyle("{}", "a.h", "none", "typedef NS_ENUM(int, Foo) {};\n");
|
||||
ASSERT_TRUE((bool)Style);
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, Style->Language);
|
||||
|
||||
Style = getStyle("{}", "a.h", "none",
|
||||
"typedef NS_CLOSED_ENUM(int, Foo) {};\n");
|
||||
ASSERT_TRUE((bool)Style);
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, Style->Language);
|
||||
|
||||
|
|
Loading…
Reference in New Issue