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)