Author: teemperor
Date: Fri Jul 19 03:23:22 2019
New Revision: 366561

URL: http://llvm.org/viewvc/llvm-project?rev=366561&view=rev
Log:
[lldb][NFC] Tablegenify target

Modified:
    lldb/trunk/source/Commands/CommandObjectTarget.cpp
    lldb/trunk/source/Commands/Options.td
    lldb/trunk/source/Commands/OptionsBase.td

Modified: lldb/trunk/source/Commands/CommandObjectTarget.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectTarget.cpp?rev=366561&r1=366560&r2=366561&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectTarget.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectTarget.cpp Fri Jul 19 03:23:22 2019
@@ -145,12 +145,9 @@ static constexpr OptionEnumValueElement
      "Load dependents, even if the target is not an executable."}};
 
 static constexpr OptionDefinition g_dependents_options[] = {
-    {LLDB_OPT_SET_1, false, "no-dependents", 'd',
-     OptionParser::eOptionalArgument, nullptr,
-     OptionEnumValues(g_dependents_enumaration), 0, eArgTypeValue,
-     "Whether or not to load dependents when creating a target. If the option "
-     "is not specified, the value is implicitly 'default'. If the option is "
-     "specified but without a value, the value is implicitly 'true'."}};
+#define LLDB_OPTIONS_target_dependents
+#include "CommandOptions.inc"
+};
 
 class OptionGroupDependents : public OptionGroup {
 public:
@@ -2455,16 +2452,8 @@ protected:
 
     llvm::ArrayRef<OptionDefinition> GetDefinitions() override {
       static constexpr OptionDefinition g_options[] = {
-          {LLDB_OPT_SET_ALL,
-           false,
-           "verbose",
-           'v',
-           OptionParser::eNoArgument,
-           nullptr,
-           {},
-           0,
-           eArgTypeNone,
-           "Enable verbose dump."},
+#define LLDB_OPTIONS_target_modules_dump
+#include "CommandOptions.inc"
       };
       return llvm::makeArrayRef(g_options);
     }
@@ -2970,23 +2959,8 @@ protected:
 // List images with associated information
 
 static constexpr OptionDefinition g_target_modules_list_options[] = {
-    // clang-format off
-  { LLDB_OPT_SET_1, false, "address",        'a', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeAddressOrExpression, 
"Display the image at this address." },
-  { LLDB_OPT_SET_1, false, "arch",           'A', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the architecture when listing images." },
-  { LLDB_OPT_SET_1, false, "triple",         't', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the triple when listing images." },
-  { LLDB_OPT_SET_1, false, "header",         'h', OptionParser::eNoArgument,   
    nullptr, {}, 0, eArgTypeNone,                "Display the image base 
address as a load address if debugging, a file address otherwise." },
-  { LLDB_OPT_SET_1, false, "offset",         'o', OptionParser::eNoArgument,   
    nullptr, {}, 0, eArgTypeNone,                "Display the image load 
address offset from the base file address (the slide amount)." },
-  { LLDB_OPT_SET_1, false, "uuid",           'u', OptionParser::eNoArgument,   
    nullptr, {}, 0, eArgTypeNone,                "Display the UUID when listing 
images." },
-  { LLDB_OPT_SET_1, false, "fullpath",       'f', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the fullpath to the image object file." },
-  { LLDB_OPT_SET_1, false, "directory",      'd', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the directory with optional width for the image object file." },
-  { LLDB_OPT_SET_1, false, "basename",       'b', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the basename with optional width for the image object file." },
-  { LLDB_OPT_SET_1, false, "symfile",        's', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the fullpath to the image symbol file with optional width." },
-  { LLDB_OPT_SET_1, false, "symfile-unique", 'S', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the symbol file with optional width only if it is different from the 
executable object file." },
-  { LLDB_OPT_SET_1, false, "mod-time",       'm', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the modification time with optional width of the module." },
-  { LLDB_OPT_SET_1, false, "ref-count",      'r', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth,               
"Display the reference count if the module is still in the shared module 
cache." },
-  { LLDB_OPT_SET_1, false, "pointer",        'p', 
OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeNone,                
"Display the module pointer." },
-  { LLDB_OPT_SET_1, false, "global",         'g', OptionParser::eNoArgument,   
    nullptr, {}, 0, eArgTypeNone,                "Display the modules from the 
global module list, not just the current target." }
-    // clang-format on
+#define LLDB_OPTIONS_target_modules_list
+#include "CommandOptions.inc"
 };
 
 class CommandObjectTargetModulesList : public CommandObjectParsed {
@@ -3334,10 +3308,8 @@ protected:
 // Lookup unwind information in images
 
 static constexpr OptionDefinition g_target_modules_show_unwind_options[] = {
-    // clang-format off
-  { LLDB_OPT_SET_1, false, "name",    'n', OptionParser::eRequiredArgument, 
nullptr, {}, 0, eArgTypeFunctionName,        "Show unwind instructions for a 
function or symbol name." },
-  { LLDB_OPT_SET_2, false, "address", 'a', OptionParser::eRequiredArgument, 
nullptr, {}, 0, eArgTypeAddressOrExpression, "Show unwind instructions for a 
function or symbol containing an address" }
-    // clang-format on
+#define LLDB_OPTIONS_target_modules_show_unwind
+#include "CommandOptions.inc"
 };
 
 class CommandObjectTargetModulesShowUnwind : public CommandObjectParsed {
@@ -3645,21 +3617,8 @@ protected:
 // Lookup information in images
 
 static constexpr OptionDefinition g_target_modules_lookup_options[] = {
-    // clang-format off
-  { LLDB_OPT_SET_1,                                  true,  "address",    'a', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeAddressOrExpression, 
"Lookup an address in one or more target modules." },
-  { LLDB_OPT_SET_1,                                  false, "offset",     'o', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeOffset,              
"When looking up an address subtract <offset> from any addresses before doing 
the lookup." },
-  /* FIXME: re-enable regex for types when the LookupTypeInModule actually 
uses the regex option: | LLDB_OPT_SET_6 */
-  { LLDB_OPT_SET_2 | LLDB_OPT_SET_4 | LLDB_OPT_SET_5, false, "regex",      
'r', OptionParser::eNoArgument,      nullptr, {}, 0, eArgTypeNone,              
  "The <name> argument for name lookups are regular expressions." },
-  { LLDB_OPT_SET_2,                                  true,  "symbol",     's', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeSymbol,              
"Lookup a symbol by name in the symbol tables in one or more target modules." },
-  { LLDB_OPT_SET_3,                                  true,  "file",       'f', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeFilename,            
"Lookup a file by fullpath or basename in one or more target modules." },
-  { LLDB_OPT_SET_3,                                  false, "line",       'l', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeLineNum,             
"Lookup a line number in a file (must be used in conjunction with --file)." },
-  { LLDB_OPT_SET_FROM_TO(3,5),                       false, "no-inlines", 'i', 
OptionParser::eNoArgument,       nullptr, {}, 0, eArgTypeNone,                
"Ignore inline entries (must be used in conjunction with --file or 
--function)." },
-  { LLDB_OPT_SET_4,                                  true,  "function",   'F', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeFunctionName,        
"Lookup a function by name in the debug symbols in one or more target modules." 
},
-  { LLDB_OPT_SET_5,                                  true,  "name",       'n', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeFunctionOrSymbol,    
"Lookup a function or symbol by name in one or more target modules." },
-  { LLDB_OPT_SET_6,                                  true,  "type",       't', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeName,                
"Lookup a type by name in the debug symbols in one or more target modules." },
-  { LLDB_OPT_SET_ALL,                                false, "verbose",    'v', 
OptionParser::eNoArgument,       nullptr, {}, 0, eArgTypeNone,                
"Enable verbose lookup information." },
-  { LLDB_OPT_SET_ALL,                                false, "all",        'A', 
OptionParser::eNoArgument,       nullptr, {}, 0, eArgTypeNone,                
"Print all matches, not just the best match, if a best match is available." },
-    // clang-format on
+#define LLDB_OPTIONS_target_modules_lookup
+#include "CommandOptions.inc"
 };
 
 class CommandObjectTargetModulesLookup : public CommandObjectParsed {
@@ -4513,20 +4472,8 @@ private:
 // CommandObjectTargetStopHookAdd
 
 static constexpr OptionDefinition g_target_stop_hook_add_options[] = {
-    // clang-format off
-  { LLDB_OPT_SET_ALL, false, "one-liner",    'o', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeOneLiner,              
                           "Add a command for the stop hook.  Can be specified 
more than once, and commands will be run in the order they appear." },
-  { LLDB_OPT_SET_ALL, false, "shlib",        's', 
OptionParser::eRequiredArgument, nullptr, {}, 
CommandCompletions::eModuleCompletion, eArgTypeShlibName,    "Set the module 
within which the stop-hook is to be run." },
-  { LLDB_OPT_SET_ALL, false, "thread-index", 'x', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeThreadIndex,           
                           "The stop hook is run only for the thread whose 
index matches this argument." },
-  { LLDB_OPT_SET_ALL, false, "thread-id",    't', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeThreadID,              
                           "The stop hook is run only for the thread whose TID 
matches this argument." },
-  { LLDB_OPT_SET_ALL, false, "thread-name",  'T', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeThreadName,            
                           "The stop hook is run only for the thread whose 
thread name matches this argument." },
-  { LLDB_OPT_SET_ALL, false, "queue-name",   'q', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeQueueName,             
                           "The stop hook is run only for threads in the queue 
whose name is given by this argument." },
-  { LLDB_OPT_SET_1,   false, "file",         'f', 
OptionParser::eRequiredArgument, nullptr, {}, 
CommandCompletions::eSourceFileCompletion, eArgTypeFilename, "Specify the 
source file within which the stop-hook is to be run." },
-  { LLDB_OPT_SET_1,   false, "start-line",   'l', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeLineNum,               
                           "Set the start of the line range for which the 
stop-hook is to be run." },
-  { LLDB_OPT_SET_1,   false, "end-line",     'e', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeLineNum,               
                           "Set the end of the line range for which the 
stop-hook is to be run." },
-  { LLDB_OPT_SET_2,   false, "classname",    'c', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeClassName,             
                           "Specify the class within which the stop-hook is to 
be run." },
-  { LLDB_OPT_SET_3,   false, "name",         'n', 
OptionParser::eRequiredArgument, nullptr, {}, 
CommandCompletions::eSymbolCompletion, eArgTypeFunctionName, "Set the function 
name within which the stop hook will be run." },
-  { LLDB_OPT_SET_ALL, false, "auto-continue",'G', 
OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeBoolean,     "The 
breakpoint will auto-continue after running its commands." },
-    // clang-format on
+#define LLDB_OPTIONS_target_stop_hook_add
+#include "CommandOptions.inc"
 };
 
 class CommandObjectTargetStopHookAdd : public CommandObjectParsed,

Modified: lldb/trunk/source/Commands/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/Options.td?rev=366561&r1=366560&r2=366561&view=diff
==============================================================================
--- lldb/trunk/source/Commands/Options.td (original)
+++ lldb/trunk/source/Commands/Options.td Fri Jul 19 03:23:22 2019
@@ -109,6 +109,150 @@ let Command = "script add" in {
     "LLDB event system.">;
 }
 
+let Command = "target dependents" in {
+  def dependents_no_dependents : Option<"no-dependents", "d">, Group<1>,
+    OptionalEnumArg<"Value", "OptionEnumValues(g_dependents_enumaration)">,
+    Desc<"Whether or not to load dependents when creating a target. If the "
+         "option is not specified, the value is implicitly 'default'. If the "
+         "option is specified but without a value, the value is implicitly "
+         "'true'.">;
+}
+
+let Command = "target modules dump" in {
+  def target_modules_dump_verbose : Option<"verbose", "v">,
+    Desc<"Enable verbose dump.">;
+}
+
+let Command = "target modules list" in {
+  def target_modules_list_address : Option<"address", "a">, Group<1>,
+    Arg<"AddressOrExpression">, Desc<"Display the image at this address.">;
+  def target_modules_list_arch : Option<"arch", "A">, Group<1>,
+    OptionalArg<"Width">, Desc<"Display the architecture when listing 
images.">;
+  def target_modules_list_triple : Option<"triple", "t">, Group<1>,
+    OptionalArg<"Width">, Desc<"Display the triple when listing images.">;
+  def target_modules_list_header : Option<"header", "h">, Group<1>,
+    Desc<"Display the image base address as a load address if debugging, a 
file"
+    " address otherwise.">;
+  def target_modules_list_offset : Option<"offset", "o">, Group<1>,
+    Desc<"Display the image load address offset from the base file address "
+    "(the slide amount).">;
+  def target_modules_list_uuid : Option<"uuid", "u">, Group<1>,
+    Desc<"Display the UUID when listing images.">;
+  def target_modules_list_fullpath : Option<"fullpath", "f">, Group<1>,
+    OptionalArg<"Width">,
+    Desc<"Display the fullpath to the image object file.">;
+  def target_modules_list_directory : Option<"directory", "d">, Group<1>,
+    OptionalArg<"Width">, Desc<"Display the directory with optional width for "
+    "the image object file.">;
+  def target_modules_list_basename : Option<"basename", "b">, Group<1>,
+    OptionalArg<"Width">, Desc<"Display the basename with optional width for "
+    "the image object file.">;
+  def target_modules_list_symfile : Option<"symfile", "s">, Group<1>,
+    OptionalArg<"Width">, Desc<"Display the fullpath to the image symbol file "
+    "with optional width.">;
+  def target_modules_list_symfile_unique : Option<"symfile-unique", "S">,
+    Group<1>, OptionalArg<"Width">, Desc<"Display the symbol file with 
optional"
+    " width only if it is different from the executable object file.">;
+  def target_modules_list_mod_time : Option<"mod-time", "m">, Group<1>,
+    OptionalArg<"Width">, Desc<"Display the modification time with optional "
+    "width of the module.">;
+  def target_modules_list_ref_count : Option<"ref-count", "r">, Group<1>,
+    OptionalArg<"Width">, Desc<"Display the reference count if the module is "
+    "still in the shared module cache.">;
+  def target_modules_list_pointer : Option<"pointer", "p">, Group<1>,
+    OptionalArg<"None">, Desc<"Display the module pointer.">;
+  def target_modules_list_global : Option<"global", "g">, Group<1>,
+    Desc<"Display the modules from the global module list, not just the "
+    "current target.">;
+}
+
+let Command = "target modules show unwind" in {
+  def target_modules_show_unwind_name : Option<"name", "n">, Group<1>,
+    Arg<"FunctionName">,
+    Desc<"Show unwind instructions for a function or symbol name.">;
+  def target_modules_show_unwind_address : Option<"address", "a">, Group<2>,
+    Arg<"AddressOrExpression">, Desc<"Show unwind instructions for a function "
+    "or symbol containing an address">;
+}
+
+let Command = "target modules lookup" in {
+  def target_modules_lookup_address : Option<"address", "a">, Group<1>,
+    Arg<"AddressOrExpression">, Required, Desc<"Lookup an address in one or "
+    "more target modules.">;
+  def target_modules_lookup_offset : Option<"offset", "o">, Group<1>,
+    Arg<"Offset">, Desc<"When looking up an address subtract <offset> from any 
"
+    "addresses before doing the lookup.">;
+  // FIXME: re-enable regex for types when the LookupTypeInModule actually uses
+  // the regex option by adding to group 6.
+  def target_modules_lookup_regex : Option<"regex", "r">, Groups<[2,4,5]>,
+    Desc<"The <name> argument for name lookups are regular expressions.">;
+  def target_modules_lookup_symbol : Option<"symbol", "s">, Group<2>,
+    Arg<"Symbol">, Required, Desc<"Lookup a symbol by name in the symbol 
tables"
+    " in one or more target modules.">;
+  def target_modules_lookup_file : Option<"file", "f">, Group<3>,
+    Arg<"Filename">, Required, Desc<"Lookup a file by fullpath or basename in "
+    "one or more target modules.">;
+  def target_modules_lookup_line : Option<"line", "l">, Group<3>,
+    Arg<"LineNum">, Desc<"Lookup a line number in a file (must be used in "
+    "conjunction with --file).">;
+  def target_modules_lookup_no_inlines : Option<"no-inlines", "i">,
+    GroupRange<3,5>,
+    Desc<"Ignore inline entries (must be used in conjunction with --file or "
+    "--function).">;
+  def target_modules_lookup_function : Option<"function", "F">, Group<4>,
+    Arg<"FunctionName">, Required, Desc<"Lookup a function by name in the 
debug"
+    " symbols in one or more target modules.">;
+  def target_modules_lookup_name : Option<"name", "n">, Group<5>,
+    Arg<"FunctionOrSymbol">, Required, Desc<"Lookup a function or symbol by "
+    "name in one or more target modules.">;
+  def target_modules_lookup_type : Option<"type", "t">, Group<6>, Arg<"Name">,
+    Required, Desc<"Lookup a type by name in the debug symbols in one or more "
+    "target modules.">;
+  def target_modules_lookup_verbose : Option<"verbose", "v">,
+    Desc<"Enable verbose lookup information.">;
+  def target_modules_lookup_all : Option<"all", "A">, Desc<"Print all matches, 
"
+    "not just the best match, if a best match is available.">;
+}
+
+let Command = "target stop hook add" in {
+  def target_stop_hook_add_one_liner : Option<"one-liner", "o">,
+    Arg<"OneLiner">, Desc<"Add a command for the stop hook.  Can be specified "
+    "more than once, and commands will be run in the order they appear.">;
+  def target_stop_hook_add_shlib : Option<"shlib", "s">, Arg<"ShlibName">,
+    Completion<"Module">,
+    Desc<"Set the module within which the stop-hook is to be run.">;
+  def target_stop_hook_add_thread_index : Option<"thread-index", "x">,
+    Arg<"ThreadIndex">, Desc<"The stop hook is run only for the thread whose "
+    "index matches this argument.">;
+  def target_stop_hook_add_thread_id : Option<"thread-id", "t">,
+    Arg<"ThreadID">, Desc<"The stop hook is run only for the thread whose TID "
+    "matches this argument.">;
+  def target_stop_hook_add_thread_name : Option<"thread-name", "T">,
+    Arg<"ThreadName">, Desc<"The stop hook is run only for the thread whose "
+    "thread name matches this argument.">;
+  def target_stop_hook_add_queue_name : Option<"queue-name", "q">,
+    Arg<"QueueName">, Desc<"The stop hook is run only for threads in the queue 
"
+    "whose name is given by this argument.">;
+  def target_stop_hook_add_file : Option<"file", "f">, Group<1>,
+    Arg<"Filename">, Desc<"Specify the source file within which the stop-hook "
+    "is to be run.">, Completion<"SourceFile">;
+  def target_stop_hook_add_start_line : Option<"start-line", "l">, Group<1>,
+    Arg<"LineNum">, Desc<"Set the start of the line range for which the "
+    "stop-hook is to be run.">;
+  def target_stop_hook_add_end_line : Option<"end-line", "e">, Group<1>,
+    Arg<"LineNum">, Desc<"Set the end of the line range for which the 
stop-hook"
+    " is to be run.">;
+  def target_stop_hook_add_classname : Option<"classname", "c">, Group<2>,
+    Arg<"ClassName">,
+    Desc<"Specify the class within which the stop-hook is to be run.">;
+  def target_stop_hook_add_name : Option<"name", "n">, Group<3>,
+    Arg<"FunctionName">, Desc<"Set the function name within which the stop 
hook"
+    " will be run.">, Completion<"Symbol">;
+  def target_stop_hook_add_auto_continue : Option<"auto-continue", "G">,
+    Arg<"Boolean">, Desc<"The breakpoint will auto-continue after running its"
+    " commands.">;
+}
+
 let Command = "thread backtrace" in {
   def thread_backtrace_count : Option<"count", "c">, Group<1>, Arg<"Count">,
   Desc<"How many frames to display (-1 for all)">;

Modified: lldb/trunk/source/Commands/OptionsBase.td
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/OptionsBase.td?rev=366561&r1=366560&r2=366561&view=diff
==============================================================================
--- lldb/trunk/source/Commands/OptionsBase.td (original)
+++ lldb/trunk/source/Commands/OptionsBase.td Fri Jul 19 03:23:22 2019
@@ -41,6 +41,7 @@
 //  - `OptionalArg`: Sets the argument type and marks it as optional.
 //  - `Arg`: Sets the argument type and marks it as required.
 //  - `EnumArg`: Sets the argument type to an enum and marks it as required.
+//  - `OptionalEnumArg`: Same as EnumArg but marks it as optional.
 // See argument_type field for more info.
 
////////////////////////////////////////////////////////////////////////////////
 // Field: validator
@@ -50,6 +51,7 @@
 // Field: enum_values
 // Default value: {} (No enum associated with this option)
 // Set by:
+//  - `OptionalEnumArg`:
 //  - `EnumArg`: Sets the argument type and assigns it a enum holding the valid
 //               values. The enum needs to be a variable in the including code.
 //               Marks the option as required (see option_has_arg).
@@ -82,12 +84,14 @@
 //           Example: def foo : Option<"foo", "f">, Arg<"Pid">;
 //                    Sets the argument type to eArgTypePid and marks option as
 //                    required (see option_has_arg).
+//  - `OptionalEnumArg`:
 //  - `EnumArg`: Sets the argument type and assigns it a enum holding the valid
 //               values. The enum needs to be a variable in the including code.
 //               Marks the option as required (see option_has_arg).
 //               Example: def foo : Option<"foo", "f">,
 //                          EnumArg<"SortOrder",
 //                          "OptionEnumValues(g_sort_option_enumeration)">;
+//               Use `OptionalEnumArg` for having an option enum argument.
 
////////////////////////////////////////////////////////////////////////////////
 // Field: usage_text
 // Default value: ""
@@ -150,6 +154,13 @@ class EnumArg<string type, string enum>
   string ArgEnum = enum;
 }
 
+// Gives the option an required argument.
+class OptionalEnumArg<string type, string enum> {
+  string ArgType = type;
+  string ArgEnum = enum;
+  bit OptionalArg = 1;
+}
+
 // Sets the available completions for the given option.
 class Completions<list<string> completions> {
   list<string> Completions = completions;


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to