1// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-objc-root-class -Wdocumentation -Wdocumentation-pedantic -verify %s 2 3@class NSString; 4 5// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 6/// \brief\author Aaa 7@interface Test1 8// expected-warning@+2 {{empty paragraph passed to '\brief' command}} 9/** 10 * \brief\author Aaa 11 * \param aaa Aaa 12 * \param bbb Bbb 13 */ 14+ (NSString *)test1:(NSString *)aaa suffix:(NSString *)bbb; 15 16// expected-warning@+2 {{parameter 'aab' not found in the function declaration}} expected-note@+2 {{did you mean 'aaa'?}} 17/** 18 * \param aab Aaa 19 */ 20+ (NSString *)test2:(NSString *)aaa; 21 22// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 23/// \brief\author Aaa 24@property int test3; // a property: ObjCPropertyDecl 25 26// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 27/// \brief\author Aaa 28@property int test4; // a property: ObjCPropertyDecl 29@end 30 31// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 32/// \brief\author Aaa 33@interface Test1() 34@end 35 36// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 37/// \brief\author Aaa 38@implementation Test1 // a class implementation : ObjCImplementationDecl 39+ (NSString *)test1:(NSString *)aaa suffix:(NSString *)bbb { 40 return 0; 41} 42 43+ (NSString *)test2:(NSString *)aaa { 44 return 0; 45} 46 47@synthesize test3; // a property implementation: ObjCPropertyImplDecl 48@dynamic test4; // a property implementation: ObjCPropertyImplDecl 49 50// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 51/// \brief\author Aaa 52NSString *_test5; 53@end 54 55// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 56/// \brief\author Aaa 57@interface Test1(Test1Category) // a category: ObjCCategoryDecl 58// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 59/// \brief\author Aaa 60+ (NSString *)test3:(NSString *)aaa; 61@end 62 63// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 64/// \brief\author Aaa 65@implementation Test1(Test1Category) // a category implementation: ObjCCategoryImplDecl 66+ (NSString *)test3:(NSString *)aaa { 67 return 0; 68} 69@end 70 71// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 72/// \brief\author Aaa 73@protocol TestProto1 // a protocol: ObjCProtocolDecl 74@end 75 76int a; 77 78// expected-warning@+1 {{empty paragraph passed to '\brief' command}} 79/// \brief\author Aaa 80@interface Test4 81@end 82 83int b; 84 85@interface TestReturns1 86/// \returns Aaa 87- (int)test1:(NSString *)aaa; 88 89// expected-warning@+1 {{'\returns' command used in a comment that is attached to a method returning void}} 90/// \returns Aaa 91- (void)test2:(NSString *)aaa; 92@end 93 94// expected-warning@+2 {{parameter 'bbb' not found in the function declaration}} expected-note@+2 {{did you mean 'ccc'?}} 95/// \param aaa Meow. 96/// \param bbb Bbb. 97/// \returns aaa. 98typedef int (^test_param1)(int aaa, int ccc); 99 100// rdar://13094352 101// expected-warning@+2 {{'@method' command should be used in a comment attached to an Objective-C method declaration}} 102@interface I 103/*! @method Base64EncodeEx 104*/ 105typedef id ID; 106- (unsigned) Base64EncodeEx : (ID)Arg; 107@end 108 109// rdar://12379114 110// expected-warning@+5 {{'@interface' command should not be used in a comment attached to a non-interface declaration}} 111// expected-warning@+5 {{'@classdesign' command should not be used in a comment attached to a non-container declaration}} 112// expected-warning@+5 {{'@coclass' command should not be used in a comment attached to a non-container declaration}} 113@interface NSObject @end 114/*! 115@interface IOCommandGate 116@classdesign Multiple paragraphs go here. 117@coclass myCoClass 118*/ 119 120typedef id OBJ; 121@interface IOCommandGate : NSObject { 122 OBJ iv; 123} 124@end 125 126// expected-warning@+2 {{'@protocol' command should not be used in a comment attached to a non-protocol declaration}} 127/*! 128@protocol PROTO 129*/ 130struct S; 131 132/*! 133 @interface NSArray This is an array 134*/ 135@class NSArray; 136@interface NSArray @end 137 138/*! 139@interface NSMutableArray 140@super NSArray 141*/ 142@interface NSMutableArray : NSArray @end 143 144/*! 145 @protocol MyProto 146*/ 147@protocol MyProto @end 148 149// expected-warning@+2 {{'@protocol' command should not be used in a comment attached to a non-protocol declaration}} 150/*! 151 @protocol MyProto 152*/ 153@interface INTF <MyProto> @end 154 155// expected-warning@+2 {{'@struct' command should not be used in a comment attached to a non-struct declaration}} 156/*! 157 @struct S1 THIS IS IT 158*/ 159@interface S1 @end 160