| Index: tools/gn/parser_unittest.cc
|
| diff --git a/tools/gn/parser_unittest.cc b/tools/gn/parser_unittest.cc
|
| index 7ef5ff64fbc9d57966cd0849495a0a9904c7cb16..adb8fdb4be584a989d1b5f1f8bb1f2aaee4937c9 100644
|
| --- a/tools/gn/parser_unittest.cc
|
| +++ b/tools/gn/parser_unittest.cc
|
| @@ -27,6 +27,8 @@ void DoParserPrintTest(const char* input, const char* expected) {
|
|
|
| Err err;
|
| scoped_ptr<ParseNode> result = Parser::Parse(tokens, &err);
|
| + if (!result)
|
| + err.PrintToStdout();
|
| ASSERT_TRUE(result);
|
|
|
| std::ostringstream collector;
|
| @@ -215,15 +217,31 @@ TEST(Parser, Assignment) {
|
| }
|
|
|
| TEST(Parser, Accessor) {
|
| - DoParserPrintTest("a=b[2]",
|
| + // Accessor indexing.
|
| + DoParserPrintTest("a=b[c+2]",
|
| "BLOCK\n"
|
| " BINARY(=)\n"
|
| " IDENTIFIER(a)\n"
|
| " ACCESSOR\n"
|
| " b\n" // AccessorNode is a bit weird in that it holds
|
| // a Token, not a ParseNode for the base.
|
| - " LITERAL(2)\n");
|
| + " BINARY(+)\n"
|
| + " IDENTIFIER(c)\n"
|
| + " LITERAL(2)\n");
|
| DoParserErrorTest("a = b[1][0]", 1, 5);
|
| +
|
| + // Member accessors.
|
| + DoParserPrintTest("a=b.c+2",
|
| + "BLOCK\n"
|
| + " BINARY(=)\n"
|
| + " IDENTIFIER(a)\n"
|
| + " BINARY(+)\n"
|
| + " ACCESSOR\n"
|
| + " b\n"
|
| + " IDENTIFIER(c)\n"
|
| + " LITERAL(2)\n");
|
| + DoParserErrorTest("a = b.c.d", 1, 6); // Can't nest accessors (currently).
|
| + DoParserErrorTest("a.b = 5", 1, 1); // Can't assign to accessors (currently).
|
| }
|
|
|
| TEST(Parser, Condition) {
|
|
|