summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Core/Debugger.cpp22
-rw-r--r--lldb/source/Target/Target.cpp7
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();
}
}
OpenPOWER on IntegriCloud