1 // RUN: %clang_cc1 -fsyntax-only -Wdocumentation -verify %s
2 // rdar://12390371
3 
4 /** @return s Test*/
5 struct s* f(void);
6 struct s;
7 
8 struct s1;
9 /** @return s1 Test 1*/
10 struct s1* f1(void);
11 
12 struct s2;
13 /** @return s2 Test 2*/
14 struct s2* f2(void);
15 struct s2;
16 
17 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
18 /** @return s3 Test 3 - expected warning here */
19 struct s3;
20 struct s3* f3(void);
21 
22 /** @return s4 Test 4 */
23 struct s4* f4(void);
24 struct s4 { int is; };
25 
26 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
27 /** @return s5 Test 5  - expected warning here */
28 struct s5 { int is; };
29 struct s5* f5(void);
30 
31 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
32 /** @return s6 Test 6  - expected warning here */
33 struct s6 *ps6;
34 struct s6* f6(void);
35 
36 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
37 /** @return s7 Test 7  - expected warning here */
38 struct s7;
39 struct s7* f7(void);
40 
41 struct s8 { int is8; };
42 /** @return s8 Test 8 */
43 struct s4 *f8(struct s8 *p);
44 
45 
46 /** @return e Test*/
47 enum e* g(void);
48 enum e;
49 
50 enum e1;
51 /** @return e1 Test 1*/
52 enum e1* g1(void);
53 
54 enum e2;
55 /** @return e2 Test 2*/
56 enum e2* g2(void);
57 enum e2;
58 
59 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
60 /** @return e3 Test 3 - expected warning here */
61 enum e3;
62 enum e3* g3(void);
63 
64 /** @return e4 Test 4 */
65 enum e4* g4(void);
66 enum e4 { one };
67 
68 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
69 /** @return e5 Test 5  - expected warning here */
70 enum e5 { two };
71 enum e5* g5(void);
72 
73 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
74 /** @return e6 Test 6  - expected warning here */
75 enum e6 *pe6;
76 enum e6* g6(void);
77 
78 // expected-warning@+1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
79 /** @return e7 Test 7  - expected warning here */
80 enum e7;
81 enum e7* g7(void);
82 
83 enum e8 { three };
84 /** @return e8 Test 8 */
85 enum e4 *g8(enum e8 *p);
86