aboutsummaryrefslogtreecommitdiff
path: root/source/Interpreter/OptionValueLanguage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Interpreter/OptionValueLanguage.cpp')
-rw-r--r--source/Interpreter/OptionValueLanguage.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/source/Interpreter/OptionValueLanguage.cpp b/source/Interpreter/OptionValueLanguage.cpp
index fd46553dabde..dd7173c3dc74 100644
--- a/source/Interpreter/OptionValueLanguage.cpp
+++ b/source/Interpreter/OptionValueLanguage.cpp
@@ -16,7 +16,7 @@
#include "lldb/Core/Stream.h"
#include "lldb/DataFormatters/FormatManager.h"
#include "lldb/Interpreter/Args.h"
-#include "lldb/Target/LanguageRuntime.h"
+#include "lldb/Target/Language.h"
using namespace lldb;
using namespace lldb_private;
@@ -30,7 +30,7 @@ OptionValueLanguage::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, u
{
if (dump_mask & eDumpOptionType)
strm.PutCString (" = ");
- strm.PutCString (LanguageRuntime::GetNameForLanguageType(m_current_value));
+ strm.PutCString (Language::GetNameForLanguageType(m_current_value));
}
}
@@ -47,9 +47,28 @@ OptionValueLanguage::SetValueFromString (llvm::StringRef value, VarSetOperationT
case eVarSetOperationReplace:
case eVarSetOperationAssign:
{
- LanguageType new_type = LanguageRuntime::GetLanguageTypeFromString(value.data());
- m_value_was_set = true;
- m_current_value = new_type;
+ ConstString lang_name(value.trim());
+ std::set<lldb::LanguageType> languages_for_types;
+ std::set<lldb::LanguageType> languages_for_expressions;
+ Language::GetLanguagesSupportingTypeSystems(languages_for_types, languages_for_expressions);
+
+ LanguageType new_type = Language::GetLanguageTypeFromString(lang_name.GetCString());
+ if (new_type && languages_for_types.count(new_type))
+ {
+ m_value_was_set = true;
+ m_current_value = new_type;
+ }
+ else
+ {
+ StreamString error_strm;
+ error_strm.Printf("invalid language type '%s', ", value.str().c_str());
+ error_strm.Printf("valid values are:\n");
+ for (lldb::LanguageType language : languages_for_types)
+ {
+ error_strm.Printf("%s%s%s", " ", Language::GetNameForLanguageType(language), "\n");
+ }
+ error.SetErrorString(error_strm.GetData());
+ }
}
break;