1 | // RUN: %clang_cc1 -fsyntax-only -x objective-c -verify -Wno-objc-root-class %s |
2 | // rdar://15499111 |
3 | |
4 | typedef struct __attribute__((objc_bridge_related(NSColor,colorXWithCGColor:,CXGColor))) CGColor *CGColorRef; // expected-note 2 {{declared here}} |
5 | |
6 | typedef struct __attribute__((objc_bridge_related(XNSColor,colorWithCGColor:,CGColor))) CGColor1 *CGColorRef1; // expected-note 2 {{declared here}} |
7 | |
8 | typedef struct __attribute__((objc_bridge_related(PNsColor,colorWithCGColor:,CGColor))) CGColor2 *CGColorRef2; // expected-note 2 {{declared here}} |
9 | |
10 | @interface NSColor |
11 | + (NSColor *)colorWithCGColor:(CGColorRef)cgColor; |
12 | - (CGColorRef)CGColor; |
13 | @end |
14 | |
15 | @interface NSTextField |
16 | - (void)setBackgroundColor:(NSColor *)color; |
17 | - (NSColor *)backgroundColor; |
18 | @end |
19 | |
20 | typedef int PNsColor; // expected-note 2 {{declared here}} |
21 | |
22 | NSColor * Test1(NSTextField *textField, CGColorRef newColor) { |
23 | textField.backgroundColor = newColor; // expected-error {{'CGColorRef' (aka 'struct CGColor *') must be explicitly converted to 'NSColor *'; use '+colorXWithCGColor:' method for this conversion}} \ |
24 | // expected-warning {{incompatible pointer types assigning to 'NSColor *' from 'CGColorRef' (aka 'struct CGColor *')}} |
25 | newColor = textField.backgroundColor; // expected-error {{'NSColor *' must be explicitly converted to 'CGColorRef' (aka 'struct CGColor *'); use '-CXGColor' method for this conversion}} \ |
26 | // expected-warning {{incompatible pointer types assigning to 'CGColorRef' (aka 'struct CGColor *') from 'NSColor *'}} |
27 | } |
28 | NSColor * Test2(NSTextField *textField, CGColorRef1 newColor) { |
29 | textField.backgroundColor = newColor; // expected-error {{could not find Objective-C class 'XNSColor' to convert 'CGColorRef1' (aka 'struct CGColor1 *') to 'NSColor *'}} \ |
30 | // expected-warning {{incompatible pointer types assigning to 'NSColor *' from 'CGColorRef1' (aka 'struct CGColor1 *')}} |
31 | newColor = textField.backgroundColor ; // expected-error {{could not find Objective-C class 'XNSColor' to convert 'NSColor *' to 'CGColorRef1' (aka 'struct CGColor1 *')}} \ |
32 | // expected-warning {{incompatible pointer types assigning to 'CGColorRef1' (aka 'struct CGColor1 *') from 'NSColor *'}} |
33 | } |
34 | |
35 | NSColor * Test3(NSTextField *textField, CGColorRef2 newColor) { |
36 | textField.backgroundColor = newColor; // expected-error {{'PNsColor' must be name of an Objective-C class to be able to convert 'CGColorRef2' (aka 'struct CGColor2 *') to 'NSColor *'}} \ |
37 | // expected-warning {{incompatible pointer types assigning to 'NSColor *' from 'CGColorRef2' (aka 'struct CGColor2 *')}} |
38 | newColor = textField.backgroundColor; // expected-error {{'PNsColor' must be name of an Objective-C class to be able to convert 'NSColor *' to 'CGColorRef2' (aka 'struct CGColor2 *')}} \ |
39 | // expected-warning {{incompatible pointer types assigning to 'CGColorRef2' (aka 'struct CGColor2 *') from 'NSColor *'}} |
40 | } |
41 | |
42 | |