summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-02-19 15:18:45 +0000
committerDouglas Gregor <dgregor@apple.com>2010-02-19 15:18:45 +0000
commitcfd70242ca544c0738fabc55d17ace9fc1d5a7b9 (patch)
tree40d4e4d0aba0c3c24fdfdd5a10229157c151bd28 /clang/lib/Sema
parentd0bf6f640f6a2130cec017761321831db8c49455 (diff)
downloadbcm5719-llvm-cfd70242ca544c0738fabc55d17ace9fc1d5a7b9.tar.gz
bcm5719-llvm-cfd70242ca544c0738fabc55d17ace9fc1d5a7b9.zip
Make Sema::ActOnClassMessage robust when name lookup for the receiver
name finds something other than a TypedefDecl or an ObjCInterfaceDecl. This is a small part of <rdar://problem/7660386>. llvm-svn: 96676
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/SemaExprObjC.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp
index 0c5d8efa288..3a05241c016 100644
--- a/clang/lib/Sema/SemaExprObjC.cpp
+++ b/clang/lib/Sema/SemaExprObjC.cpp
@@ -426,14 +426,14 @@ Sema::ExprResult Sema::ActOnClassMessage(
if (!ClassDecl) {
NamedDecl *IDecl
= LookupSingleName(TUScope, receiverName, LookupOrdinaryName);
- if (TypedefDecl *OCTD = dyn_cast_or_null<TypedefDecl>(IDecl)) {
- const ObjCInterfaceType *OCIT;
- OCIT = OCTD->getUnderlyingType()->getAs<ObjCInterfaceType>();
- if (!OCIT) {
- Diag(receiverLoc, diag::err_invalid_receiver_to_message);
- return true;
- }
- ClassDecl = OCIT->getDecl();
+ if (TypedefDecl *OCTD = dyn_cast_or_null<TypedefDecl>(IDecl))
+ if (const ObjCInterfaceType *OCIT
+ = OCTD->getUnderlyingType()->getAs<ObjCInterfaceType>())
+ ClassDecl = OCIT->getDecl();
+
+ if (!ClassDecl) {
+ Diag(receiverLoc, diag::err_invalid_receiver_to_message);
+ return true;
}
}
assert(ClassDecl && "missing interface declaration");
OpenPOWER on IntegriCloud