diff options
author | Sean Callanan <scallanan@apple.com> | 2011-12-21 22:22:58 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2011-12-21 22:22:58 +0000 |
commit | 20bb3aa53a0c9ed02dbcdd216f4607034c9e1122 (patch) | |
tree | d0e70105a732af46382d8307b6667a3daa892e07 /lldb/source/Breakpoint | |
parent | 51c81685a89565a01b3decbc7156b288bb80858a (diff) | |
download | bcm5719-llvm-20bb3aa53a0c9ed02dbcdd216f4607034c9e1122.tar.gz bcm5719-llvm-20bb3aa53a0c9ed02dbcdd216f4607034c9e1122.zip |
The "desired result type" code in the expression
parser has hitherto been an implementation waiting
for a use. I have now tied the '-o' option for
the expression command -- which indicates that the
result is an Objective-C object and needs to be
printed -- to the ExpressionParser, which
communicates the desired type to Clang.
Now, if the result of an expression is determined
by an Objective-C method call for which there is
no type information, that result is implicitly
cast to id if and only if the -o option is passed
to the expression command. (Otherwise if there
is no explicit cast Clang will issue an error.
This behavior is identical to what happened before
r146756.)
Also added a testcase for -o enabled and disabled.
llvm-svn: 147099
Diffstat (limited to 'lldb/source/Breakpoint')
-rw-r--r-- | lldb/source/Breakpoint/BreakpointOptions.cpp | 12 | ||||
-rw-r--r-- | lldb/source/Breakpoint/Watchpoint.cpp | 2 |
2 files changed, 5 insertions, 9 deletions
diff --git a/lldb/source/Breakpoint/BreakpointOptions.cpp b/lldb/source/Breakpoint/BreakpointOptions.cpp index c2277dbc910..79ffa32e3a2 100644 --- a/lldb/source/Breakpoint/BreakpointOptions.cpp +++ b/lldb/source/Breakpoint/BreakpointOptions.cpp @@ -60,7 +60,7 @@ BreakpointOptions::BreakpointOptions(const BreakpointOptions& rhs) : if (rhs.m_thread_spec_ap.get() != NULL) m_thread_spec_ap.reset (new ThreadSpec(*rhs.m_thread_spec_ap.get())); if (rhs.m_condition_ap.get()) - m_condition_ap.reset (new ClangUserExpression (rhs.m_condition_ap->GetUserText(), NULL, lldb::eLanguageTypeUnknown)); + m_condition_ap.reset (new ClangUserExpression (rhs.m_condition_ap->GetUserText(), NULL, lldb::eLanguageTypeUnknown, ClangUserExpression::eResultTypeAny)); } //---------------------------------------------------------------------- @@ -77,7 +77,7 @@ BreakpointOptions::operator=(const BreakpointOptions& rhs) if (rhs.m_thread_spec_ap.get() != NULL) m_thread_spec_ap.reset(new ThreadSpec(*rhs.m_thread_spec_ap.get())); if (rhs.m_condition_ap.get()) - m_condition_ap.reset (new ClangUserExpression (rhs.m_condition_ap->GetUserText(), NULL, lldb::eLanguageTypeUnknown)); + m_condition_ap.reset (new ClangUserExpression (rhs.m_condition_ap->GetUserText(), NULL, lldb::eLanguageTypeUnknown, ClangUserExpression::eResultTypeAny)); return *this; } @@ -166,7 +166,7 @@ BreakpointOptions::SetCondition (const char *condition) } else { - m_condition_ap.reset(new ClangUserExpression (condition, NULL, lldb::eLanguageTypeUnknown)); + m_condition_ap.reset(new ClangUserExpression (condition, NULL, lldb::eLanguageTypeUnknown, ClangUserExpression::eResultTypeAny)); } } @@ -196,13 +196,9 @@ BreakpointOptions::GetThreadPlanToTestCondition (ExecutionContext &exe_ctx, process->SetDynamicCheckers(dynamic_checkers); } - // Get the boolean type from the process's scratch AST context - ClangASTContext *ast_context = exe_ctx.GetTargetRef().GetScratchClangASTContext(); - TypeFromUser bool_type(ast_context->GetBuiltInType_bool(), ast_context->getASTContext()); - const bool keep_in_memory = false; - if (!m_condition_ap->Parse (error_stream, exe_ctx, bool_type, eExecutionPolicyAlways, keep_in_memory)) + if (!m_condition_ap->Parse (error_stream, exe_ctx, eExecutionPolicyAlways, keep_in_memory)) { // Errors mean we should stop. return NULL; diff --git a/lldb/source/Breakpoint/Watchpoint.cpp b/lldb/source/Breakpoint/Watchpoint.cpp index 4645b6072e0..e9b314b24ac 100644 --- a/lldb/source/Breakpoint/Watchpoint.cpp +++ b/lldb/source/Breakpoint/Watchpoint.cpp @@ -212,7 +212,7 @@ Watchpoint::SetCondition (const char *condition) else { // Pass NULL for expr_prefix (no translation-unit level definitions). - m_condition_ap.reset(new ClangUserExpression (condition, NULL, lldb::eLanguageTypeUnknown)); + m_condition_ap.reset(new ClangUserExpression (condition, NULL, lldb::eLanguageTypeUnknown, ClangUserExpression::eResultTypeAny)); } } |