Skip to content

Commit 898a987

Browse files
committed
Detect unsupported languages
1 parent 8cd115d commit 898a987

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

lldb/source/Commands/CommandObjectBreakpoint.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,18 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup {
155155
} break;
156156
case 'Y': {
157157
LanguageType language = Language::GetLanguageTypeFromString(option_arg);
158-
if (language != eLanguageTypeUnknown)
159-
m_bp_opts.GetCondition().SetLanguage(language);
160-
else
158+
159+
LanguageSet languages_for_expressions =
160+
Language::GetLanguagesSupportingTypeSystemsForExpressions();
161+
if (language == eLanguageTypeUnknown)
161162
error = Status::FromError(CreateOptionParsingError(
162163
option_arg, short_option, long_option, "invalid language"));
164+
else if (!languages_for_expressions[language])
165+
error = Status::FromError(
166+
CreateOptionParsingError(option_arg, short_option, long_option,
167+
"no expression support for language"));
168+
else
169+
m_bp_opts.GetCondition().SetLanguage(language);
163170
} break;
164171
default:
165172
llvm_unreachable("Unimplemented option");
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
RUN: not %lldb -b -o 'break set -n foo -c bar -Y bogus' 2>&1 | FileCheck %s --check-prefix INVALID
2+
INVALID: error: Invalid value ('bogus') for -Y (condition-language): invalid language
3+
4+
RUN: not %lldb -b -o 'break set -n foo -c bar -Y python' 2>&1 | FileCheck %s --check-prefix NOEXPRSUPPORT
5+
NOEXPRSUPPORT: error: Invalid value ('python') for -Y (condition-language): no expression support for language

0 commit comments

Comments
 (0)