r196989 - ObjectiveC. Fixes a bug where an 'unused property ivar'
Fariborz Jahanian
fjahanian at apple.com
Tue Dec 10 16:53:49 PST 2013
Author: fjahanian
Date: Tue Dec 10 18:53:48 2013
New Revision: 196989
URL: http://llvm.org/viewvc/llvm-project?rev=196989&view=rev
Log:
ObjectiveC. Fixes a bug where an 'unused property ivar'
warning is coming out incorrectly too early
becuase of unrelated scope pop. // rdar://15630719
Modified:
cfe/trunk/include/clang/Sema/Scope.h
cfe/trunk/lib/Sema/SemaDeclObjC.cpp
cfe/trunk/test/SemaObjC/unsued-backing-ivar-warning.m
Modified: cfe/trunk/include/clang/Sema/Scope.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Scope.h?rev=196989&r1=196988&r2=196989&view=diff
==============================================================================
--- cfe/trunk/include/clang/Sema/Scope.h (original)
+++ cfe/trunk/include/clang/Sema/Scope.h Tue Dec 10 18:53:48 2013
@@ -273,6 +273,18 @@ public:
return false;
}
+ /// isInObjcMethodOuterScope - Return true if this scope is an
+ /// Objective-C method outer most body.
+ bool isInObjcMethodOuterScope() const {
+ if (const Scope *S = this) {
+ // If this scope is an objc method scope, then we succeed.
+ if (S->getFlags() & ObjCMethodScope)
+ return true;
+ }
+ return false;
+ }
+
+
/// isTemplateParamScope - Return true if this scope is a C++
/// template parameter scope.
bool isTemplateParamScope() const {
Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=196989&r1=196988&r2=196989&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Tue Dec 10 18:53:48 2013
@@ -3498,7 +3498,7 @@ Sema::GetIvarBackingPropertyAccessor(con
}
void Sema::DiagnoseUnusedBackingIvarInAccessor(Scope *S) {
- if (S->hasUnrecoverableErrorOccurred() || !S->isInObjcMethodScope())
+ if (S->hasUnrecoverableErrorOccurred() || !S->isInObjcMethodOuterScope())
return;
const ObjCMethodDecl *CurMethod = getCurMethodDecl();
Modified: cfe/trunk/test/SemaObjC/unsued-backing-ivar-warning.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/unsued-backing-ivar-warning.m?rev=196989&r1=196988&r2=196989&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/unsued-backing-ivar-warning.m (original)
+++ cfe/trunk/test/SemaObjC/unsued-backing-ivar-warning.m Tue Dec 10 18:53:48 2013
@@ -74,3 +74,20 @@ typedef char BOOL;
return 0;
}
@end
+
+// rdar://15630719
+ at interface CDBModifyRecordsOperation : NSObject
+ at property (nonatomic, assign) BOOL atomic;
+ at end
+
+ at class NSString;
+
+ at implementation CDBModifyRecordsOperation
+- (void)setAtomic:(BOOL)atomic {
+ if (atomic == __objc_yes) {
+ NSString *recordZoneID = 0;
+ }
+ _atomic = atomic;
+}
+ at end
+
More information about the cfe-commits
mailing list