diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-12-15 00:53:32 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-12-15 00:53:32 +0000 |
commit | 95715f9ecf44d99516b4beb2e51907e033f7c3d2 (patch) | |
tree | 6a7505ffaeda0511e355f2b6854d578dcd1ce2bb /clang/lib/Sema/SemaExprCXX.cpp | |
parent | 16ad2905a359832fc238b64a9335a2d242088bd7 (diff) | |
download | bcm5719-llvm-95715f9ecf44d99516b4beb2e51907e033f7c3d2.tar.gz bcm5719-llvm-95715f9ecf44d99516b4beb2e51907e033f7c3d2.zip |
In debugger support mode, if we have a top-level message send
expression with an unknown result type, assume that the result type is
'id'. Fixes <rdar://problem/10400663>.
llvm-svn: 146622
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 59369d603d9..e7e6b892e52 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -4674,6 +4674,15 @@ ExprResult Sema::ActOnFinishFullExpr(Expr *FE) { if (DiagnoseUnexpandedParameterPack(FullExpr.get())) return ExprError(); + // Top-level message sends default to 'id' when we're in a debugger. + if (getLangOptions().DebuggerSupport && + FullExpr.get()->getType() == Context.UnknownAnyTy && + isa<ObjCMessageExpr>(FullExpr.get())) { + FullExpr = forceUnknownAnyToType(FullExpr.take(), Context.getObjCIdType()); + if (FullExpr.isInvalid()) + return ExprError(); + } + FullExpr = CheckPlaceholderExpr(FullExpr.take()); if (FullExpr.isInvalid()) return ExprError(); |