Author: dperchik Date: Wed Oct 7 17:01:12 2015 New Revision: 249624 URL: http://llvm.org/viewvc/llvm-project?rev=249624&view=rev Log: 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 scalla...@apple.com Reviewed by: dawn Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D13267 Modified: lldb/trunk/source/Commands/CommandObjectExpression.cpp lldb/trunk/source/Expression/UserExpression.cpp Modified: lldb/trunk/source/Commands/CommandObjectExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectExpression.cpp?rev=249624&r1=249623&r2=249624&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectExpression.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectExpression.cpp Wed Oct 7 17:01:12 2015 @@ -299,16 +299,7 @@ CommandObjectExpression::EvaluateExpress 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 Modified: lldb/trunk/source/Expression/UserExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/UserExpression.cpp?rev=249624&r1=249623&r2=249624&view=diff ============================================================================== --- lldb/trunk/source/Expression/UserExpression.cpp (original) +++ lldb/trunk/source/Expression/UserExpression.cpp Wed Oct 7 17:01:12 2015 @@ -470,7 +470,7 @@ UserExpression::Evaluate (ExecutionConte 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 (ExecutionConte 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, _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits