warn-documentation-fixits.cpp revision 0089bc4ddee6bb309ad25f4c7ad4b7ffe5df4512
1// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -verify %s 2// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s 3 4// expected-warning@+1 {{parameter 'ZZZZZZZZZZ' not found in the function declaration}} expected-note@+1 {{did you mean 'a'?}} 5/// \param ZZZZZZZZZZ Blah blah. 6int test1(int a); 7 8// expected-warning@+1 {{parameter 'aab' not found in the function declaration}} expected-note@+1 {{did you mean 'aaa'?}} 9/// \param aab Blah blah. 10int test2(int aaa, int bbb); 11 12// expected-warning@+1 {{template parameter 'ZZZZZZZZZZ' not found in the template declaration}} expected-note@+1 {{did you mean 'T'?}} 13/// \tparam ZZZZZZZZZZ Aaa 14template<typename T> 15void test3(T aaa); 16 17// expected-warning@+1 {{template parameter 'SomTy' not found in the template declaration}} expected-note@+1 {{did you mean 'SomeTy'?}} 18/// \tparam SomTy Aaa 19/// \tparam OtherTy Bbb 20template<typename SomeTy, typename OtherTy> 21void test4(SomeTy aaa, OtherTy bbb); 22 23// expected-warning@+1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note@+2 {{add a deprecation attribute to the declaration to silence this warning}} 24/// \deprecated 25void test_deprecated_1(); 26 27// expected-warning@+1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note@+2 {{add a deprecation attribute to the declaration to silence this warning}} 28/// \deprecated 29void test_deprecated_2(int a); 30 31struct test_deprecated_3 { 32 // expected-warning@+1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note@+2 {{add a deprecation attribute to the declaration to silence this warning}} 33 /// \deprecated 34 void test_deprecated_4(); 35 36 // expected-warning@+1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note@+2 {{add a deprecation attribute to the declaration to silence this warning}} 37 /// \deprecated 38 void test_deprecated_5() { 39 } 40}; 41 42template<typename T> 43struct test_deprecated_6 { 44 // expected-warning@+1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note@+2 {{add a deprecation attribute to the declaration to silence this warning}} 45 /// \deprecated 46 void test_deprecated_7(); 47 48 // expected-warning@+1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note@+2 {{add a deprecation attribute to the declaration to silence this warning}} 49 /// \deprecated 50 void test_deprecated_8() { 51 } 52}; 53 54#define MY_ATTR_DEPRECATED __attribute__((deprecated)) 55 56// expected-warning@+1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note@+2 {{add a deprecation attribute to the declaration to silence this warning}} 57/// \deprecated 58void test_deprecated_9(int a); 59 60// rdar://12381408 61// expected-warning@+2 {{unknown command tag name 'retur'; did you mean 'return'?}} 62/// \brief testing fixit 63/// \retur int in FooBar 64int FooBar(); 65 66// CHECK: fix-it:"{{.*}}":{5:12-5:22}:"a" 67// CHECK: fix-it:"{{.*}}":{9:12-9:15}:"aaa" 68// CHECK: fix-it:"{{.*}}":{13:13-13:23}:"T" 69// CHECK: fix-it:"{{.*}}":{18:13-18:18}:"SomeTy" 70// CHECK: fix-it:"{{.*}}":{25:25-25:25}:" __attribute__((deprecated))" 71// CHECK: fix-it:"{{.*}}":{29:30-29:30}:" __attribute__((deprecated))" 72// CHECK: fix-it:"{{.*}}":{34:27-34:27}:" __attribute__((deprecated))" 73// CHECK: fix-it:"{{.*}}":{38:27-38:27}:" __attribute__((deprecated))" 74// CHECK: fix-it:"{{.*}}":{46:27-46:27}:" __attribute__((deprecated))" 75// CHECK: fix-it:"{{.*}}":{50:27-50:27}:" __attribute__((deprecated))" 76// CHECK: fix-it:"{{.*}}":{58:30-58:30}:" MY_ATTR_DEPRECATED" 77// CHECK: fix-it:"{{.*}}":{63:6-63:11}:"return" 78