ldrumm removed rL LLVM as the repository for this revision.
ldrumm updated this revision to Diff 43616.
ldrumm added a comment.
Updated implementation as per comment on manually set user language:
http://reviews.llvm.org/D15527#inline-127860 . This patch adds checking for non
eLanguageTypeUnknow expression language before falling back to the language of
the current stack frame.
http://reviews.llvm.org/D15527
Files:
source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
Index: source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
===================================================================
--- source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
+++ source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
@@ -172,7 +172,7 @@
// 1. Create a new compiler instance.
m_compiler.reset(new CompilerInstance());
- lldb::LanguageType frame_lang = lldb::eLanguageTypeUnknown;
+ lldb::LanguageType frame_lang = expr.Language(); // defaults to
lldb::eLanguageTypeUnknown
lldb_private::LanguageRuntime::OverrideExprOptions *target_opts_override =
nullptr;
lldb_private::LanguageRuntime *lang_rt = nullptr;
lldb::TargetSP target_sp;
@@ -182,7 +182,10 @@
// If the expression is being evaluated in the context of an existing
// stack frame, we introspect to see if the language runtime is available.
auto frame = exe_scope->CalculateStackFrame();
- if (frame)
+
+ // Make sure the user hasn't provided a preferred execution language
+ // with `expression --language X -- ...`
+ if (frame && frame_lang == lldb::eLanguageTypeUnknown)
frame_lang = frame->GetLanguage();
if (frame_lang != lldb::eLanguageTypeUnknown)
Index: source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
===================================================================
--- source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
+++ source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
@@ -172,7 +172,7 @@
// 1. Create a new compiler instance.
m_compiler.reset(new CompilerInstance());
- lldb::LanguageType frame_lang = lldb::eLanguageTypeUnknown;
+ lldb::LanguageType frame_lang = expr.Language(); // defaults to lldb::eLanguageTypeUnknown
lldb_private::LanguageRuntime::OverrideExprOptions *target_opts_override = nullptr;
lldb_private::LanguageRuntime *lang_rt = nullptr;
lldb::TargetSP target_sp;
@@ -182,7 +182,10 @@
// If the expression is being evaluated in the context of an existing
// stack frame, we introspect to see if the language runtime is available.
auto frame = exe_scope->CalculateStackFrame();
- if (frame)
+
+ // Make sure the user hasn't provided a preferred execution language
+ // with `expression --language X -- ...`
+ if (frame && frame_lang == lldb::eLanguageTypeUnknown)
frame_lang = frame->GetLanguage();
if (frame_lang != lldb::eLanguageTypeUnknown)
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits