Author: alexfh Date: Tue Dec 4 08:46:19 2012 New Revision: 169272 URL: http://llvm.org/viewvc/llvm-project?rev=169272&view=rev Log: Enum formatting implementation
Reviewers: djasper, klimek Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D161 Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp cfe/trunk/unittests/Format/FormatTest.cpp Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=169272&r1=169271&r2=169272&view=diff ============================================================================== --- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original) +++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Tue Dec 4 08:46:19 2012 @@ -99,19 +99,38 @@ } void UnwrappedLineParser::parseStatement() { - if (FormatTok.Tok.is(tok::kw_public) || FormatTok.Tok.is(tok::kw_protected) || - FormatTok.Tok.is(tok::kw_private)) { + switch (FormatTok.Tok.getKind()) { + case tok::kw_public: + case tok::kw_protected: + case tok::kw_private: parseAccessSpecifier(); return; - } - if (FormatTok.Tok.is(tok::kw_enum)) { - parseEnum(); + case tok::kw_if: + parseIfThenElse(); + return; + case tok::kw_do: + parseDoWhile(); + return; + case tok::kw_switch: + parseSwitch(); + return; + case tok::kw_default: + nextToken(); + parseLabel(); return; + case tok::kw_case: + parseCaseLabel(); + return; + default: + break; } int TokenNumber = 0; do { ++TokenNumber; switch (FormatTok.Tok.getKind()) { + case tok::kw_enum: + parseEnum(); + return; case tok::semi: nextToken(); addUnwrappedLine(); @@ -123,32 +142,16 @@ parseBlock(); addUnwrappedLine(); return; - case tok::kw_if: - parseIfThenElse(); - return; - case tok::kw_do: - parseDoWhile(); - return; - case tok::kw_switch: - parseSwitch(); - return; - case tok::kw_default: - nextToken(); - parseLabel(); - return; - case tok::kw_case: - parseCaseLabel(); - return; - case tok::raw_identifier: - nextToken(); - break; - default: + case tok::identifier: nextToken(); if (TokenNumber == 1 && FormatTok.Tok.is(tok::colon)) { parseLabel(); return; } break; + default: + nextToken(); + break; } } while (!eof()); } @@ -265,12 +268,35 @@ } void UnwrappedLineParser::parseEnum() { + bool HasContents = false; do { - nextToken(); - if (FormatTok.Tok.is(tok::semi)) { + switch (FormatTok.Tok.getKind()) { + case tok::l_brace: + nextToken(); + addUnwrappedLine(); + ++Line.Level; + break; + case tok::l_paren: + parseParens(); + break; + case tok::comma: + nextToken(); + addUnwrappedLine(); + break; + case tok::r_brace: + if (HasContents) + addUnwrappedLine(); + --Line.Level; + nextToken(); + break; + case tok::semi: nextToken(); addUnwrappedLine(); return; + default: + HasContents = true; + nextToken(); + break; } } while (!eof()); } Modified: cfe/trunk/unittests/Format/FormatTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=169272&r1=169271&r2=169272&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTest.cpp (original) +++ cfe/trunk/unittests/Format/FormatTest.cpp Tue Dec 4 08:46:19 2012 @@ -244,6 +244,21 @@ "while (something());"); } +TEST_F(FormatTest, Enum) { + verifyFormat("enum {\n" + " Zero,\n" + " One = 1,\n" + " Two = One + 1,\n" + " Three = (One + Two),\n" + " Four = (Zero && (One ^ Two)) | (One << Two),\n" + " Five = (One, Two, Three, Four, 5)\n" + "};"); + verifyFormat("enum Enum {\n" + "};"); + verifyFormat("enum {\n" + "};"); +} + TEST_F(FormatTest, BreaksDesireably) { verifyFormat("if (aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n" " aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n" _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
