From f0f3b1a1e5854df56fa847fc81911b9610ab7bbf Mon Sep 17 00:00:00 2001 From: Jon Meow Date: Tue, 12 Apr 2022 12:08:13 -0700 Subject: [PATCH] Refactor to reduce namespace specifiers (#1182) --- executable_semantics/fuzzing/fuzzverter.cpp | 49 +++++++++------------ 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/executable_semantics/fuzzing/fuzzverter.cpp b/executable_semantics/fuzzing/fuzzverter.cpp index 47575eda2a3a..1da75077e207 100644 --- a/executable_semantics/fuzzing/fuzzverter.cpp +++ b/executable_semantics/fuzzing/fuzzverter.cpp @@ -28,6 +28,8 @@ namespace Carbon { +namespace cl = llvm::cl; + // Reads a file and returns its contents as a string. static auto ReadFile(std::string_view file_name) -> ErrorOr { std::ifstream file(file_name, std::ios::in); @@ -89,15 +91,23 @@ static auto CarbonToTextProto(std::string_view input_file_name, // Command line options for defining input/output format. enum class ConversionMode { TextProtoToCarbon, CarbonToTextProto }; -// Returns string representation of an enum option. -static auto GetEnumString(llvm::cl::opt& o) -> llvm::StringRef { - // TODO: is there a better way? - return o.getParser().getOption(static_cast(ConversionMode(o))); -} +auto Main(int argc, char* argv[]) -> ErrorOr { + llvm::InitLLVM init_llvm(argc, argv); + + cl::opt mode( + "mode", cl::desc("Conversion mode"), + cl::values( + clEnumValN(ConversionMode::TextProtoToCarbon, "proto_to_carbon", + "Convert text proto to Carbon source"), + clEnumValN(ConversionMode::CarbonToTextProto, "carbon_to_proto", + "Convert Carbon source to text proto")), + cl::Required); + cl::opt input_file_name("input", cl::desc(""), + cl::init("/dev/stdin")); + cl::opt output_file_name("output", cl::desc(""), + cl::init("/dev/stdout")); + cl::ParseCommandLineOptions(argc, argv); -// Performs the conversion specified by `mode`. -auto Convert(const ConversionMode mode, std::string_view input_file_name, - std::string_view output_file_name) -> ErrorOr { switch (mode) { case ConversionMode::TextProtoToCarbon: return TextProtoToCarbon(input_file_name, output_file_name); @@ -109,27 +119,8 @@ auto Convert(const ConversionMode mode, std::string_view input_file_name, } // namespace Carbon auto main(int argc, char* argv[]) -> int { - llvm::InitLLVM init_llvm(argc, argv); - - llvm::cl::opt mode( - "mode", llvm::cl::desc("Conversion mode"), - llvm::cl::values( - clEnumValN(Carbon::ConversionMode::TextProtoToCarbon, - "proto_to_carbon", "Convert text proto to Carbon source"), - clEnumValN(Carbon::ConversionMode::CarbonToTextProto, - "carbon_to_proto", - "Convert Carbon source to text proto"))); - llvm::cl::opt input_file_name( - "input", llvm::cl::desc(""), llvm::cl::init("/dev/stdin")); - llvm::cl::opt output_file_name( - "output", llvm::cl::desc(""), llvm::cl::init("/dev/stdout")); - llvm::cl::ParseCommandLineOptions(argc, argv); - - if (const auto result = - Carbon::Convert(mode, input_file_name, output_file_name); - !result.ok()) { - llvm::errs() << GetEnumString(mode) - << " conversion failed: " << result.error().message() << "\n"; + if (const auto result = Carbon::Main(argc, argv); !result.ok()) { + llvm::errs() << result.error().message() << "\n"; return EXIT_FAILURE; } return EXIT_SUCCESS;