diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Sema/Scope.h | 12 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 2 | ||||
| -rw-r--r-- | clang/test/SemaObjC/unsued-backing-ivar-warning.m | 17 |
3 files changed, 30 insertions, 1 deletions
diff --git a/clang/include/clang/Sema/Scope.h b/clang/include/clang/Sema/Scope.h index 249a4c74311..238e0d28184 100644 --- a/clang/include/clang/Sema/Scope.h +++ b/clang/include/clang/Sema/Scope.h @@ -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 { diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index babfafe656d..a2d5fc00ac3 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -3498,7 +3498,7 @@ Sema::GetIvarBackingPropertyAccessor(const ObjCMethodDecl *Method, } void Sema::DiagnoseUnusedBackingIvarInAccessor(Scope *S) { - if (S->hasUnrecoverableErrorOccurred() || !S->isInObjcMethodScope()) + if (S->hasUnrecoverableErrorOccurred() || !S->isInObjcMethodOuterScope()) return; const ObjCMethodDecl *CurMethod = getCurMethodDecl(); diff --git a/clang/test/SemaObjC/unsued-backing-ivar-warning.m b/clang/test/SemaObjC/unsued-backing-ivar-warning.m index c07dea71a7e..df3ede75afa 100644 --- a/clang/test/SemaObjC/unsued-backing-ivar-warning.m +++ b/clang/test/SemaObjC/unsued-backing-ivar-warning.m @@ -74,3 +74,20 @@ typedef char BOOL; return 0; } @end + +// rdar://15630719 +@interface CDBModifyRecordsOperation : NSObject +@property (nonatomic, assign) BOOL atomic; +@end + +@class NSString; + +@implementation CDBModifyRecordsOperation +- (void)setAtomic:(BOOL)atomic { + if (atomic == __objc_yes) { + NSString *recordZoneID = 0; + } + _atomic = atomic; +} +@end + |

