From 773a82f99570ece85e34b91f4a10181b72782c24 Mon Sep 17 00:00:00 2001 From: Jon Ross-Perkins Date: Tue, 13 Dec 2022 14:32:37 -0800 Subject: [PATCH] Add support for empty declarations. (#2467) --- .../semantics_parse_tree_handler.cpp | 6 +++-- .../testdata/basics/empty_decl.carbon | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 toolchain/semantics/testdata/basics/empty_decl.carbon diff --git a/toolchain/semantics/semantics_parse_tree_handler.cpp b/toolchain/semantics/semantics_parse_tree_handler.cpp index ba8142b2e02a..fa8749f5bae6 100644 --- a/toolchain/semantics/semantics_parse_tree_handler.cpp +++ b/toolchain/semantics/semantics_parse_tree_handler.cpp @@ -221,8 +221,10 @@ auto SemanticsParseTreeHandler::HandleDesignatorExpression( } auto SemanticsParseTreeHandler::HandleEmptyDeclaration( - ParseTree::Node /*parse_node*/) -> void { - CARBON_FATAL() << "TODO"; + ParseTree::Node parse_node) -> void { + // Empty declarations have no actions associated, but we still balance the + // tree. + Push(parse_node); } auto SemanticsParseTreeHandler::HandleExpressionStatement( diff --git a/toolchain/semantics/testdata/basics/empty_decl.carbon b/toolchain/semantics/testdata/basics/empty_decl.carbon new file mode 100644 index 000000000000..392c8194518f --- /dev/null +++ b/toolchain/semantics/testdata/basics/empty_decl.carbon @@ -0,0 +1,23 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// AUTOUPDATE +// RUN: %{carbon-run-semantics} +// CHECK:STDOUT: cross_reference_irs.size == 2, +// CHECK:STDOUT: cross_references = { +// CHECK:STDOUT: node_xref0 = xref(ir0, block0, node0); +// CHECK:STDOUT: node_xref1 = xref(ir0, block0, node1); +// CHECK:STDOUT: node_xref2 = xref(ir0, block0, node2); +// CHECK:STDOUT: node_xref3 = xref(ir0, block0, node3); +// CHECK:STDOUT: }, +// CHECK:STDOUT: identifiers = { +// CHECK:STDOUT: }, +// CHECK:STDOUT: integer_literals = { +// CHECK:STDOUT: }, +// CHECK:STDOUT: node_blocks = { +// CHECK:STDOUT: block0 = { +// CHECK:STDOUT: }, +// CHECK:STDOUT: } + +;