diff options
author | Med Ismail Bennani <medismail.bennani@gmail.com> | 2020-09-03 10:05:51 +0200 |
---|---|---|
committer | Med Ismail Bennani <medismail.bennani@gmail.com> | 2020-09-03 10:57:56 +0200 |
commit | bf8f6e89c8d6fbac3e91ab37de7431d8e7c8aab4 (patch) | |
tree | a3847cfaefd8ac5ad4f2c5e4c7779e54fb282621 /lldb/source/Interpreter/CommandInterpreter.cpp | |
parent | 5b354d204d0952a6dd39e41fb41b51414bff5f0b (diff) | |
download | llvm-bf8f6e89c8d6fbac3e91ab37de7431d8e7c8aab4.zip llvm-bf8f6e89c8d6fbac3e91ab37de7431d8e7c8aab4.tar.gz llvm-bf8f6e89c8d6fbac3e91ab37de7431d8e7c8aab4.tar.bz2 |
[lldb/Interpreter] Fix language detection for the REPL InitFile
Previously, before loading the REPL language-specific init file, lldb
checked the selected target language in which case it returned an unknown
language type with the REPL target.
Instead, the patch calls `Language::GetLanguagesSupportingREPLs` and
look for the first element of that set. In case lldb was not configured
with a REPL language, then, it will just stop sourcing the REPL init
file and fallback to the original logic (continuing with the default
init file).
rdar://65836048
Differential Revision: https://reviews.llvm.org/D87076
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Diffstat (limited to 'lldb/source/Interpreter/CommandInterpreter.cpp')
-rw-r--r-- | lldb/source/Interpreter/CommandInterpreter.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp index 8c77227..1f67468 100644 --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -2091,9 +2091,12 @@ static void GetHomeInitFile(llvm::SmallVectorImpl<char> &init_file, FileSystem::Instance().Resolve(init_file); } -static void GetHomeREPLInitFile(llvm::SmallVectorImpl<char> &init_file, - LanguageType language) { - if (language == LanguageType::eLanguageTypeUnknown) +static void GetHomeREPLInitFile(llvm::SmallVectorImpl<char> &init_file) { + LanguageSet repl_languages = Language::GetLanguagesSupportingREPLs(); + LanguageType language = eLanguageTypeUnknown; + if (auto main_repl_language = repl_languages.GetSingularLanguage()) + language = *main_repl_language; + else return; std::string init_file_name = @@ -2191,13 +2194,8 @@ void CommandInterpreter::SourceInitFileHome(CommandReturnObject &result, llvm::SmallString<128> init_file; - if (is_repl) { - LanguageType language = {}; - TargetSP target_sp = GetDebugger().GetSelectedTarget(); - if (target_sp) - language = target_sp->GetLanguage(); - GetHomeREPLInitFile(init_file, language); - } + if (is_repl) + GetHomeREPLInitFile(init_file); if (init_file.empty()) GetHomeInitFile(init_file); |