diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-08-22 19:07:43 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-08-22 19:07:43 +0000 |
commit | 4eb14ca3ded87493ddfab73cf4be7fc24c3d48ea (patch) | |
tree | 8ea39103968ce0fe703ce5261e08a043d0720eb1 | |
parent | edf4daead543ab594012ef1704c7c5dd0a93f45f (diff) |
Do not perform check for missing '[super dealloc]' under ARC as calling -dealloc is illegal in that mode.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138261 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDeclObjC.cpp | 4 | ||||
-rw-r--r-- | test/SemaObjC/warn-missing-super.m | 12 |
2 files changed, 12 insertions, 4 deletions
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index 92fe9ec6ee..7a9d6d5072 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -292,7 +292,9 @@ void Sema::ActOnStartOfObjCMethodDef(Scope *FnBodyScope, Decl *D) { // Finally, in ActOnFinishFunctionBody() (SemaDecl), warn if flag is set. // Only do this if the current class actually has a superclass. if (IC->getSuperClass()) - ObjCShouldCallSuperDealloc = MDecl->getMethodFamily() == OMF_dealloc; + ObjCShouldCallSuperDealloc = + !Context.getLangOptions().ObjCAutoRefCount && + MDecl->getMethodFamily() == OMF_dealloc; } } diff --git a/test/SemaObjC/warn-missing-super.m b/test/SemaObjC/warn-missing-super.m index 8d04bf2866..19c6b62577 100644 --- a/test/SemaObjC/warn-missing-super.m +++ b/test/SemaObjC/warn-missing-super.m @@ -1,5 +1,3 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s - @protocol NSCopying @end @interface NSObject <NSCopying> @@ -18,7 +16,7 @@ @implementation Subclass1 - (void)dealloc { -} // expected-warning{{method possibly missing a [super dealloc] call}} +} @end @interface Subclass2 : NSObject @@ -30,3 +28,11 @@ [super dealloc]; // Shouldn't warn } @end + +// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: warn-missing-super.m:19:1: warning: method possibly missing a [super dealloc] call +// CHECK: 1 warning generated. + +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -fobjc-arc %s 2>&1 | FileCheck --check-prefix=CHECK-ARC %s +// CHECK-ARC: warn-missing-super.m:28:4: error: ARC forbids explicit message send of 'dealloc' +// CHECK-ARC: 1 error generated. |