1// RUN: %clang_cc1 -std=c++11 -fdebugger-support -fdebugger-cast-result-to-id -funknown-anytype -fsyntax-only -verify %s
2
3extern __unknown_anytype test0a;
4extern __unknown_anytype test1a();
5extern __unknown_anytype test0b;
6extern __unknown_anytype test1b();
7extern __unknown_anytype test0c;
8extern __unknown_anytype test1c();
9extern __unknown_anytype test0d;
10extern __unknown_anytype test1d();
11extern __unknown_anytype test0d;
12extern __unknown_anytype test1d();
13
14@interface A
15@end
16
17// rdar://problem/9416370
18namespace rdar9416370 {
19  void test(id x) {
20    if ([x foo]) {} // expected-error {{no known method '-foo'; cast the message send to the method's return type}}
21    [x foo];
22  }
23}
24
25// rdar://10988847
26@class NSString; // expected-note {{forward declaration of class here}}
27namespace rdar10988847 {
28  void test() {
29    id s = [NSString stringWithUTF8String:"foo"]; // expected-warning {{receiver 'NSString' is a forward class and corresponding @interface may not exist}}
30  }
31}
32
33// rdar://13338107
34namespace rdar13338107 {
35  void test() {
36    id x1 = test0a;
37    id x2 = test1a();
38    A *x3 = test0b;
39    A *x4 = test1b();
40    auto x5 = test0c;
41    auto x6 = test1c();
42  }
43}
44