This revision was not accepted when it landed; it landed in state "Needs
Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6dc9db524492: Track expression language from one place in
ClangExpressionParser (authored by EwanCrawford).
Herald added a project: LLDB.
Changed prior to commit:
https://reviews.llvm.org/D17719?vs=82251&id=223584#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D17719/new/
https://reviews.llvm.org/D17719
Files:
lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
Index: lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
===
--- lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
+++ lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
@@ -129,6 +129,8 @@
class LLDBPreprocessorCallbacks;
LLDBPreprocessorCallbacks *m_pp_callbacks; ///<
Called when the preprocessor encounters module imports
std::unique_ptr m_ast_context;
+lldb::LanguageType m_language;///< The
the source language of the expression
+/// which
may be explicitly set or inferred.
};
}
Index: lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
===
--- lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
+++ lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
@@ -157,7 +157,7 @@
// 1. Create a new compiler instance.
m_compiler.reset(new CompilerInstance());
-lldb::LanguageType frame_lang = expr.Language(); // defaults to
lldb::eLanguageTypeUnknown
+m_language = expr.Language(); // defaults to lldb::eLanguageTypeUnknown
bool overridden_target_opts = false;
lldb_private::LanguageRuntime *lang_rt = nullptr;
lldb::TargetSP target_sp;
@@ -176,14 +176,14 @@
// 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 && m_language == lldb::eLanguageTypeUnknown)
+m_language = frame->GetLanguage();
-if (frame_lang != lldb::eLanguageTypeUnknown)
+if (m_language != lldb::eLanguageTypeUnknown)
{
-lang_rt =
exe_scope->CalculateProcess()->GetLanguageRuntime(frame_lang);
+lang_rt =
exe_scope->CalculateProcess()->GetLanguageRuntime(m_language);
if (log)
-log->Printf("Frame has language of type %s",
Language::GetNameForLanguageType(frame_lang));
+log->Printf("Frame has language of type %s",
Language::GetNameForLanguageType(m_language));
}
// 2. Configure the compiler with a set of default options that are
appropriate
@@ -263,9 +263,7 @@
assert (m_compiler->hasTarget());
// 5. Set language options.
-lldb::LanguageType language = expr.Language();
-
-switch (language)
+switch (m_language)
{
case lldb::eLanguageTypeC:
case lldb::eLanguageTypeC89:
Index: lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
===
--- lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
+++ lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
@@ -129,6 +129,8 @@
class LLDBPreprocessorCallbacks;
LLDBPreprocessorCallbacks *m_pp_callbacks; ///< Called when the preprocessor encounters module imports
std::unique_ptr m_ast_context;
+lldb::LanguageType m_language;///< The the source language of the expression
+/// which may be explicitly set or inferred.
};
}
Index: lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
===
--- lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
+++ lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
@@ -157,7 +157,7 @@
// 1. Create a new compiler instance.
m_compiler.reset(new CompilerInstance());
-lldb::LanguageType frame_lang = expr.Language(); // defaults to lldb::eLanguageTypeUnknown
+m_language = expr.Language(); // defaults to lldb::eLanguageTypeUnknown
bool overridden_target_opts = false;
lldb_private::LanguageRuntime *lang_rt = nullptr;
lldb::TargetSP target_sp;
@@ -176,14 +176,14 @@
// Make sure the user hasn't provided a preferred execution language
// with `expression --language X -- ...`
-if (frame &