Decide on the expression language inside UserExpression
When the target settings are consulted to decide the expression language is decided in CommandObjectExpression, this doesn't help if you're running SBFrame::EvaluateExpression(). Moving the logic into UserExpression fixes this. Based on patch from scallanan@apple.com Reviewed by: dawn Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D13267 llvm-svn: 249624
This commit is contained in:
parent
6df48a97d2
commit
1bbaede5b9
|
@ -299,16 +299,7 @@ CommandObjectExpression::EvaluateExpression
|
|||
options.SetUseDynamic(m_varobj_options.use_dynamic);
|
||||
options.SetTryAllThreads(m_command_options.try_all_threads);
|
||||
options.SetDebug(m_command_options.debug);
|
||||
|
||||
// If the language was not specified in the expression command,
|
||||
// set it to the language in the target's properties if
|
||||
// specified, else default to the language for the frame.
|
||||
if (m_command_options.language != eLanguageTypeUnknown)
|
||||
options.SetLanguage(m_command_options.language);
|
||||
else if (target->GetLanguage() != eLanguageTypeUnknown)
|
||||
options.SetLanguage(target->GetLanguage());
|
||||
else if (frame)
|
||||
options.SetLanguage(frame->GetLanguage());
|
||||
options.SetLanguage(m_command_options.language);
|
||||
|
||||
// If there is any chance we are going to stop and want to see
|
||||
// what went wrong with our expression, we should generate debug info
|
||||
|
|
|
@ -470,7 +470,7 @@ UserExpression::Evaluate (ExecutionContext &exe_ctx,
|
|||
Log *log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_EXPRESSIONS | LIBLLDB_LOG_STEP));
|
||||
|
||||
lldb_private::ExecutionPolicy execution_policy = options.GetExecutionPolicy();
|
||||
const lldb::LanguageType language = options.GetLanguage();
|
||||
lldb::LanguageType language = options.GetLanguage();
|
||||
const ResultType desired_type = options.DoesCoerceToId() ? UserExpression::eResultTypeId : UserExpression::eResultTypeAny;
|
||||
lldb::ExpressionResults execution_results = lldb::eExpressionSetupError;
|
||||
|
||||
|
@ -515,6 +515,17 @@ UserExpression::Evaluate (ExecutionContext &exe_ctx,
|
|||
else
|
||||
full_prefix = option_prefix;
|
||||
|
||||
// If the language was not specified in the expression command,
|
||||
// set it to the language in the target's properties if
|
||||
// specified, else default to the langage for the frame.
|
||||
if (language == lldb::eLanguageTypeUnknown)
|
||||
{
|
||||
if (target->GetLanguage() != lldb::eLanguageTypeUnknown)
|
||||
language = target->GetLanguage();
|
||||
else if (StackFrame *frame = exe_ctx.GetFramePtr())
|
||||
language = frame->GetLanguage();
|
||||
}
|
||||
|
||||
lldb::UserExpressionSP user_expression_sp(target->GetUserExpressionForLanguage (expr_cstr,
|
||||
full_prefix,
|
||||
language,
|
||||
|
|
Loading…
Reference in New Issue