Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Unified Diff: tools/gn/parser.cc

Issue 607173002: gn format: fix comments at end of blocks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/gn/parse_tree.cc ('k') | tools/gn/parser_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/parser.cc
diff --git a/tools/gn/parser.cc b/tools/gn/parser.cc
index e07b45079771f059ff7dd260191e625034a34695..fe17aaceb748afd4b904676de4e5d9d1ea380142 100644
--- a/tools/gn/parser.cc
+++ b/tools/gn/parser.cc
@@ -285,7 +285,7 @@ scoped_ptr<ParseNode> Parser::IdentifierOrCall(scoped_ptr<ParseNode> left,
Token token) {
scoped_ptr<ListNode> list(new ListNode);
list->set_begin_token(token);
- list->set_end_token(token);
+ list->set_end(make_scoped_ptr(new EndNode(token)));
scoped_ptr<BlockNode> block;
bool has_arg = false;
if (LookAhead(Token::LEFT_PAREN)) {
@@ -418,7 +418,7 @@ scoped_ptr<ListNode> Parser::ParseList(Token start_token,
*err_ = Err(cur_token(), "Trailing comma");
return scoped_ptr<ListNode>();
}
- list->set_end_token(cur_token());
+ list->set_end(make_scoped_ptr(new EndNode(cur_token())));
return list.Pass();
}
@@ -479,7 +479,7 @@ scoped_ptr<BlockNode> Parser::ParseBlock() {
for (;;) {
if (LookAhead(Token::RIGHT_BRACE)) {
- block->set_end_token(Consume());
+ block->set_end(make_scoped_ptr(new EndNode(Consume())));
break;
}
@@ -526,6 +526,7 @@ void Parser::TraverseOrder(const ParseNode* root,
++i) {
TraverseOrder(*i, pre, post);
}
+ TraverseOrder(block->End(), pre, post);
} else if (const ConditionNode* condition = root->AsConditionNode()) {
TraverseOrder(condition->condition(), pre, post);
TraverseOrder(condition->if_true(), pre, post);
@@ -542,12 +543,15 @@ void Parser::TraverseOrder(const ParseNode* root,
++i) {
TraverseOrder(*i, pre, post);
}
+ TraverseOrder(list->End(), pre, post);
} else if (root->AsLiteral()) {
// Nothing.
} else if (const UnaryOpNode* unaryop = root->AsUnaryOp()) {
TraverseOrder(unaryop->operand(), pre, post);
} else if (root->AsBlockComment()) {
// Nothing.
+ } else if (root->AsEnd()) {
+ // Nothing.
} else {
CHECK(false) << "Unhandled case in TraverseOrder.";
}
@@ -592,7 +596,7 @@ void Parser::AssignComments(ParseNode* file) {
++i) {
// Don't assign suffix comments to the function call or list, but instead
// to the last thing inside.
- if ((*i)->AsFunctionCall() || (*i)->AsList())
+ if ((*i)->AsFunctionCall() || (*i)->AsList() || (*i)->AsEnd())
continue;
const Location& start = (*i)->GetRange().begin();
@@ -620,6 +624,7 @@ void Parser::AssignComments(ParseNode* file) {
// Suffix comments were assigned in reverse, so if there were multiple on
// the same node, they need to be reversed.
- const_cast<ParseNode*>(*i)->comments_mutable()->ReverseSuffix();
+ if ((*i)->comments() && !(*i)->comments()->suffix().empty())
+ const_cast<ParseNode*>(*i)->comments_mutable()->ReverseSuffix();
}
}
« no previous file with comments | « tools/gn/parse_tree.cc ('k') | tools/gn/parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698