From b4a0b9fab4dcb7b808612b49604709c2aeadf9f8 Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Wed, 18 Jan 2023 16:42:20 +0000 Subject: [lldb][Language] List supported languages in expr error text Before: ``` (lldb) expr --language abc -- 1 + 1 error: unknown language type: 'abc' for expression ``` After: ``` (lldb) expr --language abc -- 1 + 1 error: unknown language type: 'abc' for expression. List of supported languages: c++ objective-c++ c++03 c++11 c++14 objc++ ``` We choose to only list the languages which `expr` will actually accept instead of all the language constants defined in `Language.cpp` since that's what the user will most likely need. Differential Revision: https://reviews.llvm.org/D142034 --- lldb/source/Commands/CommandObjectExpression.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'lldb/source/Commands/CommandObjectExpression.cpp') diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index 49d4976..9cce009f 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -42,10 +42,15 @@ Status CommandObjectExpression::CommandOptions::SetOptionValue( switch (short_option) { case 'l': language = Language::GetLanguageTypeFromString(option_arg); - if (language == eLanguageTypeUnknown) - error.SetErrorStringWithFormat( - "unknown language type: '%s' for expression", - option_arg.str().c_str()); + if (language == eLanguageTypeUnknown) { + StreamString sstr; + sstr.Printf("unknown language type: '%s' for expression. " + "List of supported languages:\n", + option_arg.str().c_str()); + + Language::PrintSupportedLanguagesForExpressions(sstr, " ", "\n"); + error.SetErrorString(sstr.GetString()); + } break; case 'a': { -- cgit v1.1