From: Daniel Jasper Date: Fri, 5 Dec 2014 10:42:21 +0000 (+0000) Subject: clang-format: Support NS_OPTIONS, CF_ENUM and CF_OPTIONS. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1a4b00f02c1273e787276c195999c22ef382f9d;p=clang clang-format: Support NS_OPTIONS, CF_ENUM and CF_OPTIONS. This fixes llvm.org/PR21756. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223458 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/FormatToken.h b/lib/Format/FormatToken.h index 11c4925d01..df47421012 100644 --- a/lib/Format/FormatToken.h +++ b/lib/Format/FormatToken.h @@ -535,7 +535,10 @@ private: struct AdditionalKeywords { AdditionalKeywords(IdentifierTable &IdentTable) { kw_in = &IdentTable.get("in"); + kw_CF_ENUM = &IdentTable.get("CF_ENUM"); + kw_CF_OPTIONS = &IdentTable.get("CF_OPTIONS"); kw_NS_ENUM = &IdentTable.get("NS_ENUM"); + kw_NS_OPTIONS = &IdentTable.get("NS_OPTIONS"); kw_finally = &IdentTable.get("finally"); kw_function = &IdentTable.get("function"); @@ -560,7 +563,10 @@ struct AdditionalKeywords { // ObjC context sensitive keywords. IdentifierInfo *kw_in; + IdentifierInfo *kw_CF_ENUM; + IdentifierInfo *kw_CF_OPTIONS; IdentifierInfo *kw_NS_ENUM; + IdentifierInfo *kw_NS_OPTIONS; // JavaScript keywords. IdentifierInfo *kw_finally; diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index 21f0e7bad1..d0c899ffe0 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -747,7 +747,8 @@ void UnwrappedLineParser::parseStructuralElement() { break; case tok::kw_typedef: nextToken(); - if (FormatTok->is(Keywords.kw_NS_ENUM)) + if (FormatTok->isOneOf(Keywords.kw_NS_ENUM, Keywords.kw_NS_OPTIONS, + Keywords.kw_CF_ENUM, Keywords.kw_CF_OPTIONS)) parseEnum(); break; case tok::kw_struct: diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 6481a3122f..cf2d8097f7 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -2069,6 +2069,21 @@ TEST_F(FormatTest, FormatsNSEnums) { " // Information about aThirdDecentlyLongValue.\n" " aThirdDecentlyLongValue\n" "};"); + verifyGoogleFormat("typedef NS_OPTIONS(NSInteger, MyType) {\n" + " a = 1,\n" + " b = 2,\n" + " c = 3,\n" + "};"); + verifyGoogleFormat("typedef CF_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" + " c = 3,\n" + "};"); } TEST_F(FormatTest, FormatsBitfields) {