diff options
Diffstat (limited to 'lldb/source/Commands/CommandObjectBreakpoint.cpp')
-rw-r--r-- | lldb/source/Commands/CommandObjectBreakpoint.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp index 2440a7e..38ec375 100644 --- a/lldb/source/Commands/CommandObjectBreakpoint.cpp +++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp @@ -72,7 +72,7 @@ public: case 'c': // Normally an empty breakpoint condition marks is as unset. But we need // to say it was passed in. - m_bp_opts.SetCondition(option_arg.str().c_str()); + m_bp_opts.GetCondition().SetText(option_arg.str()); m_bp_opts.m_set_flags.Set(BreakpointOptions::eCondition); break; case 'C': @@ -154,6 +154,21 @@ public: m_bp_opts.GetThreadSpec()->SetIndex(thread_index); } } break; + case 'Y': { + LanguageType language = Language::GetLanguageTypeFromString(option_arg); + + LanguageSet languages_for_expressions = + Language::GetLanguagesSupportingTypeSystemsForExpressions(); + if (language == eLanguageTypeUnknown) + error = Status::FromError(CreateOptionParsingError( + option_arg, short_option, long_option, "invalid language")); + else if (!languages_for_expressions[language]) + error = Status::FromError( + CreateOptionParsingError(option_arg, short_option, long_option, + "no expression support for language")); + else + m_bp_opts.GetCondition().SetLanguage(language); + } break; default: llvm_unreachable("Unimplemented option"); } |