1// RUN: %check_clang_tidy %s objc-dealloc-in-category %t
2
3@interface NSObject
4// Used to quash warning about missing base class.
5- (void)dealloc;
6@end
7
8@interface Foo : NSObject
9@end
10
11@implementation Foo
12- (void)dealloc {
13  // No warning should be generated here.
14}
15@end
16
17@interface Bar : NSObject
18@end
19
20@interface Bar (BarCategory)
21@end
22
23@implementation Bar (BarCategory)
24+ (void)dealloc {
25  // Should not trigger on class methods.
26}
27
28- (void)dealloc {
29  // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: category 'BarCategory' should not implement -dealloc [objc-dealloc-in-category]
30}
31@end
32
33@interface Baz : NSObject
34@end
35
36@implementation Baz
37- (void)dealloc {
38  // Should not trigger on implementation in the class itself, even with
39  // it declared in the category (below).
40}
41@end
42
43@interface Baz (BazCategory)
44// A declaration in a category @interface does not by itself provide an
45// overriding implementation, and should not generate a warning.
46- (void)dealloc;
47@end
48