/
githubmirror
/
carbon-lang
Обзор
Документация
Войти
/
githubmirror
/
carbon-lang
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
trunk
toolchain/check/node_stack.cpp
59 строк
2 KB
Geoff Romer
Use lines instead of statements for readability-function-size clang-tidy (#6594)
14 янв 2026, 22:32
Не верифицирован
14 янв 2026, 22:32
9106f95
Код
Авторство
О чём код?
// 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/check/node_stack.h" #include "llvm/ADT/STLExtras.h" namespace Carbon::Check { auto NodeStack::PrintForStackDump(int indent, llvm::raw_ostream& output) const -> void { auto print_id = [&]<Id::Kind Kind>(Id id) { if constexpr (Kind == Id::Kind::None) { output << "no value"; } else if constexpr (Kind == Id::Kind::Invalid) { CARBON_FATAL("Should not be in node stack"); } else { output << id.As<Kind>(); } }; output.indent(indent); output << "NodeStack:\n"; for (auto [i, entry] : llvm::enumerate(stack_)) { auto node_kind = parse_tree_->node_kind(entry.node_id); output.indent(indent + 2); output << i << ". " << node_kind << ": "; switch (node_kind) { #define CARBON_PARSE_NODE_KIND(Kind) \ case Parse::NodeKind::Kind: \ print_id.operator()<NodeKindToIdKind(Parse::NodeKind::Kind)>(entry.id); \ break; #include "toolchain/parse/node_kind.def" } output << "\n"; } } auto NodeStack::CheckIdKindTable() -> void { #define CARBON_PARSE_NODE_KIND(Name) \ { \ constexpr auto from_category = \ NodeCategoryToIdKind(Parse::Name::Kind.category(), true); \ constexpr auto from_kind = \ NodeKindToIdKindSpecialCases(Parse::Name::Kind); \ static_assert(from_category || from_kind, \ "Id::Kind not specified for " #Name \ "; add to NodeStack::NodeKindToIdKindSpecialCases or " \ "specify a node category in typed_nodes.h"); \ static_assert(!from_category || !from_kind, \ "Special case Id::Kind specified for " #Name \ ", but node category has an Id::Kind; remove from " \ "NodeStack::NodeKindToIdKindSpecialCases"); \ } #include "toolchain/parse/node_kind.def" } } // namespace Carbon::Check