diff options
-rw-r--r-- | lldb/source/Core/Debugger.cpp | 22 | ||||
-rw-r--r-- | lldb/source/Target/Target.cpp | 7 |
2 files changed, 28 insertions, 1 deletions
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index 494b762e872..2b8e822c4a2 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -1806,6 +1806,28 @@ Debugger::RunREPL (LanguageType language, const char *repl_options) Error err; FileSpec repl_executable; + if (language == eLanguageTypeUnknown) + { + std::set<LanguageType> repl_languages; + + Language::GetLanguagesSupportingREPLs(repl_languages); + + if (repl_languages.size() == 1) + { + language = *repl_languages.begin(); + } + else if (repl_languages.size() == 0) + { + err.SetErrorStringWithFormat("LLDB isn't configured with support support for any REPLs."); + return err; + } + else + { + err.SetErrorStringWithFormat("Multiple possible REPL languages. Please specify a language."); + return err; + } + } + Target *const target = nullptr; // passing in an empty target means the REPL must create one REPLSP repl_sp(REPL::Create(err, language, this, target, repl_options)); diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index 23b82e5c36e..e9304af9686 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -226,10 +226,15 @@ Target::GetREPL (Error &err, lldb::LanguageType language, const char *repl_optio { language = *repl_languages.begin(); } + else if (repl_languages.size() == 0) + { + err.SetErrorStringWithFormat("LLDB isn't configured with support support for any REPLs."); + return REPLSP(); + } else { err.SetErrorStringWithFormat("Multiple possible REPL languages. Please specify a language."); - return REPLSP(); // must provide a language + return REPLSP(); } } |