aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-08-31 20:57:36 +0000
committerJohn McCall <rjmccall@apple.com>2011-08-31 20:57:36 +0000
commit819e74544a326b90d13aa73e6497b187c6545ff5 (patch)
tree946730d45c7cbd09fae8624e2e41bd614edd6e18 /lib/Sema/SemaExpr.cpp
parenta488497c7c273ba54ce0fc4caf0f4d24adb2be89 (diff)
Don't assert when diagnosing a missing cast of an unknown-anytype
message send to an unknown method. rdar://problem/9416370, redux. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138893 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExpr.cpp')
-rw-r--r--lib/Sema/SemaExpr.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index d94e10b009..928b11bd0b 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -9942,7 +9942,12 @@ static ExprResult diagnoseUnknownAnyExpr(Sema &S, Expr *e) {
diagID = diag::err_uncasted_call_of_unknown_any;
loc = msg->getSelectorLoc();
d = msg->getMethodDecl();
- assert(d && "unknown method returning __unknown_any?");
+ if (!d) {
+ S.Diag(loc, diag::err_uncasted_send_to_unknown_any_method)
+ << static_cast<unsigned>(msg->isClassMessage()) << msg->getSelector()
+ << orig->getSourceRange();
+ return ExprError();
+ }
} else {
S.Diag(e->getExprLoc(), diag::err_unsupported_unknown_any_expr)
<< e->getSourceRange();