Ack, makes sense.
On Mon, Dec 17, 2012 at 12:33 PM, Chandler Carruth <[email protected]>wrote: > On Mon, Dec 17, 2012 at 3:29 AM, Daniel Jasper <[email protected]> wrote: > >> Author: djasper >> Date: Mon Dec 17 05:29:41 2012 >> New Revision: 170316 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=170316&view=rev >> Log: >> Fix several formatting problems. >> >> More specifically: >> - Improve formatting of static initializers. >> - Fix formatting of lines comments in enums. >> - Fix formmating of trailing line comments. >> > > Where possible, it would be good to keep such improvements in independent > commits... It makes reviewing them easier. > > >> >> Modified: >> cfe/trunk/lib/Format/Format.cpp >> cfe/trunk/lib/Format/UnwrappedLineParser.cpp >> cfe/trunk/lib/Format/UnwrappedLineParser.h >> cfe/trunk/unittests/Format/FormatTest.cpp >> >> Modified: cfe/trunk/lib/Format/Format.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=170316&r1=170315&r2=170316&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Format/Format.cpp (original) >> +++ cfe/trunk/lib/Format/Format.cpp Mon Dec 17 05:29:41 2012 >> @@ -734,15 +734,16 @@ >> } >> >> bool canBreakBetween(const FormatToken &Left, const FormatToken >> &Right) { >> - if (Right.Tok.is(tok::r_paren)) >> + if (Right.Tok.is(tok::r_paren) || Right.Tok.is(tok::l_brace) || >> + Right.Tok.is(tok::comment) || Right.Tok.is(tok::greater)) >> return false; >> if (isBinaryOperator(Left)) >> return true; >> if (Right.Tok.is(tok::lessless)) >> return true; >> - return Right.Tok.is(tok::colon) || Left.Tok.is(tok::comma) || >> - Left.Tok.is(tok::semi) || Left.Tok.is(tok::equal) || >> - Left.Tok.is(tok::ampamp) || Left.Tok.is(tok::pipepipe) || >> + return Right.Tok.is(tok::colon) || Left.Tok.is(tok::comma) || >> Left.Tok.is( >> + tok::semi) || Left.Tok.is(tok::equal) || Left.Tok.is(tok::ampamp) >> || >> + Left.Tok.is(tok::pipepipe) || Left.Tok.is(tok::l_brace) || >> (Left.Tok.is(tok::l_paren) && !Right.Tok.is(tok::r_paren)); >> } >> >> >> Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=170316&r1=170315&r2=170316&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original) >> +++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Mon Dec 17 05:29:41 2012 >> @@ -43,7 +43,8 @@ >> parsePPDirective(); >> break; >> case tok::comment: >> - parseComment(); >> + nextToken(); >> + addUnwrappedLine(); >> break; >> case tok::l_brace: >> Error |= parseBlock(); >> @@ -90,22 +91,16 @@ >> } >> } >> >> -void UnwrappedLineParser::parseComment() { >> - while (!eof()) { >> - nextToken(); >> - if (FormatTok.NewlinesBefore > 0) { >> - addUnwrappedLine(); >> - return; >> - } >> - } >> -} >> - >> -void UnwrappedLineParser::parseStatement() { >> +void UnwrappedLineParser::parseComments() { >> // Consume leading line comments, e.g. for branches without compounds. >> while (FormatTok.Tok.is(tok::comment)) { >> nextToken(); >> addUnwrappedLine(); >> } >> +} >> + >> +void UnwrappedLineParser::parseStatement() { >> + parseComments(); >> >> switch (FormatTok.Tok.getKind()) { >> case tok::kw_namespace: >> @@ -164,6 +159,12 @@ >> return; >> } >> break; >> + case tok::equal: >> + nextToken(); >> + // Skip initializers as they will be formatted by a later step. >> + if (FormatTok.Tok.is(tok::l_brace)) >> + nextToken(); >> + break; >> default: >> nextToken(); >> break; >> @@ -325,6 +326,7 @@ >> nextToken(); >> addUnwrappedLine(); >> ++Line.Level; >> + parseComments(); >> break; >> case tok::l_paren: >> parseParens(); >> @@ -332,6 +334,7 @@ >> case tok::comma: >> nextToken(); >> addUnwrappedLine(); >> + parseComments(); >> break; >> case tok::r_brace: >> if (HasContents) >> >> Modified: cfe/trunk/lib/Format/UnwrappedLineParser.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.h?rev=170316&r1=170315&r2=170316&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Format/UnwrappedLineParser.h (original) >> +++ cfe/trunk/lib/Format/UnwrappedLineParser.h Mon Dec 17 05:29:41 2012 >> @@ -96,7 +96,7 @@ >> bool parseLevel(); >> bool parseBlock(unsigned AddLevels = 1); >> void parsePPDirective(); >> - void parseComment(); >> + void parseComments(); >> void parseStatement(); >> void parseParens(); >> void parseIfThenElse(); >> >> Modified: cfe/trunk/unittests/Format/FormatTest.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=170316&r1=170315&r2=170316&view=diff >> >> ============================================================================== >> --- cfe/trunk/unittests/Format/FormatTest.cpp (original) >> +++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Dec 17 05:29:41 2012 >> @@ -245,6 +245,19 @@ >> EXPECT_EQ("int i // This is a fancy variable\n = 5;", >> format("int i // This is a fancy variable\n= 5;")); >> >> + EXPECT_EQ("enum E {\n" >> + " // comment\n" >> + " VAL_A, // comment\n" >> + " VAL_B\n" >> + "};", >> + format("enum E{\n// comment\nVAL_A,// comment\nVAL_B};")); >> + >> + verifyFormat( >> + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n" >> + " bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb; // Trailing >> comment"); >> +} >> + >> +TEST_F(FormatTest, UnderstandsMultiLineComments) { >> verifyFormat("f(/*test=*/ true);"); >> } >> >> @@ -319,6 +332,15 @@ >> "}"); >> } >> >> +TEST_F(FormatTest, StaticInitializers) { >> + verifyFormat("static SomeClass SC = { 1, 'a' };"); >> + >> + // FIXME: Format like enums if the static initializer does not fit on >> a line. >> + verifyFormat( >> + "static SomeClass WithALoooooooooooooooooooongName = { >> 100000000,\n" >> + " >> \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" };"); >> +} >> + >> >> >> //===----------------------------------------------------------------------===// >> // Line break tests. >> >> >> //===----------------------------------------------------------------------===// >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
