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

Unified Diff: tools/gn/parser.cc

Issue 1007963003: Fixes to {} handling in GN. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 5 years, 9 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_unittest.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 4acd510328b0e3dd5df631036dfc6b26af25aa66..13710cd02294a29fe4ccac25faf7adef592cb040 100644
--- a/tools/gn/parser.cc
+++ b/tools/gn/parser.cc
@@ -446,9 +446,7 @@ scoped_ptr<ParseNode> Parser::ParseFile() {
}
scoped_ptr<ParseNode> Parser::ParseStatement() {
- if (LookAhead(Token::LEFT_BRACE)) {
- return ParseBlock();
- } else if (LookAhead(Token::IF)) {
+ if (LookAhead(Token::IF)) {
return ParseCondition();
} else if (LookAhead(Token::BLOCK_COMMENT)) {
return BlockComment(Consume());
@@ -500,11 +498,14 @@ scoped_ptr<ParseNode> Parser::ParseCondition() {
Consume(Token::RIGHT_PAREN, "Expected ')' after condition of 'if'.");
condition->set_if_true(ParseBlock().Pass());
if (Match(Token::ELSE)) {
- if (!LookAhead(Token::LEFT_BRACE) && !LookAhead(Token::IF)) {
+ if (LookAhead(Token::LEFT_BRACE)) {
+ condition->set_if_false(ParseBlock().Pass());
+ } else if (LookAhead(Token::IF)) {
+ condition->set_if_false(ParseStatement().Pass());
+ } else {
*err_ = Err(cur_token(), "Expected '{' or 'if' after 'else'.");
return scoped_ptr<ParseNode>();
}
- condition->set_if_false(ParseStatement().Pass());
}
if (has_error())
return scoped_ptr<ParseNode>();
« no previous file with comments | « tools/gn/parse_tree_unittest.cc ('k') | tools/gn/parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698