mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 11:02:04 +08:00
Summary: We currently have a bunch of code that is supposed to handle invalid command options, but all this code is unreachable because invalid options are already handled in `Options::Parse`. The only way we can reach this code is when we declare but then not implement an option (which will be made impossible with D65386, which is also when we can completely remove the `default` cases). This patch replaces all this code with `llvm_unreachable` to make clear this is dead code that can't be reached. Reviewers: JDevlieghere Reviewed By: JDevlieghere Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D66522 llvm-svn: 369625
88 lines
2.3 KiB
C++
88 lines
2.3 KiB
C++
//===-- CommandObjectHelp.h -------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_CommandObjectHelp_h_
|
|
#define liblldb_CommandObjectHelp_h_
|
|
|
|
#include "lldb/Host/OptionParser.h"
|
|
#include "lldb/Interpreter/CommandObject.h"
|
|
#include "lldb/Interpreter/Options.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
// CommandObjectHelp
|
|
|
|
class CommandObjectHelp : public CommandObjectParsed {
|
|
public:
|
|
CommandObjectHelp(CommandInterpreter &interpreter);
|
|
|
|
~CommandObjectHelp() override;
|
|
|
|
void HandleCompletion(CompletionRequest &request) override;
|
|
|
|
static void GenerateAdditionalHelpAvenuesMessage(
|
|
Stream *s, llvm::StringRef command, llvm::StringRef prefix,
|
|
llvm::StringRef subcommand, bool include_upropos = true,
|
|
bool include_type_lookup = true);
|
|
|
|
class CommandOptions : public Options {
|
|
public:
|
|
CommandOptions() : Options() {}
|
|
|
|
~CommandOptions() override {}
|
|
|
|
Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
|
|
ExecutionContext *execution_context) override {
|
|
Status error;
|
|
const int short_option = m_getopt_table[option_idx].val;
|
|
|
|
switch (short_option) {
|
|
case 'a':
|
|
m_show_aliases = false;
|
|
break;
|
|
case 'u':
|
|
m_show_user_defined = false;
|
|
break;
|
|
case 'h':
|
|
m_show_hidden = true;
|
|
break;
|
|
default:
|
|
llvm_unreachable("Unimplemented option");
|
|
}
|
|
|
|
return error;
|
|
}
|
|
|
|
void OptionParsingStarting(ExecutionContext *execution_context) override {
|
|
m_show_aliases = true;
|
|
m_show_user_defined = true;
|
|
m_show_hidden = false;
|
|
}
|
|
|
|
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
|
|
|
|
// Instance variables to hold the values for command options.
|
|
|
|
bool m_show_aliases;
|
|
bool m_show_user_defined;
|
|
bool m_show_hidden;
|
|
};
|
|
|
|
Options *GetOptions() override { return &m_options; }
|
|
|
|
protected:
|
|
bool DoExecute(Args &command, CommandReturnObject &result) override;
|
|
|
|
private:
|
|
CommandOptions m_options;
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_CommandObjectHelp_h_
|