Enum formatting implementation
Reviewers: djasper, klimek Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D161 llvm-svn: 169272
This commit is contained in:
parent
6137942d09
commit
b7076a2308
|
|
@ -99,29 +99,11 @@ void UnwrappedLineParser::parseComment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnwrappedLineParser::parseStatement() {
|
void UnwrappedLineParser::parseStatement() {
|
||||||
if (FormatTok.Tok.is(tok::kw_public) || FormatTok.Tok.is(tok::kw_protected) ||
|
|
||||||
FormatTok.Tok.is(tok::kw_private)) {
|
|
||||||
parseAccessSpecifier();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (FormatTok.Tok.is(tok::kw_enum)) {
|
|
||||||
parseEnum();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int TokenNumber = 0;
|
|
||||||
do {
|
|
||||||
++TokenNumber;
|
|
||||||
switch (FormatTok.Tok.getKind()) {
|
switch (FormatTok.Tok.getKind()) {
|
||||||
case tok::semi:
|
case tok::kw_public:
|
||||||
nextToken();
|
case tok::kw_protected:
|
||||||
addUnwrappedLine();
|
case tok::kw_private:
|
||||||
return;
|
parseAccessSpecifier();
|
||||||
case tok::l_paren:
|
|
||||||
parseParens();
|
|
||||||
break;
|
|
||||||
case tok::l_brace:
|
|
||||||
parseBlock();
|
|
||||||
addUnwrappedLine();
|
|
||||||
return;
|
return;
|
||||||
case tok::kw_if:
|
case tok::kw_if:
|
||||||
parseIfThenElse();
|
parseIfThenElse();
|
||||||
|
|
@ -139,16 +121,37 @@ void UnwrappedLineParser::parseStatement() {
|
||||||
case tok::kw_case:
|
case tok::kw_case:
|
||||||
parseCaseLabel();
|
parseCaseLabel();
|
||||||
return;
|
return;
|
||||||
case tok::raw_identifier:
|
|
||||||
nextToken();
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
int TokenNumber = 0;
|
||||||
|
do {
|
||||||
|
++TokenNumber;
|
||||||
|
switch (FormatTok.Tok.getKind()) {
|
||||||
|
case tok::kw_enum:
|
||||||
|
parseEnum();
|
||||||
|
return;
|
||||||
|
case tok::semi:
|
||||||
|
nextToken();
|
||||||
|
addUnwrappedLine();
|
||||||
|
return;
|
||||||
|
case tok::l_paren:
|
||||||
|
parseParens();
|
||||||
|
break;
|
||||||
|
case tok::l_brace:
|
||||||
|
parseBlock();
|
||||||
|
addUnwrappedLine();
|
||||||
|
return;
|
||||||
|
case tok::identifier:
|
||||||
nextToken();
|
nextToken();
|
||||||
if (TokenNumber == 1 && FormatTok.Tok.is(tok::colon)) {
|
if (TokenNumber == 1 && FormatTok.Tok.is(tok::colon)) {
|
||||||
parseLabel();
|
parseLabel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
nextToken();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} while (!eof());
|
} while (!eof());
|
||||||
}
|
}
|
||||||
|
|
@ -265,12 +268,35 @@ void UnwrappedLineParser::parseAccessSpecifier() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnwrappedLineParser::parseEnum() {
|
void UnwrappedLineParser::parseEnum() {
|
||||||
|
bool HasContents = false;
|
||||||
do {
|
do {
|
||||||
|
switch (FormatTok.Tok.getKind()) {
|
||||||
|
case tok::l_brace:
|
||||||
nextToken();
|
nextToken();
|
||||||
if (FormatTok.Tok.is(tok::semi)) {
|
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();
|
nextToken();
|
||||||
addUnwrappedLine();
|
addUnwrappedLine();
|
||||||
return;
|
return;
|
||||||
|
default:
|
||||||
|
HasContents = true;
|
||||||
|
nextToken();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} while (!eof());
|
} while (!eof());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -244,6 +244,21 @@ TEST_F(FormatTest, DoWhile) {
|
||||||
"while (something());");
|
"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) {
|
TEST_F(FormatTest, BreaksDesireably) {
|
||||||
verifyFormat("if (aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n"
|
verifyFormat("if (aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n"
|
||||||
" aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n"
|
" aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue