1// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -Wdealloc-in-category -verify %s
2// RUN: not %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -Wdealloc-in-category -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
3// rdar://11987838
4
5@protocol NSObject
6- dealloc; // expected-error {{return type must be correctly specified as 'void' under ARC, instead of 'id'}}
7// CHECK: fix-it:"{{.*}}":{6:3-6:3}:"(void)"
8@end
9
10@protocol Foo <NSObject> @end
11
12@interface Root <Foo>
13@end
14
15@interface Baz : Root {
16}
17@end
18
19@implementation Baz
20-  (id) dealloc { // expected-error {{return type must be correctly specified as 'void' under ARC, instead of 'id'}}
21// CHECK: fix-it:"{{.*}}":{20:5-20:7}:"void"
22}
23
24@end
25
26// rdar://15397430
27@interface Base
28- (void)dealloc;
29@end
30
31@interface Subclass : Base
32@end
33
34@interface Subclass (CAT)
35- (void)dealloc;
36@end
37
38@implementation Subclass (CAT)
39- (void)dealloc { // expected-warning {{-dealloc is being overridden in a category}}
40}
41@end
42
43// rdar://15919775
44@interface NSObject @end
45@interface NSError:NSObject
46@end
47
48@interface NSError(CAT)
49- (NSError *)MCCopyAsPrimaryError __attribute__((objc_method_family(new)));
50@end
51@implementation NSError(CAT)
52- (NSError *)MCCopyAsPrimaryError {
53  return 0;
54}
55@end
56