continuations in parsetoken too
authorEvan Martin <martine@danga.com>
Fri, 22 Oct 2010 16:48:35 +0000 (09:48 -0700)
committerEvan Martin <martine@danga.com>
Fri, 22 Oct 2010 16:48:35 +0000 (09:48 -0700)
manifest_parser.h
ninja_test.cc

index 82eb9a8..6ecbe7e 100644 (file)
@@ -49,6 +49,11 @@ void Parser::SkipWhitespace(bool newline) {
       ++cur_;
     } else if (newline && *cur_ == '\n') {
       Newline(NULL);
+    } else if (*cur_ == '\\' && cur_ + 1 < end_ && cur_[1] == '\n') {
+      ++cur_;
+      string token = token_;  // XXX hack around newline clearing token.
+      Newline(NULL);
+      token_ = token;
     } else {
       break;
     }
index 0eb5884..0794915 100644 (file)
@@ -56,8 +56,8 @@ TEST(Parser, Continuation) {
 "command foo bar \\\n"
 "    baz\n"
 "\n"
-"extra = \\\n"
-"xyz\n"));
+"build a: link c \\\n"
+" d e f\n"));
 
   ASSERT_EQ(1, state.rules_.size());
   Rule* rule = state.rules_.begin()->second;