From e21449edff093d6f448f4aa50963e5cd6510748f Mon Sep 17 00:00:00 2001 From: Jon Ross-Perkins Date: Tue, 8 Nov 2022 10:08:42 -0800 Subject: [PATCH] Switch the driver to print ParseTree postorder by default (#2371) The ParseTree comments say that preorder is "easier to visualize and read". The problem is, both the ParseTree and Semantics need to operate on the postorder traversal: the ParseTree during construction, and the Semantics during processing. As a consequence, understanding the postorder traversal is important, but it's also very hard to decipher when presented preorder. This PR provides a way to see the postorder, with helpful indents to show subtrees. This retains the preorder printing as an option for people who prefer that. I'm pretty sure it'll be easier to debug tests if we can see the postorder, so I'm making that the default. Co-authored-by: Chandler Carruth --- toolchain/driver/driver.cpp | 9 +- toolchain/driver/driver_test.cpp | 45 +----- toolchain/parser/parse_tree.cpp | 101 ++++++++++---- toolchain/parser/parse_tree.h | 61 +++++--- toolchain/parser/parse_tree_test.cpp | 26 +++- toolchain/parser/testdata/basics/empty.carbon | 2 +- .../testdata/basics/empty_declaration.carbon | 4 +- .../basics/fail_invalid_designators.carbon | 34 ++--- .../basics/fail_no_intro_with_semi.carbon | 4 +- .../basics/fail_no_intro_without_semi.carbon | 2 +- .../basics/fail_paren_match_regression.carbon | 12 +- .../testdata/basics/function_call.carbon | 52 +++---- .../parser/testdata/basics/package.carbon | 42 +++--- .../parser/testdata/basics/return.carbon | 58 ++++---- .../parser/testdata/basics/structs.carbon | 112 +++++++-------- .../parser/testdata/basics/tuples.carbon | 60 ++++---- toolchain/parser/testdata/basics/var.carbon | 52 +++---- .../for/fail_colon_instead_of_in.carbon | 44 +++--- .../testdata/for/fail_missing_in.carbon | 42 +++--- .../testdata/for/fail_missing_var.carbon | 38 ++--- toolchain/parser/testdata/for/nested.carbon | 68 ++++----- toolchain/parser/testdata/for/simple.carbon | 46 +++--- .../function/declaration/basic.carbon | 12 +- .../fail_identifier_instead_of_sig.carbon | 8 +- .../declaration/fail_missing_name.carbon | 6 +- .../declaration/fail_no_sig_or_semi.carbon | 8 +- .../declaration/fail_only_fn_and_semi.carbon | 6 +- .../fail_repeated_fn_and_semi.carbon | 6 +- ...skip_indented_newline_until_outdent.carbon | 16 +-- ...ail_skip_indented_newline_with_semi.carbon | 16 +-- ..._skip_indented_newline_without_semi.carbon | 16 +-- .../fail_skip_to_newline_without_semi.carbon | 16 +-- .../fail_skip_without_semi_to_curly.carbon | 12 +- .../fail_with_identifier_as_param.carbon | 12 +- ...hout_name_and_many_tokens_in_params.carbon | 6 +- .../function/declaration/with_params.carbon | 26 ++-- .../declaration/with_return_type.carbon | 16 +-- .../testdata/function/definition/basic.carbon | 14 +- .../fail_identifier_in_statements.carbon | 16 +-- .../function/definition/with_params.carbon | 46 +++--- .../definition/with_return_type.carbon | 24 ++-- toolchain/parser/testdata/if/basic.carbon | 54 +++---- toolchain/parser/testdata/if/else.carbon | 106 +++++++------- .../testdata/if/fail_else_unbraced.carbon | 106 +++++++------- .../parser/testdata/if/fail_errors.carbon | 56 ++++---- .../parser/testdata/if/fail_unbraced.carbon | 54 +++---- .../testdata/operators/associative.carbon | 26 ++-- .../fail_missing_precedence_and_or.carbon | 26 ++-- .../fail_missing_precedence_or_and.carbon | 26 ++-- .../testdata/operators/fail_variety.carbon | 56 ++++---- .../parser/testdata/operators/fixity.carbon | 132 +++++++++--------- .../operators/missing_precedence_not.carbon | 32 ++--- .../testdata/operators/postfix_unary.carbon | 22 +-- .../testdata/operators/prefix_unary.carbon | 22 +-- toolchain/parser/testdata/while/basic.carbon | 58 ++++---- .../testdata/while/fail_unbraced.carbon | 30 ++-- 56 files changed, 1026 insertions(+), 976 deletions(-) diff --git a/toolchain/driver/driver.cpp b/toolchain/driver/driver.cpp index 485f7ed31fa5..fcb202cd7aea 100644 --- a/toolchain/driver/driver.cpp +++ b/toolchain/driver/driver.cpp @@ -125,6 +125,13 @@ auto Driver::RunDumpSubcommand(DiagnosticConsumer& consumer, } args = args.drop_front(); + auto parse_tree_preorder = false; + if (dump_mode == DumpMode::ParseTree && !args.empty() && + args.front() == "--preorder") { + args = args.drop_front(); + parse_tree_preorder = true; + } + if (args.empty()) { error_stream_ << "ERROR: No input file specified.\n"; return false; @@ -158,7 +165,7 @@ auto Driver::RunDumpSubcommand(DiagnosticConsumer& consumer, auto parse_tree = ParseTree::Parse(tokenized_source, consumer); if (dump_mode == DumpMode::ParseTree) { consumer.Flush(); - parse_tree.Print(output_stream_); + parse_tree.Print(output_stream_, parse_tree_preorder); return !tokenized_source.has_errors() && !parse_tree.has_errors(); } diff --git a/toolchain/driver/driver_test.cpp b/toolchain/driver/driver_test.cpp index e7516002342c..9a2ce136f57d 100644 --- a/toolchain/driver/driver_test.cpp +++ b/toolchain/driver/driver_test.cpp @@ -197,51 +197,14 @@ TEST(DriverTest, DumpParseTree) { EXPECT_TRUE(driver.RunDumpSubcommand(ConsoleDiagnosticConsumer(), {"parse-tree", test_file_path})); EXPECT_THAT(test_error_stream.TakeStr(), StrEq("")); - auto tokenized_text = test_output_stream.TakeStr(); - - EXPECT_THAT( - Yaml::Value::FromText(tokenized_text), - ElementsAre(Yaml::SequenceValue{ - Yaml::MappingValue{ - {"node_index", "6"}, - {"kind", "VariableDeclaration"}, - {"text", "var"}, - {"subtree_size", "7"}, - {"children", - Yaml::SequenceValue{ - Yaml::MappingValue{ - {"node_index", "2"}, - {"kind", "PatternBinding"}, - {"text", ":"}, - {"subtree_size", "3"}, - {"children", - Yaml::SequenceValue{ - Yaml::MappingValue{{"node_index", "0"}, - {"kind", "DeclaredName"}, - {"text", "v"}}, - Yaml::MappingValue{{"node_index", "1"}, - {"kind", "NameReference"}, - {"text", "Int"}}}}}, - Yaml::MappingValue{{"node_index", "4"}, - {"kind", "VariableInitializer"}, - {"text", "="}, - {"subtree_size", "2"}, - {"children", // - Yaml::SequenceValue{Yaml::MappingValue{ - {"node_index", "3"}, - {"kind", "Literal"}, - {"text", "42"}}}}}, - Yaml::MappingValue{{"node_index", "5"}, - {"kind", "DeclarationEnd"}, - {"text", ";"}}}}}, - Yaml::MappingValue{{"node_index", "7"}, // - {"kind", "FileEnd"}, - {"text", ""}}})); + // Verify there is output without examining it. + EXPECT_FALSE(test_output_stream.TakeStr().empty()); // Check that the subcommand dispatch works. EXPECT_TRUE(driver.RunFullCommand({"dump", "parse-tree", test_file_path})); EXPECT_THAT(test_error_stream.TakeStr(), StrEq("")); - EXPECT_THAT(test_output_stream.TakeStr(), StrEq(tokenized_text)); + // Verify there is output without examining it. + EXPECT_FALSE(test_output_stream.TakeStr().empty()); } } // namespace diff --git a/toolchain/parser/parse_tree.cpp b/toolchain/parser/parse_tree.cpp index d1c35ad847dc..bbac1c3ec12f 100644 --- a/toolchain/parser/parse_tree.cpp +++ b/toolchain/parser/parse_tree.cpp @@ -88,13 +88,73 @@ auto ParseTree::GetNodeText(Node n) const -> llvm::StringRef { return tokens_->GetTokenText(node_impls_[n.index_].token); } +auto ParseTree::PrintNode(llvm::raw_ostream& output, Node n, int depth, + bool preorder) const -> bool { + const auto& n_impl = node_impls_[n.index()]; + output.indent(2 * depth); + output << "{"; + // If children are being added, include node_index in order to disambiguate + // nodes. + if (preorder) { + output << "node_index: " << n.index_ << ", "; + } + output << "kind: '" << n_impl.kind.name() << "', text: '" + << tokens_->GetTokenText(n_impl.token) << "'"; + + if (n_impl.has_error) { + output << ", has_error: yes"; + } + + if (n_impl.subtree_size > 1) { + output << ", subtree_size: " << n_impl.subtree_size; + if (preorder) { + output << ", children: [\n"; + return true; + } + } + output << "}"; + return false; +} + auto ParseTree::Print(llvm::raw_ostream& output) const -> void { + // Walk the tree just to calculate depths for each node. + llvm::SmallVector indents; + indents.append(size(), 0); + + llvm::SmallVector, 16> node_stack; + for (Node n : roots()) { + node_stack.push_back({n, 0}); + } + + while (!node_stack.empty()) { + Node n; + int depth; + std::tie(n, depth) = node_stack.pop_back_val(); + for (Node sibling_n : children(n)) { + indents[sibling_n.index()] = depth + 1; + node_stack.push_back({sibling_n, depth + 1}); + } + } + output << "[\n"; - // The parse tree is stored in postorder, but the most natural order to - // visualize is preorder. This is a tree, so the preorder can be constructed - // by reversing the order of each level of siblings within an RPO. The sibling - // iterators are directly built around RPO and so can be used with a stack to - // produce preorder. + for (Node n : postorder()) { + PrintNode(output, n, indents[n.index()], /*adding_children=*/false); + output << ",\n"; + } + output << "]\n"; +} + +auto ParseTree::Print(llvm::raw_ostream& output, bool preorder) const -> void { + if (!preorder) { + Print(output); + return; + } + + output << "[\n"; + // The parse tree is stored in postorder. The preorder can be constructed + // by reversing the order of each level of siblings within an RPO. The + // sibling iterators are directly built around RPO and so can be used with a + // stack to produce preorder. // The roots, like siblings, are in RPO (so reversed), but we add them in // order here because we'll pop off the stack effectively reversing then. @@ -107,37 +167,16 @@ auto ParseTree::Print(llvm::raw_ostream& output) const -> void { Node n; int depth; std::tie(n, depth) = node_stack.pop_back_val(); - const auto& n_impl = node_impls_[n.index()]; - for (int unused_indent : llvm::seq(0, depth)) { - (void)unused_indent; - output << " "; - } - - output << "{node_index: " << n.index_ << ", kind: '" << n_impl.kind.name() - << "', text: '" << tokens_->GetTokenText(n_impl.token) << "'"; - - if (n_impl.has_error) { - output << ", has_error: yes"; - } - - if (n_impl.subtree_size > 1) { - output << ", subtree_size: " << n_impl.subtree_size; - // Has children, so we descend. - output << ", children: [\n"; - // We append the children in order here as well because they will get - // reversed when popped off the stack. + if (PrintNode(output, n, depth, /*adding_children=*/true)) { + // Has children, so we descend. We append the children in order here as + // well because they will get reversed when popped off the stack. for (Node sibling_n : children(n)) { node_stack.push_back({sibling_n, depth + 1}); } continue; } - // This node is finished, so close it up. - CARBON_CHECK(n_impl.subtree_size == 1) - << "Subtree size must always be a positive integer!"; - output << "}"; - int next_depth = node_stack.empty() ? 0 : node_stack.back().second; CARBON_CHECK(next_depth <= depth) << "Cannot have the next depth increase!"; for (int close_children_count : llvm::seq(0, depth - next_depth)) { @@ -145,8 +184,8 @@ auto ParseTree::Print(llvm::raw_ostream& output) const -> void { output << "]}"; } - // We always end with a comma and a new line as we'll move to the next node - // at whatever the current level ends up being. + // We always end with a comma and a new line as we'll move to the next + // node at whatever the current level ends up being. output << ",\n"; } output << "]\n"; diff --git a/toolchain/parser/parse_tree.h b/toolchain/parser/parse_tree.h index 761330969cc1..8f5b59db1fe6 100644 --- a/toolchain/parser/parse_tree.h +++ b/toolchain/parser/parse_tree.h @@ -102,36 +102,48 @@ class ParseTree { // the underlying source text. [[nodiscard]] auto GetNodeText(Node n) const -> llvm::StringRef; + // See the other Print comments. + auto Print(llvm::raw_ostream& output) const -> void; + // Prints a description of the parse tree to the provided `raw_ostream`. // - // While the parse tree is represented as a postorder sequence, we print it in - // preorder to make it easier to visualize and read. The node indices are the - // postorder indices. The print out represents each node as a YAML record, - // with children nested within it. + // The tree may be printed in either preorder or postorder. Output represents + // each node as a YAML record; in preorder, children are nested. + // + // In both, a node is formatted as: + // ``` + // {kind: 'foo', text: '...'} + // ``` // - // A single node without children is formatted as: - // ``` - // {node_index: 0, kind: 'foo', text: '...'} - // ``` - // A node with two children, one of them with an error: - // ``` - // {node_index: 2, kind: 'foo', text: '...', children: [ - // {node_index: 0, kind: 'bar', text: '...', has_error: yes}, - // {node_index: 1, kind: 'baz', text: '...'}]} - // ``` // The top level is formatted as an array of these nodes. - // ``` - // [ - // {node_index: 1, kind: 'foo', text: '...'}, - // {node_index: 0, kind: 'foo', text: '...'}, - // ... - // ] - // ``` + // ``` + // [ + // {kind: 'foo', text: '...'}, + // {kind: 'foo', text: '...'}, + // ... + // ] + // ``` + // + // In postorder, nodes are indented in order to indicate depth. For example, a + // node with two children, one of them with an error: + // ``` + // {kind: 'bar', text: '...', has_error: yes}, + // {kind: 'baz', text: '...'} + // {kind: 'foo', text: '...', subtree_size: 2} + // ``` + // + // In preorder, nodes are marked as children with postorder (storage) index. + // For example, a node with two children, one of them with an error: + // ``` + // {node_index: 2, kind: 'foo', text: '...', subtree_size: 2, children: [ + // {node_index: 0, kind: 'bar', text: '...', has_error: yes}, + // {node_index: 1, kind: 'baz', text: '...'}]} + // ``` // // This can be parsed as YAML using tools like `python-yq` combined with `jq` // on the command line. The format is also reasonably amenable to other // line-oriented shell tools from `grep` to `awk`. - auto Print(llvm::raw_ostream& output) const -> void; + auto Print(llvm::raw_ostream& output, bool preorder) const -> void; // Verifies the parse tree structure. // @@ -211,6 +223,11 @@ class ParseTree { // should be used to actually parse the tokens into a tree. explicit ParseTree(TokenizedBuffer& tokens_arg) : tokens_(&tokens_arg) {} + // Prints a single node for Print(). Returns true when preorder and there are + // children. + auto PrintNode(llvm::raw_ostream& output, Node n, int depth, + bool preorder) const -> bool; + // Depth-first postorder sequence of node implementation data. llvm::SmallVector node_impls_; diff --git a/toolchain/parser/parse_tree_test.cpp b/toolchain/parser/parse_tree_test.cpp index 807bda3d9803..5ee406211493 100644 --- a/toolchain/parser/parse_tree_test.cpp +++ b/toolchain/parser/parse_tree_test.cpp @@ -146,7 +146,7 @@ TEST_F(ParseTreeTest, StructErrors) { } } -TEST_F(ParseTreeTest, PrintingAsYAML) { +TEST_F(ParseTreeTest, PrintPostorderAsYAML) { TokenizedBuffer tokens = GetTokenizedBuffer("fn F();"); ParseTree tree = ParseTree::Parse(tokens, consumer); EXPECT_FALSE(tree.has_errors()); @@ -155,6 +155,30 @@ TEST_F(ParseTreeTest, PrintingAsYAML) { tree.Print(print_stream); print_stream.flush(); + auto file = Yaml::SequenceValue{ + Yaml::MappingValue{{"kind", "FunctionIntroducer"}, {"text", "fn"}}, + Yaml::MappingValue{{"kind", "DeclaredName"}, {"text", "F"}}, + Yaml::MappingValue{{"kind", "ParameterListEnd"}, {"text", ")"}}, + Yaml::MappingValue{ + {"kind", "ParameterList"}, {"text", "("}, {"subtree_size", "2"}}, + Yaml::MappingValue{{"kind", "FunctionDeclaration"}, + {"text", ";"}, + {"subtree_size", "5"}}, + Yaml::MappingValue{{"kind", "FileEnd"}, {"text", ""}}, + }; + + EXPECT_THAT(Yaml::Value::FromText(print_output), ElementsAre(file)); +} + +TEST_F(ParseTreeTest, PrintPreorderAsYAML) { + TokenizedBuffer tokens = GetTokenizedBuffer("fn F();"); + ParseTree tree = ParseTree::Parse(tokens, consumer); + EXPECT_FALSE(tree.has_errors()); + std::string print_output; + llvm::raw_string_ostream print_stream(print_output); + tree.Print(print_stream, /*preorder=*/true); + print_stream.flush(); + auto parameter_list = Yaml::SequenceValue{ Yaml::MappingValue{ {"node_index", "2"}, {"kind", "ParameterListEnd"}, {"text", ")"}}, diff --git a/toolchain/parser/testdata/basics/empty.carbon b/toolchain/parser/testdata/basics/empty.carbon index 0af91192b498..e7f134d208a9 100644 --- a/toolchain/parser/testdata/basics/empty.carbon +++ b/toolchain/parser/testdata/basics/empty.carbon @@ -5,5 +5,5 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parser/testdata/basics/empty_declaration.carbon b/toolchain/parser/testdata/basics/empty_declaration.carbon index f13b771fcde2..d02bc916abad 100644 --- a/toolchain/parser/testdata/basics/empty_declaration.carbon +++ b/toolchain/parser/testdata/basics/empty_declaration.carbon @@ -5,8 +5,8 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 0, kind: 'EmptyDeclaration', text: ';'}, -// CHECK:STDOUT: {node_index: 1, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'EmptyDeclaration', text: ';'}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] ; diff --git a/toolchain/parser/testdata/basics/fail_invalid_designators.carbon b/toolchain/parser/testdata/basics/fail_invalid_designators.carbon index 132e4b4345d5..255a601cc7da 100644 --- a/toolchain/parser/testdata/basics/fail_invalid_designators.carbon +++ b/toolchain/parser/testdata/basics/fail_invalid_designators.carbon @@ -5,23 +5,23 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 15, kind: 'FunctionDefinition', text: '}', subtree_size: 16, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'ExpressionStatement', text: ';', has_error: yes, subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'DesignatorExpression', text: '.', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}]}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'ExpressionStatement', text: ';', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 10, kind: 'DesignatorExpression', text: '.', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 9, kind: 'DesignatedName', text: 'fn', has_error: yes}]}]}, -// CHECK:STDOUT: {node_index: 14, kind: 'ExpressionStatement', text: ';', has_error: yes, subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'DesignatorExpression', text: '.', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'NameReference', text: 'a'}]}]}]}, -// CHECK:STDOUT: {node_index: 16, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'DesignatorExpression', text: '.', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'fn', has_error: yes}, +// CHECK:STDOUT: {kind: 'DesignatorExpression', text: '.', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'DesignatorExpression', text: '.', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // NOTE: Move to its own directory when more tests are added. diff --git a/toolchain/parser/testdata/basics/fail_no_intro_with_semi.carbon b/toolchain/parser/testdata/basics/fail_no_intro_with_semi.carbon index 76b238aa7347..0c839a308e95 100644 --- a/toolchain/parser/testdata/basics/fail_no_intro_with_semi.carbon +++ b/toolchain/parser/testdata/basics/fail_no_intro_with_semi.carbon @@ -5,8 +5,8 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 0, kind: 'EmptyDeclaration', text: ';', has_error: yes}, -// CHECK:STDOUT: {node_index: 1, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'EmptyDeclaration', text: ';', has_error: yes}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/basics/fail_no_intro_with_semi.carbon:[[@LINE+1]]:1: Unrecognized declaration introducer. diff --git a/toolchain/parser/testdata/basics/fail_no_intro_without_semi.carbon b/toolchain/parser/testdata/basics/fail_no_intro_without_semi.carbon index f8bb40818f7f..bd5740161712 100644 --- a/toolchain/parser/testdata/basics/fail_no_intro_without_semi.carbon +++ b/toolchain/parser/testdata/basics/fail_no_intro_without_semi.carbon @@ -5,7 +5,7 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/basics/fail_no_intro_without_semi.carbon:[[@LINE+1]]:1: Unrecognized declaration introducer. diff --git a/toolchain/parser/testdata/basics/fail_paren_match_regression.carbon b/toolchain/parser/testdata/basics/fail_paren_match_regression.carbon index 0acbfe8aa701..db8b7d26ae8c 100644 --- a/toolchain/parser/testdata/basics/fail_paren_match_regression.carbon +++ b/toolchain/parser/testdata/basics/fail_paren_match_regression.carbon @@ -5,12 +5,12 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 4, kind: 'VariableDeclaration', text: 'var', has_error: yes, subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 3, kind: 'VariableInitializer', text: '=', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParenExpression', text: '(', has_error: yes, subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'NameReference', text: 'foo'}, -// CHECK:STDOUT: {node_index: 1, kind: 'ParenExpressionEnd', text: ')'}]}]}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParenExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParenExpression', text: '(', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/basics/fail_paren_match_regression.carbon:[[@LINE+3]]:5: Expected pattern in `var` declaration. diff --git a/toolchain/parser/testdata/basics/function_call.carbon b/toolchain/parser/testdata/basics/function_call.carbon index fe55b71ba1b2..4f44c54c2b21 100644 --- a/toolchain/parser/testdata/basics/function_call.carbon +++ b/toolchain/parser/testdata/basics/function_call.carbon @@ -5,32 +5,32 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 24, kind: 'FunctionDefinition', text: '}', subtree_size: 25, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 23, kind: 'ExpressionStatement', text: ';', subtree_size: 19, children: [ -// CHECK:STDOUT: {node_index: 22, kind: 'CallExpression', text: '(', subtree_size: 18, children: [ -// CHECK:STDOUT: {node_index: 20, kind: 'DesignatorExpression', text: '.', subtree_size: 16, children: [ -// CHECK:STDOUT: {node_index: 18, kind: 'CallExpression', text: '(', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'DesignatorExpression', text: '.', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'DesignatorExpression', text: '.', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'DesignatedName', text: 'b'}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'DesignatedName', text: 'f'}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'DesignatorExpression', text: '.', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 10, kind: 'NameReference', text: 'c'}, -// CHECK:STDOUT: {node_index: 11, kind: 'DesignatedName', text: 'd'}]}, -// CHECK:STDOUT: {node_index: 13, kind: 'CallExpressionComma', text: ','}, -// CHECK:STDOUT: {node_index: 16, kind: 'ParenExpression', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'NameReference', text: 'e'}, -// CHECK:STDOUT: {node_index: 15, kind: 'ParenExpressionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 17, kind: 'CallExpressionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'DesignatedName', text: 'g'}]}, -// CHECK:STDOUT: {node_index: 21, kind: 'CallExpressionEnd', text: ')'}]}]}]}, -// CHECK:STDOUT: {node_index: 25, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'b'}, +// CHECK:STDOUT: {kind: 'DesignatorExpression', text: '.', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'f'}, +// CHECK:STDOUT: {kind: 'DesignatorExpression', text: '.', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'd'}, +// CHECK:STDOUT: {kind: 'DesignatorExpression', text: '.', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CallExpressionComma', text: ','}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'e'}, +// CHECK:STDOUT: {kind: 'ParenExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParenExpression', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'g'}, +// CHECK:STDOUT: {kind: 'DesignatorExpression', text: '.', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 25}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // NOTE: Move to its own directory when more tests are added. diff --git a/toolchain/parser/testdata/basics/package.carbon b/toolchain/parser/testdata/basics/package.carbon index 8256379fc69f..3359d09a75e9 100644 --- a/toolchain/parser/testdata/basics/package.carbon +++ b/toolchain/parser/testdata/basics/package.carbon @@ -5,27 +5,27 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 3, kind: 'PackageDirective', text: 'package', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'DeclaredName', text: 'Geometry'}, -// CHECK:STDOUT: {node_index: 1, kind: 'PackageApi', text: 'api'}, -// CHECK:STDOUT: {node_index: 2, kind: 'PackageEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'PackageDirective', text: 'package', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'DeclaredName', text: 'Geometry'}, -// CHECK:STDOUT: {node_index: 5, kind: 'PackageImpl', text: 'impl'}, -// CHECK:STDOUT: {node_index: 6, kind: 'PackageEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 13, kind: 'PackageDirective', text: 'package', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'DeclaredName', text: 'Geometry'}, -// CHECK:STDOUT: {node_index: 10, kind: 'PackageLibrary', text: 'library', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'Literal', text: '"Shapes"'}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'PackageApi', text: 'api'}, -// CHECK:STDOUT: {node_index: 12, kind: 'PackageEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'PackageDirective', text: 'package', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'DeclaredName', text: 'Geometry'}, -// CHECK:STDOUT: {node_index: 16, kind: 'PackageLibrary', text: 'library', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 15, kind: 'Literal', text: '"Shapes"'}]}, -// CHECK:STDOUT: {node_index: 17, kind: 'PackageImpl', text: 'impl'}, -// CHECK:STDOUT: {node_index: 18, kind: 'PackageEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 20, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'Geometry'}, +// CHECK:STDOUT: {kind: 'PackageApi', text: 'api'}, +// CHECK:STDOUT: {kind: 'PackageEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'PackageDirective', text: 'package', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'Geometry'}, +// CHECK:STDOUT: {kind: 'PackageImpl', text: 'impl'}, +// CHECK:STDOUT: {kind: 'PackageEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'PackageDirective', text: 'package', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'Geometry'}, +// CHECK:STDOUT: {kind: 'Literal', text: '"Shapes"'}, +// CHECK:STDOUT: {kind: 'PackageLibrary', text: 'library', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PackageApi', text: 'api'}, +// CHECK:STDOUT: {kind: 'PackageEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'PackageDirective', text: 'package', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'Geometry'}, +// CHECK:STDOUT: {kind: 'Literal', text: '"Shapes"'}, +// CHECK:STDOUT: {kind: 'PackageLibrary', text: 'library', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PackageImpl', text: 'impl'}, +// CHECK:STDOUT: {kind: 'PackageEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'PackageDirective', text: 'package', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // NOTE: Move to its own directory when more tests are added. diff --git a/toolchain/parser/testdata/basics/return.carbon b/toolchain/parser/testdata/basics/return.carbon index 5ea95624f6ab..7f0695bf11fd 100644 --- a/toolchain/parser/testdata/basics/return.carbon +++ b/toolchain/parser/testdata/basics/return.carbon @@ -5,35 +5,35 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 13, kind: 'FunctionDefinition', text: '}', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'IfStatement', text: 'if', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'c'}, -// CHECK:STDOUT: {node_index: 6, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ReturnStatement', text: 'return', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'StatementEnd', text: ';'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 27, kind: 'FunctionDefinition', text: '}', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 23, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 15, kind: 'DeclaredName', text: 'G'}, -// CHECK:STDOUT: {node_index: 20, kind: 'ParameterList', text: '(', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 18, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'DeclaredName', text: 'x'}, -// CHECK:STDOUT: {node_index: 17, kind: 'NameReference', text: 'Foo'}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'ParameterListEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'ReturnType', text: '->', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 21, kind: 'NameReference', text: 'Foo'}]}]}, -// CHECK:STDOUT: {node_index: 26, kind: 'ReturnStatement', text: 'return', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 24, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 25, kind: 'StatementEnd', text: ';'}]}]}, -// CHECK:STDOUT: {node_index: 28, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'StatementEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'ReturnStatement', text: 'return', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'G'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'x'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Foo'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Foo'}, +// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'StatementEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'ReturnStatement', text: 'return', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // NOTE: Move to its own directory when more tests are added. diff --git a/toolchain/parser/testdata/basics/structs.carbon b/toolchain/parser/testdata/basics/structs.carbon index 843c7faec1a7..0098bf66310b 100644 --- a/toolchain/parser/testdata/basics/structs.carbon +++ b/toolchain/parser/testdata/basics/structs.carbon @@ -5,62 +5,62 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 26, kind: 'VariableDeclaration', text: 'var', subtree_size: 27, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'PatternBinding', text: ':', subtree_size: 13, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'DeclaredName', text: 'x'}, -// CHECK:STDOUT: {node_index: 11, kind: 'StructTypeLiteral', text: '{', subtree_size: 11, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'StructFieldType', text: ':', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'StructFieldDesignator', text: '.', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 1, kind: 'DesignatedName', text: 'a'}]}, -// CHECK:STDOUT: {node_index: 3, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'StructComma', text: ','}, -// CHECK:STDOUT: {node_index: 9, kind: 'StructFieldType', text: ':', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'StructFieldDesignator', text: '.', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'DesignatedName', text: 'b'}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'StructEnd', text: '}'}]}]}, -// CHECK:STDOUT: {node_index: 24, kind: 'VariableInitializer', text: '=', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 23, kind: 'StructLiteral', text: '{', subtree_size: 11, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'StructFieldValue', text: '=', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'StructFieldDesignator', text: '.', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'DesignatedName', text: 'a'}]}, -// CHECK:STDOUT: {node_index: 15, kind: 'Literal', text: '1'}]}, -// CHECK:STDOUT: {node_index: 17, kind: 'StructComma', text: ','}, -// CHECK:STDOUT: {node_index: 21, kind: 'StructFieldValue', text: '=', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 19, kind: 'StructFieldDesignator', text: '.', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 18, kind: 'DesignatedName', text: 'b'}]}, -// CHECK:STDOUT: {node_index: 20, kind: 'Literal', text: '2'}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'StructEnd', text: '}'}]}]}, -// CHECK:STDOUT: {node_index: 25, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 35, kind: 'VariableDeclaration', text: 'var', subtree_size: 9, children: [ -// CHECK:STDOUT: {node_index: 30, kind: 'PatternBinding', text: ':', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 27, kind: 'DeclaredName', text: 'y'}, -// CHECK:STDOUT: {node_index: 29, kind: 'StructLiteral', text: '{', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 28, kind: 'StructEnd', text: '}'}]}]}, -// CHECK:STDOUT: {node_index: 33, kind: 'VariableInitializer', text: '=', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 32, kind: 'StructLiteral', text: '{', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 31, kind: 'StructEnd', text: '}'}]}]}, -// CHECK:STDOUT: {node_index: 34, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 54, kind: 'VariableDeclaration', text: 'var', subtree_size: 19, children: [ -// CHECK:STDOUT: {node_index: 44, kind: 'PatternBinding', text: ':', subtree_size: 9, children: [ -// CHECK:STDOUT: {node_index: 36, kind: 'DeclaredName', text: 'z'}, -// CHECK:STDOUT: {node_index: 43, kind: 'StructTypeLiteral', text: '{', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 40, kind: 'StructFieldType', text: ':', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 38, kind: 'StructFieldDesignator', text: '.', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 37, kind: 'DesignatedName', text: 'n'}]}, -// CHECK:STDOUT: {node_index: 39, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 41, kind: 'StructComma', text: ','}, -// CHECK:STDOUT: {node_index: 42, kind: 'StructEnd', text: '}'}]}]}, -// CHECK:STDOUT: {node_index: 52, kind: 'VariableInitializer', text: '=', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 51, kind: 'StructLiteral', text: '{', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 48, kind: 'StructFieldValue', text: '=', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 46, kind: 'StructFieldDesignator', text: '.', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 45, kind: 'DesignatedName', text: 'n'}]}, -// CHECK:STDOUT: {node_index: 47, kind: 'Literal', text: '4'}]}, -// CHECK:STDOUT: {node_index: 49, kind: 'StructComma', text: ','}, -// CHECK:STDOUT: {node_index: 50, kind: 'StructEnd', text: '}'}]}]}, -// CHECK:STDOUT: {node_index: 53, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 55, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'x'}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'a'}, +// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'StructComma', text: ','}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'b'}, +// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'StructEnd', text: '}'}, +// CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '{', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'a'}, +// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: '1'}, +// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'StructComma', text: ','}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'b'}, +// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: '2'}, +// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'StructEnd', text: '}'}, +// CHECK:STDOUT: {kind: 'StructLiteral', text: '{', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'y'}, +// CHECK:STDOUT: {kind: 'StructEnd', text: '}'}, +// CHECK:STDOUT: {kind: 'StructLiteral', text: '{', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'StructEnd', text: '}'}, +// CHECK:STDOUT: {kind: 'StructLiteral', text: '{', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'z'}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'n'}, +// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'StructComma', text: ','}, +// CHECK:STDOUT: {kind: 'StructEnd', text: '}'}, +// CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '{', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'DesignatedName', text: 'n'}, +// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: '4'}, +// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'StructComma', text: ','}, +// CHECK:STDOUT: {kind: 'StructEnd', text: '}'}, +// CHECK:STDOUT: {kind: 'StructLiteral', text: '{', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // NOTE: Move to its own directory when more tests are added. diff --git a/toolchain/parser/testdata/basics/tuples.carbon b/toolchain/parser/testdata/basics/tuples.carbon index 315ed4e1fcf4..71a3dcd5421d 100644 --- a/toolchain/parser/testdata/basics/tuples.carbon +++ b/toolchain/parser/testdata/basics/tuples.carbon @@ -5,36 +5,36 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 14, kind: 'VariableDeclaration', text: 'var', subtree_size: 15, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'PatternBinding', text: ':', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'DeclaredName', text: 'x'}, -// CHECK:STDOUT: {node_index: 5, kind: 'TupleLiteral', text: '(', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 1, kind: 'Literal', text: 'i32'}, -// CHECK:STDOUT: {node_index: 2, kind: 'TupleLiteralComma', text: ','}, -// CHECK:STDOUT: {node_index: 3, kind: 'Literal', text: 'i32'}, -// CHECK:STDOUT: {node_index: 4, kind: 'TupleLiteralEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'VariableInitializer', text: '=', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'TupleLiteral', text: '(', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Literal', text: '1'}, -// CHECK:STDOUT: {node_index: 8, kind: 'TupleLiteralComma', text: ','}, -// CHECK:STDOUT: {node_index: 9, kind: 'Literal', text: '2'}, -// CHECK:STDOUT: {node_index: 10, kind: 'TupleLiteralEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 13, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 28, kind: 'VariableDeclaration', text: 'var', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 26, kind: 'PatternBinding', text: ':', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 15, kind: 'DeclaredName', text: 'y'}, -// CHECK:STDOUT: {node_index: 25, kind: 'TupleLiteral', text: '(', subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'TupleLiteral', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'TupleLiteralEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'TupleLiteralComma', text: ','}, -// CHECK:STDOUT: {node_index: 20, kind: 'TupleLiteral', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 19, kind: 'TupleLiteralEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 21, kind: 'TupleLiteralComma', text: ','}, -// CHECK:STDOUT: {node_index: 23, kind: 'TupleLiteral', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 22, kind: 'TupleLiteralEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 24, kind: 'TupleLiteralEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 27, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 29, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'x'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'TupleLiteralEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'TupleLiteral', text: '(', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'Literal', text: '1'}, +// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, +// CHECK:STDOUT: {kind: 'Literal', text: '2'}, +// CHECK:STDOUT: {kind: 'TupleLiteralEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'TupleLiteral', text: '(', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'y'}, +// CHECK:STDOUT: {kind: 'TupleLiteralEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'TupleLiteral', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, +// CHECK:STDOUT: {kind: 'TupleLiteralEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'TupleLiteral', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, +// CHECK:STDOUT: {kind: 'TupleLiteralEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'TupleLiteral', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'TupleLiteralEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'TupleLiteral', text: '(', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // NOTE: Move to its own directory when more tests are added. diff --git a/toolchain/parser/testdata/basics/var.carbon b/toolchain/parser/testdata/basics/var.carbon index 36a0761080ab..1f433fb2b3f0 100644 --- a/toolchain/parser/testdata/basics/var.carbon +++ b/toolchain/parser/testdata/basics/var.carbon @@ -5,32 +5,32 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 6, kind: 'VariableDeclaration', text: 'var', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'DeclaredName', text: 'v'}, -// CHECK:STDOUT: {node_index: 1, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 4, kind: 'VariableInitializer', text: '=', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 3, kind: 'Literal', text: '0'}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'VariableDeclaration', text: 'var', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'DeclaredName', text: 'w'}, -// CHECK:STDOUT: {node_index: 8, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 24, kind: 'FunctionDefinition', text: '}', subtree_size: 13, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 13, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 15, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 23, kind: 'VariableDeclaration', text: 'var', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 19, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'DeclaredName', text: 's'}, -// CHECK:STDOUT: {node_index: 18, kind: 'NameReference', text: 'String'}]}, -// CHECK:STDOUT: {node_index: 21, kind: 'VariableInitializer', text: '=', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 20, kind: 'Literal', text: '"hello"'}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'DeclarationEnd', text: ';'}]}]}, -// CHECK:STDOUT: {node_index: 25, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'v'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'Literal', text: '0'}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'w'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 's'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'String'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'Literal', text: '"hello"'}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // NOTE: Move to its own directory when more tests are added. diff --git a/toolchain/parser/testdata/for/fail_colon_instead_of_in.carbon b/toolchain/parser/testdata/for/fail_colon_instead_of_in.carbon index 864af413d9d8..d3a5472ce169 100644 --- a/toolchain/parser/testdata/for/fail_colon_instead_of_in.carbon +++ b/toolchain/parser/testdata/for/fail_colon_instead_of_in.carbon @@ -5,28 +5,28 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 20, kind: 'FunctionDefinition', text: '}', subtree_size: 21, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'ForStatement', text: 'for', subtree_size: 15, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'ForHeader', text: '(', has_error: yes, subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'VariableDeclaration', text: 'var', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'DeclaredName', text: 'x'}, -// CHECK:STDOUT: {node_index: 6, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 9, kind: 'NameReference', text: 'y'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ForHeaderEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'CodeBlock', text: '}', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 17, kind: 'ExpressionStatement', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'CallExpression', text: '(', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'Print'}, -// CHECK:STDOUT: {node_index: 14, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 15, kind: 'CallExpressionEnd', text: ')'}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 21, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'x'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'y'}, +// CHECK:STDOUT: {kind: 'ForHeaderEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ForHeader', text: '(', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Print'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo() { diff --git a/toolchain/parser/testdata/for/fail_missing_in.carbon b/toolchain/parser/testdata/for/fail_missing_in.carbon index fd764e3b343f..7e5f1fe4eba9 100644 --- a/toolchain/parser/testdata/for/fail_missing_in.carbon +++ b/toolchain/parser/testdata/for/fail_missing_in.carbon @@ -5,27 +5,27 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 19, kind: 'FunctionDefinition', text: '}', subtree_size: 20, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'ForStatement', text: 'for', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 10, kind: 'ForHeader', text: '(', has_error: yes, subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'VariableDeclaration', text: 'var', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'DeclaredName', text: 'x'}, -// CHECK:STDOUT: {node_index: 6, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 9, kind: 'ForHeaderEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 17, kind: 'CodeBlock', text: '}', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 16, kind: 'ExpressionStatement', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 15, kind: 'CallExpression', text: '(', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'NameReference', text: 'Print'}, -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 14, kind: 'CallExpressionEnd', text: ')'}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 20, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'x'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ForHeaderEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ForHeader', text: '(', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Print'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo() { diff --git a/toolchain/parser/testdata/for/fail_missing_var.carbon b/toolchain/parser/testdata/for/fail_missing_var.carbon index 6affddd41096..9b72df9515e1 100644 --- a/toolchain/parser/testdata/for/fail_missing_var.carbon +++ b/toolchain/parser/testdata/for/fail_missing_var.carbon @@ -5,25 +5,25 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 17, kind: 'FunctionDefinition', text: '}', subtree_size: 18, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 16, kind: 'ForStatement', text: 'for', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'ForHeader', text: '(', has_error: yes, subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'ForIn', text: 'in'}, -// CHECK:STDOUT: {node_index: 6, kind: 'NameReference', text: 'y'}, -// CHECK:STDOUT: {node_index: 7, kind: 'ForHeaderEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 15, kind: 'CodeBlock', text: '}', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 14, kind: 'ExpressionStatement', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'CallExpression', text: '(', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 10, kind: 'NameReference', text: 'Print'}, -// CHECK:STDOUT: {node_index: 11, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 12, kind: 'CallExpressionEnd', text: ')'}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'y'}, +// CHECK:STDOUT: {kind: 'ForHeaderEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ForHeader', text: '(', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Print'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo() { diff --git a/toolchain/parser/testdata/for/nested.carbon b/toolchain/parser/testdata/for/nested.carbon index eb41d9b35dfa..566773f2a4d2 100644 --- a/toolchain/parser/testdata/for/nested.carbon +++ b/toolchain/parser/testdata/for/nested.carbon @@ -5,40 +5,40 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 32, kind: 'FunctionDefinition', text: '}', subtree_size: 33, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 31, kind: 'ForStatement', text: 'for', subtree_size: 27, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'ForHeader', text: '(', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'VariableDeclaration', text: 'var', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'DeclaredName', text: 'y'}, -// CHECK:STDOUT: {node_index: 6, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 9, kind: 'ForIn', text: 'in'}, -// CHECK:STDOUT: {node_index: 10, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 11, kind: 'ForHeaderEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 30, kind: 'CodeBlock', text: '}', subtree_size: 18, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 29, kind: 'ForStatement', text: 'for', subtree_size: 16, children: [ -// CHECK:STDOUT: {node_index: 21, kind: 'ForHeader', text: '(', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'VariableDeclaration', text: 'var', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'DeclaredName', text: 'z'}, -// CHECK:STDOUT: {node_index: 15, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'ForIn', text: 'in'}, -// CHECK:STDOUT: {node_index: 19, kind: 'NameReference', text: 'y'}, -// CHECK:STDOUT: {node_index: 20, kind: 'ForHeaderEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 28, kind: 'CodeBlock', text: '}', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 22, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 27, kind: 'ExpressionStatement', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 26, kind: 'CallExpression', text: '(', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 23, kind: 'NameReference', text: 'Print'}, -// CHECK:STDOUT: {node_index: 24, kind: 'NameReference', text: 'z'}, -// CHECK:STDOUT: {node_index: 25, kind: 'CallExpressionEnd', text: ')'}]}]}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 33, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'y'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'ForHeaderEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ForHeader', text: '(', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'z'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'y'}, +// CHECK:STDOUT: {kind: 'ForHeaderEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ForHeader', text: '(', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Print'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'z'}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 33}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo() { diff --git a/toolchain/parser/testdata/for/simple.carbon b/toolchain/parser/testdata/for/simple.carbon index a3d6749b9a70..7f3a09b82437 100644 --- a/toolchain/parser/testdata/for/simple.carbon +++ b/toolchain/parser/testdata/for/simple.carbon @@ -5,29 +5,29 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 21, kind: 'FunctionDefinition', text: '}', subtree_size: 22, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 20, kind: 'ForStatement', text: 'for', subtree_size: 16, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'ForHeader', text: '(', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'VariableDeclaration', text: 'var', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'DeclaredName', text: 'x'}, -// CHECK:STDOUT: {node_index: 6, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 9, kind: 'ForIn', text: 'in'}, -// CHECK:STDOUT: {node_index: 10, kind: 'NameReference', text: 'y'}, -// CHECK:STDOUT: {node_index: 11, kind: 'ForHeaderEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'CodeBlock', text: '}', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 18, kind: 'ExpressionStatement', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'CallExpression', text: '(', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'NameReference', text: 'Print'}, -// CHECK:STDOUT: {node_index: 15, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 16, kind: 'CallExpressionEnd', text: ')'}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'x'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'y'}, +// CHECK:STDOUT: {kind: 'ForHeaderEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ForHeader', text: '(', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Print'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo() { diff --git a/toolchain/parser/testdata/function/declaration/basic.carbon b/toolchain/parser/testdata/function/declaration/basic.carbon index 3ae6a53a6b12..e3bf4ac4d3c7 100644 --- a/toolchain/parser/testdata/function/declaration/basic.carbon +++ b/toolchain/parser/testdata/function/declaration/basic.carbon @@ -5,12 +5,12 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDeclaration', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F(); diff --git a/toolchain/parser/testdata/function/declaration/fail_identifier_instead_of_sig.carbon b/toolchain/parser/testdata/function/declaration/fail_identifier_instead_of_sig.carbon index 1d5461a9479b..c54e50d4b4ac 100644 --- a/toolchain/parser/testdata/function/declaration/fail_identifier_instead_of_sig.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_identifier_instead_of_sig.carbon @@ -5,10 +5,10 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 2, kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}]}, -// CHECK:STDOUT: {node_index: 3, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_identifier_instead_of_sig.carbon:[[@LINE+1]]:8: Expected `(` after function name. diff --git a/toolchain/parser/testdata/function/declaration/fail_missing_name.carbon b/toolchain/parser/testdata/function/declaration/fail_missing_name.carbon index 6ace8443a129..7e45b1583cdb 100644 --- a/toolchain/parser/testdata/function/declaration/fail_missing_name.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_missing_name.carbon @@ -5,9 +5,9 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 2, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_missing_name.carbon:[[@LINE+1]]:4: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/fail_no_sig_or_semi.carbon b/toolchain/parser/testdata/function/declaration/fail_no_sig_or_semi.carbon index daf433c5a47a..eba6e4312bb7 100644 --- a/toolchain/parser/testdata/function/declaration/fail_no_sig_or_semi.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_no_sig_or_semi.carbon @@ -5,10 +5,10 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 2, kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}]}, -// CHECK:STDOUT: {node_index: 3, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_no_sig_or_semi.carbon:[[@LINE+1]]:7: Expected `(` after function name. diff --git a/toolchain/parser/testdata/function/declaration/fail_only_fn_and_semi.carbon b/toolchain/parser/testdata/function/declaration/fail_only_fn_and_semi.carbon index 74be1a2fd4b2..3c420ef2684f 100644 --- a/toolchain/parser/testdata/function/declaration/fail_only_fn_and_semi.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_only_fn_and_semi.carbon @@ -5,9 +5,9 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 2, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_only_fn_and_semi.carbon:[[@LINE+1]]:3: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/fail_repeated_fn_and_semi.carbon b/toolchain/parser/testdata/function/declaration/fail_repeated_fn_and_semi.carbon index bb9da47ed263..739cb527f1b7 100644 --- a/toolchain/parser/testdata/function/declaration/fail_repeated_fn_and_semi.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_repeated_fn_and_semi.carbon @@ -5,9 +5,9 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 2, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_repeated_fn_and_semi.carbon:[[@LINE+1]]:4: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_until_outdent.carbon b/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_until_outdent.carbon index 7e8eb26186f1..44593a347fb4 100644 --- a/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_until_outdent.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_until_outdent.carbon @@ -5,14 +5,14 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 6, kind: 'FunctionDeclaration', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 3, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 5, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_until_outdent.carbon:[[@LINE+1]]:6: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_with_semi.carbon b/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_with_semi.carbon index e49ab0451cf5..25723891119c 100644 --- a/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_with_semi.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_with_semi.carbon @@ -5,14 +5,14 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 6, kind: 'FunctionDeclaration', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 3, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 5, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_with_semi.carbon:[[@LINE+1]]:4: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_without_semi.carbon b/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_without_semi.carbon index 189734b7c2bb..6fca79cab15e 100644 --- a/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_without_semi.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_without_semi.carbon @@ -5,14 +5,14 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 6, kind: 'FunctionDeclaration', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 3, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 5, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_skip_indented_newline_without_semi.carbon:[[@LINE+1]]:4: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/fail_skip_to_newline_without_semi.carbon b/toolchain/parser/testdata/function/declaration/fail_skip_to_newline_without_semi.carbon index cdd83ef0fdbe..bbae8fbef8ae 100644 --- a/toolchain/parser/testdata/function/declaration/fail_skip_to_newline_without_semi.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_skip_to_newline_without_semi.carbon @@ -5,14 +5,14 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 6, kind: 'FunctionDeclaration', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 3, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 5, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: 'fn', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_skip_to_newline_without_semi.carbon:[[@LINE+1]]:4: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/fail_skip_without_semi_to_curly.carbon b/toolchain/parser/testdata/function/declaration/fail_skip_without_semi_to_curly.carbon index c476e8d00ae2..bab775dfe00b 100644 --- a/toolchain/parser/testdata/function/declaration/fail_skip_without_semi_to_curly.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_skip_without_semi_to_curly.carbon @@ -5,12 +5,12 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDeclaration', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_skip_without_semi_to_curly.carbon:[[@LINE+1]]:1: Unrecognized declaration introducer. diff --git a/toolchain/parser/testdata/function/declaration/fail_with_identifier_as_param.carbon b/toolchain/parser/testdata/function/declaration/fail_with_identifier_as_param.carbon index d048694346f7..f2dce80dd70f 100644 --- a/toolchain/parser/testdata/function/declaration/fail_with_identifier_as_param.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_with_identifier_as_param.carbon @@ -5,12 +5,12 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDeclaration', text: ';', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_with_identifier_as_param.carbon:[[@LINE+1]]:8: Expected parameter declaration. diff --git a/toolchain/parser/testdata/function/declaration/fail_without_name_and_many_tokens_in_params.carbon b/toolchain/parser/testdata/function/declaration/fail_without_name_and_many_tokens_in_params.carbon index fc42886f609b..2081857387b9 100644 --- a/toolchain/parser/testdata/function/declaration/fail_without_name_and_many_tokens_in_params.carbon +++ b/toolchain/parser/testdata/function/declaration/fail_without_name_and_many_tokens_in_params.carbon @@ -5,9 +5,9 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 1, kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}]}, -// CHECK:STDOUT: {node_index: 2, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDERR: {{.*}}/toolchain/parser/testdata/function/declaration/fail_without_name_and_many_tokens_in_params.carbon:[[@LINE+1]]:4: Expected function name after `fn` keyword. diff --git a/toolchain/parser/testdata/function/declaration/with_params.carbon b/toolchain/parser/testdata/function/declaration/with_params.carbon index 0d3b8afbdf3f..e52235571db3 100644 --- a/toolchain/parser/testdata/function/declaration/with_params.carbon +++ b/toolchain/parser/testdata/function/declaration/with_params.carbon @@ -5,19 +5,19 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 11, kind: 'FunctionDeclaration', text: ';', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ParameterList', text: '(', subtree_size: 9, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'DeclaredName', text: 'bar'}, -// CHECK:STDOUT: {node_index: 3, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'ParameterListComma', text: ','}, -// CHECK:STDOUT: {node_index: 8, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'DeclaredName', text: 'baz'}, -// CHECK:STDOUT: {node_index: 7, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 9, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'bar'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ParameterListComma', text: ','}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'baz'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo(bar: i32, baz: i32); diff --git a/toolchain/parser/testdata/function/declaration/with_return_type.carbon b/toolchain/parser/testdata/function/declaration/with_return_type.carbon index 10754d9893f0..29ed3190ef79 100644 --- a/toolchain/parser/testdata/function/declaration/with_return_type.carbon +++ b/toolchain/parser/testdata/function/declaration/with_return_type.carbon @@ -5,14 +5,14 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 6, kind: 'FunctionDeclaration', text: ';', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'ReturnType', text: '->', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'Literal', text: 'u32'}]}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: 'u32'}, +// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDeclaration', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo() -> u32; diff --git a/toolchain/parser/testdata/function/definition/basic.carbon b/toolchain/parser/testdata/function/definition/basic.carbon index f7e2360707b3..6d24db3f3c12 100644 --- a/toolchain/parser/testdata/function/definition/basic.carbon +++ b/toolchain/parser/testdata/function/definition/basic.carbon @@ -5,13 +5,13 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 5, kind: 'FunctionDefinition', text: '}', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}]}, -// CHECK:STDOUT: {node_index: 6, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/function/definition/fail_identifier_in_statements.carbon b/toolchain/parser/testdata/function/definition/fail_identifier_in_statements.carbon index 13085d6a1897..05a98e1dd1d0 100644 --- a/toolchain/parser/testdata/function/definition/fail_identifier_in_statements.carbon +++ b/toolchain/parser/testdata/function/definition/fail_identifier_in_statements.carbon @@ -5,14 +5,14 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 6, kind: 'FunctionDefinition', text: '}', has_error: yes, subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'bar'}]}, -// CHECK:STDOUT: {node_index: 7, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'bar'}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/function/definition/with_params.carbon b/toolchain/parser/testdata/function/definition/with_params.carbon index 4b422c1fb09a..ac9b7ea269bb 100644 --- a/toolchain/parser/testdata/function/definition/with_params.carbon +++ b/toolchain/parser/testdata/function/definition/with_params.carbon @@ -5,29 +5,29 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 21, kind: 'FunctionDefinition', text: '}', subtree_size: 22, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ParameterList', text: '(', subtree_size: 9, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'DeclaredName', text: 'bar'}, -// CHECK:STDOUT: {node_index: 3, kind: 'Literal', text: 'i64'}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'ParameterListComma', text: ','}, -// CHECK:STDOUT: {node_index: 8, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'DeclaredName', text: 'baz'}, -// CHECK:STDOUT: {node_index: 7, kind: 'Literal', text: 'i64'}]}, -// CHECK:STDOUT: {node_index: 9, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 20, kind: 'ExpressionStatement', text: ';', subtree_size: 9, children: [ -// CHECK:STDOUT: {node_index: 19, kind: 'CallExpression', text: '(', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'NameReference', text: 'foo'}, -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'baz'}, -// CHECK:STDOUT: {node_index: 14, kind: 'CallExpressionComma', text: ','}, -// CHECK:STDOUT: {node_index: 17, kind: 'InfixOperator', text: '+', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 15, kind: 'NameReference', text: 'bar'}, -// CHECK:STDOUT: {node_index: 16, kind: 'NameReference', text: 'baz'}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'CallExpressionEnd', text: ')'}]}]}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'bar'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i64'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ParameterListComma', text: ','}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'baz'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i64'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'foo'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'baz'}, +// CHECK:STDOUT: {kind: 'CallExpressionComma', text: ','}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'bar'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'baz'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '+', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo(bar: i64, baz: i64) { diff --git a/toolchain/parser/testdata/function/definition/with_return_type.carbon b/toolchain/parser/testdata/function/definition/with_return_type.carbon index 3c2455401ff5..4f6207afd434 100644 --- a/toolchain/parser/testdata/function/definition/with_return_type.carbon +++ b/toolchain/parser/testdata/function/definition/with_return_type.carbon @@ -5,18 +5,18 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 10, kind: 'FunctionDefinition', text: '}', subtree_size: 11, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'foo'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 5, kind: 'ReturnType', text: '->', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'Literal', text: 'f64'}]}]}, -// CHECK:STDOUT: {node_index: 9, kind: 'ReturnStatement', text: 'return', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Literal', text: '42'}, -// CHECK:STDOUT: {node_index: 8, kind: 'StatementEnd', text: ';'}]}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'Literal', text: 'f64'}, +// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'Literal', text: '42'}, +// CHECK:STDOUT: {kind: 'StatementEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'ReturnStatement', text: 'return', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn foo() -> f64 { diff --git a/toolchain/parser/testdata/if/basic.carbon b/toolchain/parser/testdata/if/basic.carbon index 63968f849d4c..ac520a07640e 100644 --- a/toolchain/parser/testdata/if/basic.carbon +++ b/toolchain/parser/testdata/if/basic.carbon @@ -5,33 +5,33 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 25, kind: 'FunctionDefinition', text: '}', subtree_size: 26, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 24, kind: 'IfStatement', text: 'if', subtree_size: 20, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 23, kind: 'CodeBlock', text: '}', subtree_size: 16, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 22, kind: 'IfStatement', text: 'if', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'NameReference', text: 'b'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 21, kind: 'CodeBlock', text: '}', subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 20, kind: 'IfStatement', text: 'if', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 15, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'c'}, -// CHECK:STDOUT: {node_index: 14, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 18, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'NameReference', text: 'd'}]}]}]}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 26, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 26}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/if/else.carbon b/toolchain/parser/testdata/if/else.carbon index 6afed7346cd8..ebd6c8f8a22c 100644 --- a/toolchain/parser/testdata/if/else.carbon +++ b/toolchain/parser/testdata/if/else.carbon @@ -5,59 +5,59 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 51, kind: 'FunctionDefinition', text: '}', subtree_size: 52, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 28, kind: 'IfStatement', text: 'if', subtree_size: 24, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'CodeBlock', text: '}', subtree_size: 15, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 21, kind: 'IfStatement', text: 'if', subtree_size: 13, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'NameReference', text: 'b'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 15, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 14, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'c'}]}]}, -// CHECK:STDOUT: {node_index: 16, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 20, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 19, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 18, kind: 'NameReference', text: 'd'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 23, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 27, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 24, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 26, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 25, kind: 'NameReference', text: 'e'}]}]}]}, -// CHECK:STDOUT: {node_index: 50, kind: 'IfStatement', text: 'if', subtree_size: 22, children: [ -// CHECK:STDOUT: {node_index: 31, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 29, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 30, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 35, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 32, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 34, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 33, kind: 'NameReference', text: 'f'}]}]}, -// CHECK:STDOUT: {node_index: 36, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 49, kind: 'IfStatement', text: 'if', subtree_size: 13, children: [ -// CHECK:STDOUT: {node_index: 39, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 37, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 38, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 43, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 40, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 42, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 41, kind: 'NameReference', text: 'g'}]}]}, -// CHECK:STDOUT: {node_index: 44, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 48, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 45, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 47, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 46, kind: 'NameReference', text: 'h'}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 52, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'e'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'f'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'g'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'h'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 52}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/if/fail_else_unbraced.carbon b/toolchain/parser/testdata/if/fail_else_unbraced.carbon index fe3cbbc2a206..44e77a798731 100644 --- a/toolchain/parser/testdata/if/fail_else_unbraced.carbon +++ b/toolchain/parser/testdata/if/fail_else_unbraced.carbon @@ -5,59 +5,59 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 51, kind: 'FunctionDefinition', text: '}', subtree_size: 52, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 28, kind: 'IfStatement', text: 'if', subtree_size: 24, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'CodeBlock', text: 'if', has_error: yes, subtree_size: 15, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'CodeBlockStart', text: 'if', has_error: yes}, -// CHECK:STDOUT: {node_index: 21, kind: 'IfStatement', text: 'if', subtree_size: 13, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'NameReference', text: 'b'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 15, kind: 'CodeBlock', text: 'c', has_error: yes, subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'CodeBlockStart', text: 'c', has_error: yes}, -// CHECK:STDOUT: {node_index: 14, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'c'}]}]}, -// CHECK:STDOUT: {node_index: 16, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 20, kind: 'CodeBlock', text: 'd', has_error: yes, subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'CodeBlockStart', text: 'd', has_error: yes}, -// CHECK:STDOUT: {node_index: 19, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 18, kind: 'NameReference', text: 'd'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 23, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 27, kind: 'CodeBlock', text: 'e', has_error: yes, subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 24, kind: 'CodeBlockStart', text: 'e', has_error: yes}, -// CHECK:STDOUT: {node_index: 26, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 25, kind: 'NameReference', text: 'e'}]}]}]}, -// CHECK:STDOUT: {node_index: 50, kind: 'IfStatement', text: 'if', subtree_size: 22, children: [ -// CHECK:STDOUT: {node_index: 31, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 29, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 30, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 35, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 32, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 34, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 33, kind: 'NameReference', text: 'f'}]}]}, -// CHECK:STDOUT: {node_index: 36, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 49, kind: 'IfStatement', text: 'if', subtree_size: 13, children: [ -// CHECK:STDOUT: {node_index: 39, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 37, kind: 'NameReference', text: 'x'}, -// CHECK:STDOUT: {node_index: 38, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 43, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 40, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 42, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 41, kind: 'NameReference', text: 'g'}]}]}, -// CHECK:STDOUT: {node_index: 44, kind: 'IfStatementElse', text: 'else'}, -// CHECK:STDOUT: {node_index: 48, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 45, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 47, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 46, kind: 'NameReference', text: 'h'}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 52, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'if', has_error: yes}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'c', has_error: yes}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'c', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'd', has_error: yes}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'd', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'if', has_error: yes, subtree_size: 15}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'e', has_error: yes}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'e'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'e', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'f'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'x'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'g'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatementElse', text: 'else'}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'h'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 52}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/if/fail_errors.carbon b/toolchain/parser/testdata/if/fail_errors.carbon index b9b699c7e560..06fb8aa2d241 100644 --- a/toolchain/parser/testdata/if/fail_errors.carbon +++ b/toolchain/parser/testdata/if/fail_errors.carbon @@ -5,34 +5,34 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 26, kind: 'FunctionDefinition', text: '}', subtree_size: 27, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'IfStatement', text: 'if', has_error: yes, subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 7, kind: 'CodeBlock', text: '}', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'CodeBlockStart', text: '{'}]}]}, -// CHECK:STDOUT: {node_index: 13, kind: 'IfStatement', text: 'if', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 10, kind: 'Condition', text: '(', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'CodeBlock', text: '}', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'CodeBlockStart', text: '{'}]}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'IfStatement', text: 'if', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'Condition', text: '(', has_error: yes, subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'NameReference', text: 'b'}, -// CHECK:STDOUT: {node_index: 15, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'CodeBlock', text: '}', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'CodeBlockStart', text: '{'}]}]}, -// CHECK:STDOUT: {node_index: 25, kind: 'IfStatement', text: 'if', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 22, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 20, kind: 'NameReference', text: 'd'}, -// CHECK:STDOUT: {node_index: 21, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 24, kind: 'CodeBlock', text: '}', has_error: yes, subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 23, kind: 'CodeBlockStart', text: '}', has_error: yes}]}]}]}, -// CHECK:STDOUT: {node_index: 27, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '}', has_error: yes}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/if/fail_unbraced.carbon b/toolchain/parser/testdata/if/fail_unbraced.carbon index f0879b9c88ed..4fc1efb96cd2 100644 --- a/toolchain/parser/testdata/if/fail_unbraced.carbon +++ b/toolchain/parser/testdata/if/fail_unbraced.carbon @@ -6,33 +6,33 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 25, kind: 'FunctionDefinition', text: '}', subtree_size: 26, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 24, kind: 'IfStatement', text: 'if', subtree_size: 20, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 23, kind: 'CodeBlock', text: 'if', has_error: yes, subtree_size: 16, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'CodeBlockStart', text: 'if', has_error: yes}, -// CHECK:STDOUT: {node_index: 22, kind: 'IfStatement', text: 'if', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'NameReference', text: 'b'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 21, kind: 'CodeBlock', text: 'if', has_error: yes, subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'CodeBlockStart', text: 'if', has_error: yes}, -// CHECK:STDOUT: {node_index: 20, kind: 'IfStatement', text: 'if', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 15, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'c'}, -// CHECK:STDOUT: {node_index: 14, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'CodeBlock', text: 'd', has_error: yes, subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'CodeBlockStart', text: 'd', has_error: yes}, -// CHECK:STDOUT: {node_index: 18, kind: 'ExpressionStatement', text: ';', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'NameReference', text: 'd'}]}]}]}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 26, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'if', has_error: yes}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'if', has_error: yes}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'd', has_error: yes}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'd', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'if', has_error: yes, subtree_size: 10}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'if', has_error: yes, subtree_size: 16}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 26}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/operators/associative.carbon b/toolchain/parser/testdata/operators/associative.carbon index a181d986388d..82348de6fee2 100644 --- a/toolchain/parser/testdata/operators/associative.carbon +++ b/toolchain/parser/testdata/operators/associative.carbon @@ -5,19 +5,19 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 11, kind: 'FunctionDefinition', text: '}', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'ExpressionStatement', text: ';', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'InfixOperator', text: 'and', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'InfixOperator', text: 'and', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'NameReference', text: 'b'}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'NameReference', text: 'c'}]}]}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/operators/fail_missing_precedence_and_or.carbon b/toolchain/parser/testdata/operators/fail_missing_precedence_and_or.carbon index d0b13988719b..3147ac7470cc 100644 --- a/toolchain/parser/testdata/operators/fail_missing_precedence_and_or.carbon +++ b/toolchain/parser/testdata/operators/fail_missing_precedence_and_or.carbon @@ -5,19 +5,19 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 11, kind: 'FunctionDefinition', text: '}', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'ExpressionStatement', text: ';', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'InfixOperator', text: 'or', has_error: yes, subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'InfixOperator', text: 'and', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'NameReference', text: 'b'}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'NameReference', text: 'c'}]}]}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'or', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/operators/fail_missing_precedence_or_and.carbon b/toolchain/parser/testdata/operators/fail_missing_precedence_or_and.carbon index 94c1abdd78c5..ed407c9469d9 100644 --- a/toolchain/parser/testdata/operators/fail_missing_precedence_or_and.carbon +++ b/toolchain/parser/testdata/operators/fail_missing_precedence_or_and.carbon @@ -5,19 +5,19 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 11, kind: 'FunctionDefinition', text: '}', subtree_size: 12, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'ExpressionStatement', text: ';', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'InfixOperator', text: 'and', has_error: yes, subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'InfixOperator', text: 'or', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'NameReference', text: 'b'}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'NameReference', text: 'c'}]}]}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'or', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/operators/fail_variety.carbon b/toolchain/parser/testdata/operators/fail_variety.carbon index c79fc637c95c..eadf802c0745 100644 --- a/toolchain/parser/testdata/operators/fail_variety.carbon +++ b/toolchain/parser/testdata/operators/fail_variety.carbon @@ -5,34 +5,34 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 26, kind: 'FunctionDefinition', text: '}', subtree_size: 27, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 25, kind: 'ExpressionStatement', text: ';', subtree_size: 21, children: [ -// CHECK:STDOUT: {node_index: 24, kind: 'InfixOperator', text: '=', subtree_size: 20, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 23, kind: 'InfixOperator', text: '=', subtree_size: 18, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'InfixOperator', text: '+', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'InfixOperator', text: '*', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 7, kind: 'NameReference', text: 'b'}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'InfixOperator', text: '*', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'NameReference', text: 'c'}, -// CHECK:STDOUT: {node_index: 10, kind: 'NameReference', text: 'd'}]}]}, -// CHECK:STDOUT: {node_index: 22, kind: 'InfixOperator', text: '-', has_error: yes, subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 19, kind: 'InfixOperator', text: '&', has_error: yes, subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'InfixOperator', text: '<<', has_error: yes, subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 15, kind: 'InfixOperator', text: '*', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'NameReference', text: 'd'}, -// CHECK:STDOUT: {node_index: 14, kind: 'NameReference', text: 'd'}]}, -// CHECK:STDOUT: {node_index: 16, kind: 'NameReference', text: 'e'}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'NameReference', text: 'f'}]}, -// CHECK:STDOUT: {node_index: 21, kind: 'PrefixOperator', text: 'not', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 20, kind: 'NameReference', text: 'g'}]}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 27, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '+', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'd'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'e'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '<<', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'f'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '&', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'g'}, +// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'not', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '-', has_error: yes, subtree_size: 10}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/operators/fixity.carbon b/toolchain/parser/testdata/operators/fixity.carbon index 68011f14b2a5..7e227c900681 100644 --- a/toolchain/parser/testdata/operators/fixity.carbon +++ b/toolchain/parser/testdata/operators/fixity.carbon @@ -5,72 +5,72 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 64, kind: 'FunctionDefinition', text: '}', subtree_size: 65, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 13, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 11, kind: 'ParameterList', text: '(', subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'PatternBinding', text: ':', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'DeclaredName', text: 'p'}, -// CHECK:STDOUT: {node_index: 4, kind: 'PostfixOperator', text: '*', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 3, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 6, kind: 'ParameterListComma', text: ','}, -// CHECK:STDOUT: {node_index: 9, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'DeclaredName', text: 'n'}, -// CHECK:STDOUT: {node_index: 8, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 20, kind: 'VariableDeclaration', text: 'var', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 16, kind: 'PatternBinding', text: ':', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'DeclaredName', text: 'q'}, -// CHECK:STDOUT: {node_index: 15, kind: 'PostfixOperator', text: '*', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 14, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 18, kind: 'VariableInitializer', text: '=', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'NameReference', text: 'p'}]}, -// CHECK:STDOUT: {node_index: 19, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 28, kind: 'VariableDeclaration', text: 'var', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 23, kind: 'PatternBinding', text: ':', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 21, kind: 'DeclaredName', text: 't'}, -// CHECK:STDOUT: {node_index: 22, kind: 'NameReference', text: 'Type'}]}, -// CHECK:STDOUT: {node_index: 26, kind: 'VariableInitializer', text: '=', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 25, kind: 'PostfixOperator', text: '*', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 24, kind: 'Literal', text: 'i32'}]}]}, -// CHECK:STDOUT: {node_index: 27, kind: 'DeclarationEnd', text: ';'}]}, -// CHECK:STDOUT: {node_index: 34, kind: 'ExpressionStatement', text: ';', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 33, kind: 'InfixOperator', text: '=', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 29, kind: 'NameReference', text: 't'}, -// CHECK:STDOUT: {node_index: 32, kind: 'PostfixOperator', text: '*', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 31, kind: 'PostfixOperator', text: '*', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 30, kind: 'NameReference', text: 't'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 40, kind: 'ExpressionStatement', text: ';', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 39, kind: 'InfixOperator', text: '=', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 35, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 38, kind: 'InfixOperator', text: '*', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 36, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 37, kind: 'NameReference', text: 'n'}]}]}]}, -// CHECK:STDOUT: {node_index: 47, kind: 'ExpressionStatement', text: ';', subtree_size: 7, children: [ -// CHECK:STDOUT: {node_index: 46, kind: 'InfixOperator', text: '=', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 41, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 45, kind: 'InfixOperator', text: '*', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 42, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 44, kind: 'PrefixOperator', text: '*', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 43, kind: 'NameReference', text: 'p'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 53, kind: 'ExpressionStatement', text: ';', subtree_size: 6, children: [ -// CHECK:STDOUT: {node_index: 52, kind: 'InfixOperator', text: '=', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 48, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 51, kind: 'InfixOperator', text: '*', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 49, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 50, kind: 'NameReference', text: 'n'}]}]}]}, -// CHECK:STDOUT: {node_index: 63, kind: 'ExpressionStatement', text: ';', subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 62, kind: 'CallExpression', text: '(', subtree_size: 9, children: [ -// CHECK:STDOUT: {node_index: 54, kind: 'NameReference', text: 'G'}, -// CHECK:STDOUT: {node_index: 56, kind: 'PostfixOperator', text: '*', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 55, kind: 'Literal', text: 'i32'}]}, -// CHECK:STDOUT: {node_index: 57, kind: 'CallExpressionComma', text: ','}, -// CHECK:STDOUT: {node_index: 60, kind: 'InfixOperator', text: '*', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 58, kind: 'NameReference', text: 'n'}, -// CHECK:STDOUT: {node_index: 59, kind: 'NameReference', text: 'n'}]}, -// CHECK:STDOUT: {node_index: 61, kind: 'CallExpressionEnd', text: ')'}]}]}]}, -// CHECK:STDOUT: {node_index: 65, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'p'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ParameterListComma', text: ','}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'n'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'q'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'p'}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 't'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'Type'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '=', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'DeclarationEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: 'var', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'NameReference', text: 't'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 't'}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'p'}, +// CHECK:STDOUT: {kind: 'PrefixOperator', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'G'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CallExpressionComma', text: ','}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CallExpressionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'CallExpression', text: '(', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 65}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F(p: i32*, n: i32) { diff --git a/toolchain/parser/testdata/operators/missing_precedence_not.carbon b/toolchain/parser/testdata/operators/missing_precedence_not.carbon index 80ff26e23b77..88f97e01cceb 100644 --- a/toolchain/parser/testdata/operators/missing_precedence_not.carbon +++ b/toolchain/parser/testdata/operators/missing_precedence_not.carbon @@ -5,22 +5,22 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 14, kind: 'FunctionDefinition', text: '}', subtree_size: 15, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 13, kind: 'ExpressionStatement', text: ';', subtree_size: 9, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'InfixOperator', text: 'and', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'InfixOperator', text: 'and', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'PrefixOperator', text: 'not', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'PrefixOperator', text: 'not', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'NameReference', text: 'b'}]}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'PrefixOperator', text: 'not', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 10, kind: 'NameReference', text: 'c'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 15, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'not', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'not', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'not', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/operators/postfix_unary.carbon b/toolchain/parser/testdata/operators/postfix_unary.carbon index 305503b88089..5899808cd2b1 100644 --- a/toolchain/parser/testdata/operators/postfix_unary.carbon +++ b/toolchain/parser/testdata/operators/postfix_unary.carbon @@ -5,17 +5,17 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 9, kind: 'FunctionDefinition', text: '}', subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'ExpressionStatement', text: ';', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'PostfixOperator', text: '++', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'PostfixOperator', text: '++', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'n'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '++', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PostfixOperator', text: '++', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/operators/prefix_unary.carbon b/toolchain/parser/testdata/operators/prefix_unary.carbon index e72d7f51a597..8bf249ca010d 100644 --- a/toolchain/parser/testdata/operators/prefix_unary.carbon +++ b/toolchain/parser/testdata/operators/prefix_unary.carbon @@ -5,17 +5,17 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 9, kind: 'FunctionDefinition', text: '}', subtree_size: 10, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 8, kind: 'ExpressionStatement', text: ';', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'PrefixOperator', text: '++', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 6, kind: 'PrefixOperator', text: '++', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'n'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 10, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'n'}, +// CHECK:STDOUT: {kind: 'PrefixOperator', text: '++', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PrefixOperator', text: '++', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ExpressionStatement', text: ';', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/while/basic.carbon b/toolchain/parser/testdata/while/basic.carbon index de0a46f7f05d..7b5b0d349c07 100644 --- a/toolchain/parser/testdata/while/basic.carbon +++ b/toolchain/parser/testdata/while/basic.carbon @@ -5,35 +5,35 @@ // AUTOUPDATE // RUN: %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 27, kind: 'FunctionDefinition', text: '}', subtree_size: 28, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 26, kind: 'WhileStatement', text: 'while', subtree_size: 22, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 25, kind: 'CodeBlock', text: '}', subtree_size: 18, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 16, kind: 'IfStatement', text: 'if', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 11, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'NameReference', text: 'b'}, -// CHECK:STDOUT: {node_index: 10, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 15, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 12, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 14, kind: 'BreakStatement', text: 'break', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 13, kind: 'StatementEnd', text: ';'}]}]}]}, -// CHECK:STDOUT: {node_index: 24, kind: 'IfStatement', text: 'if', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 19, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 17, kind: 'NameReference', text: 'c'}, -// CHECK:STDOUT: {node_index: 18, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 23, kind: 'CodeBlock', text: '}', subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 20, kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {node_index: 22, kind: 'ContinueStatement', text: 'continue', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 21, kind: 'StatementEnd', text: ';'}]}]}]}]}]}]}, -// CHECK:STDOUT: {node_index: 28, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'b'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'StatementEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'BreakStatement', text: 'break', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'c'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'StatementEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'ContinueStatement', text: 'continue', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'IfStatement', text: 'if', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'WhileStatement', text: 'while', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 28}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() { diff --git a/toolchain/parser/testdata/while/fail_unbraced.carbon b/toolchain/parser/testdata/while/fail_unbraced.carbon index a5db56bd80b5..cf8451883f58 100644 --- a/toolchain/parser/testdata/while/fail_unbraced.carbon +++ b/toolchain/parser/testdata/while/fail_unbraced.carbon @@ -6,21 +6,21 @@ // AUTOUPDATE // RUN: %{not} %{carbon-run-parser} // CHECK:STDOUT: [ -// CHECK:STDOUT: {node_index: 13, kind: 'FunctionDefinition', text: '}', subtree_size: 14, children: [ -// CHECK:STDOUT: {node_index: 4, kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5, children: [ -// CHECK:STDOUT: {node_index: 0, kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {node_index: 1, kind: 'DeclaredName', text: 'F'}, -// CHECK:STDOUT: {node_index: 3, kind: 'ParameterList', text: '(', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 2, kind: 'ParameterListEnd', text: ')'}]}]}, -// CHECK:STDOUT: {node_index: 12, kind: 'WhileStatement', text: 'while', subtree_size: 8, children: [ -// CHECK:STDOUT: {node_index: 7, kind: 'Condition', text: '(', subtree_size: 3, children: [ -// CHECK:STDOUT: {node_index: 5, kind: 'NameReference', text: 'a'}, -// CHECK:STDOUT: {node_index: 6, kind: 'ConditionEnd', text: ')'}]}, -// CHECK:STDOUT: {node_index: 11, kind: 'CodeBlock', text: 'break', has_error: yes, subtree_size: 4, children: [ -// CHECK:STDOUT: {node_index: 8, kind: 'CodeBlockStart', text: 'break', has_error: yes}, -// CHECK:STDOUT: {node_index: 10, kind: 'BreakStatement', text: 'break', subtree_size: 2, children: [ -// CHECK:STDOUT: {node_index: 9, kind: 'StatementEnd', text: ';'}]}]}]}]}, -// CHECK:STDOUT: {node_index: 14, kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'F'}, +// CHECK:STDOUT: {kind: 'ParameterListEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'ParameterList', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NameReference', text: 'a'}, +// CHECK:STDOUT: {kind: 'ConditionEnd', text: ')'}, +// CHECK:STDOUT: {kind: 'Condition', text: '(', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'break', has_error: yes}, +// CHECK:STDOUT: {kind: 'StatementEnd', text: ';'}, +// CHECK:STDOUT: {kind: 'BreakStatement', text: 'break', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: 'break', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'WhileStatement', text: 'while', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] fn F() {