Files
carbon-lang/toolchain/base/llvm_tools.cpp
T
Jon Ross-PerkinsandRichard Smith 973d721916 Some more edits to EnumBase and EnumMaskBase (#6054)
Adds a unit test, and some smaller edits:

- Remove the `=` when defining names, in order to change `}` placement
by clang-format on uses.
- context:
https://github.com/carbon-language/carbon-lang/pull/6053#discussion_r2343423178
- I believe with `EnumBase` that keeping the `=` had been a deliberate
choice, so this PR is intended to confirm that removing it is okay.
- Delete `EnumMaskBase::name`
- context:
https://github.com/carbon-language/carbon-lang/pull/6053#discussion_r2344233707
- We can't just do nothing because `EnumBase::name` uses indexing that's
incompatible with `EnumMaskBase`.
- Some small comment cleanups.
- Tests don't need to be in the `Carbon` namespace anymore, macros work
fine in other namespaces, but it's still the right namespace.
- Documentation on `EnumBase::name` seems to be referring to a prior
structure, wherein we had a macro defining the function instead of the
`Names` array.

---------

Co-authored-by: Richard Smith <richard@metafoo.co.uk>
2025-09-12 22:59:37 +00:00

42 lines
1.5 KiB
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/base/llvm_tools.h"
#include "common/command_line.h"
// NOLINTBEGIN(readability-identifier-naming): External library name.
#define CARBON_LLVM_MAIN_TOOL(Identifier, Name, BinName, MainFn) \
extern auto MainFn(int argc, char** argv, const llvm::ToolContext& context) \
-> int;
#include "toolchain/base/llvm_tools.def"
// NOLINTEND(readability-identifier-naming): External library name.
namespace Carbon {
CARBON_DEFINE_ENUM_CLASS_NAMES(LLVMTool) {
#define CARBON_LLVM_TOOL(Identifier, Name, BinName, MainFn) Name,
#include "toolchain/base/llvm_tools.def"
};
constexpr llvm::StringLiteral LLVMTool::BinNames[] = {
#define CARBON_LLVM_TOOL(Identifier, Name, BinName, MainFn) BinName,
#include "toolchain/base/llvm_tools.def"
};
constexpr LLVMTool::MainFnT* LLVMTool::MainFns[] = {
#define CARBON_LLVM_TOOL(Identifier, Name, BinName, MainFn) &::MainFn,
#include "toolchain/base/llvm_tools.def"
};
constexpr CommandLine::CommandInfo LLVMTool::SubcommandInfos[] = {
#define CARBON_LLVM_TOOL(Identifier, Name, BinName, MainFn) \
{.name = Name, \
.help = "Runs the LLVM " Name \
" command line tool with the provided arguments."},
#include "toolchain/base/llvm_tools.def"
};
} // namespace Carbon