| // RUN: %check_clang_tidy %s objc-missing-hash %t |
| |
| typedef _Bool BOOL; |
| #define YES 1 |
| #define NO 0 |
| typedef unsigned int NSUInteger; |
| typedef void *id; |
| |
| @interface NSObject |
| - (NSUInteger)hash; |
| - (BOOL)isEqual:(id)object; |
| @end |
| |
| @interface MissingHash : NSObject |
| @end |
| |
| @implementation MissingHash |
| // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: 'MissingHash' implements -isEqual: without implementing -hash [objc-missing-hash] |
| |
| - (BOOL)isEqual:(id)object { |
| return YES; |
| } |
| |
| @end |
| |
| @interface HasHash : NSObject |
| @end |
| |
| @implementation HasHash |
| |
| - (NSUInteger)hash { |
| return 0; |
| } |
| |
| - (BOOL)isEqual:(id)object { |
| return YES; |
| } |
| |
| @end |
| |
| @interface NSArray : NSObject |
| @end |
| |
| @interface MayHaveInheritedHash : NSArray |
| @end |
| |
| @implementation MayHaveInheritedHash |
| |
| - (BOOL)isEqual:(id)object { |
| return YES; |
| } |
| |
| @end |
| |
| @interface AnotherRootClass |
| @end |
| |
| @interface NotDerivedFromNSObject : AnotherRootClass |
| @end |
| |
| @implementation NotDerivedFromNSObject |
| |
| - (BOOL)isEqual:(id)object { |
| return NO; |
| } |
| |
| @end |
| |