Files
carbon-lang/toolchain/semantics/semantics_node_stack.cpp
T
Jon Ross-Perkins a1a7251716 Refactor NodeStack APIs to better handle the increase of distinct ID types. (#2864)
I'm looking at adding CallableId, so figured I'd do this API refactoring which should reduce code duplication. This increases the amount of cross-calls between APIs because it may not be an issue for performance after optimizations, and should simplify reading of the API.

Also note the prior static_asserts on layout were missing a couple types, which is why I'm moving them into Entry where it's going to be more obvious when something's added.
2023-06-01 16:39:02 -07:00

30 lines
922 B
C++

// 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
#include "toolchain/semantics/semantics_node_stack.h"
#include "toolchain/semantics/semantics_node.h"
namespace Carbon {
auto SemanticsNodeStack::PrintForStackDump(llvm::raw_ostream& output) const
-> void {
output << "SemanticsNodeStack:\n";
for (int i = 0; i < static_cast<int>(stack_.size()); ++i) {
const auto& entry = stack_[i];
auto parse_node_kind = parse_tree_->node_kind(entry.parse_node);
output << "\t" << i << ".\t" << parse_node_kind;
if (parse_node_kind == ParseNodeKind::PatternBinding) {
output << " -> " << entry.name_id;
} else {
if (entry.node_id.is_valid()) {
output << " -> " << entry.node_id;
}
}
output << "\n";
}
}
} // namespace Carbon