summaryrefslogtreecommitdiffstats
path: root/lldb/source/Expression/ClangExpressionParser.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2011-12-21 22:22:58 +0000
committerSean Callanan <scallanan@apple.com>2011-12-21 22:22:58 +0000
commit20bb3aa53a0c9ed02dbcdd216f4607034c9e1122 (patch)
treed0e70105a732af46382d8307b6667a3daa892e07 /lldb/source/Expression/ClangExpressionParser.cpp
parent51c81685a89565a01b3decbc7156b288bb80858a (diff)
downloadbcm5719-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.cpp3
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;
OpenPOWER on IntegriCloud