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/Expression/ClangExpressionParser.cpp | |
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/Expression/ClangExpressionParser.cpp')
-rw-r--r-- | lldb/source/Expression/ClangExpressionParser.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lldb/source/Expression/ClangExpressionParser.cpp b/lldb/source/Expression/ClangExpressionParser.cpp index 351c4847170..912822399dc 100644 --- a/lldb/source/Expression/ClangExpressionParser.cpp +++ b/lldb/source/Expression/ClangExpressionParser.cpp @@ -245,7 +245,10 @@ ClangExpressionParser::ClangExpressionParser (ExecutionContextScope *exe_scope, m_compiler->getLangOpts().ThreadsafeStatics = false; m_compiler->getLangOpts().AccessControl = false; // Debuggers get universal access m_compiler->getLangOpts().DollarIdents = true; // $ indicates a persistent variable name + m_compiler->getLangOpts().DebuggerSupport = true; // Features specifically for debugger clients + if (expr.DesiredResultType() == ClangExpression::eResultTypeId) + m_compiler->getLangOpts().DebuggerCastResultToId = true; // Set CodeGen options m_compiler->getCodeGenOpts().EmitDeclMetadata = true; |