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 | |