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
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to