summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclObjC.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2013-12-17 22:44:28 +0000
committerFariborz Jahanian <fjahanian@apple.com>2013-12-17 22:44:28 +0000
commit7e350d23b2159408029dd6608ef3f659f3d46d62 (patch)
treeaa8485b65751ab744437e762fe25bff27da86ea5 /clang/lib/Sema/SemaDeclObjC.cpp
parent81e6fccbd72ac4be2be9ad014d78cf0c09e5a1bb (diff)
downloadbcm5719-llvm-7e350d23b2159408029dd6608ef3f659f3d46d62.tar.gz
bcm5719-llvm-7e350d23b2159408029dd6608ef3f659f3d46d62.zip
Objctive-C. warn if dealloc is being overridden in
a category implementation. // rdar://15397430 llvm-svn: 197534
Diffstat (limited to 'clang/lib/Sema/SemaDeclObjC.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclObjC.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp
index 9f50a207c1a..d536f33c085 100644
--- a/clang/lib/Sema/SemaDeclObjC.cpp
+++ b/clang/lib/Sema/SemaDeclObjC.cpp
@@ -3213,6 +3213,14 @@ Decl *Sema::ActOnMethodDeclaration(
ObjCMethod->addAttr(
new (Context) ObjCRequiresSuperAttr(ObjCMethod->getLocation(), Context));
}
+ if (isa<ObjCCategoryImplDecl>(ImpDecl)) {
+ ObjCMethodFamily family = ObjCMethod->getMethodFamily();
+ if (family == OMF_dealloc && IMD && IMD->isOverriding()) {
+ Diag(ObjCMethod->getLocation(), diag::warn_dealloc_in_category)
+ << ObjCMethod->getDeclName();
+ Diag(ImpDecl->getLocation(), diag::note_declared_at);
+ }
+ }
} else {
cast<DeclContext>(ClassDecl)->addDecl(ObjCMethod);
}
OpenPOWER on IntegriCloud