brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · f03488a Raw
188 lines · cpp
1// RUN: %check_clang_tidy %s bugprone-argument-comment %t -- \2// RUN:   -config="{CheckOptions: { \3// RUN:     bugprone-argument-comment.CommentBoolLiterals: true, \4// RUN:     bugprone-argument-comment.CommentIntegerLiterals: true, \5// RUN:     bugprone-argument-comment.CommentFloatLiterals: true, \6// RUN:     bugprone-argument-comment.CommentUserDefinedLiterals: true, \7// RUN:     bugprone-argument-comment.CommentStringLiterals: true, \8// RUN:     bugprone-argument-comment.CommentNullPtrs: true, \9// RUN:     bugprone-argument-comment.CommentCharacterLiterals: true}}" --10 11struct A {12  void foo(bool abc);13  void foo(bool abc, bool cde);14  void foo(const char *, bool abc);15  void foo(int iabc);16  void foo(float fabc);17  void foo(double dabc);18  void foo(const char *strabc);19  void fooW(const wchar_t *wstrabc);20  void fooPtr(A *ptrabc);21  void foo(char chabc);22};23 24#define FOO 125#define X(x) (x)26 27void g(int a);28void h(double b);29void i(const char *c);30void j(int a, int b, int c);31 32double operator"" _km(long double value);33 34void test() {35  A a;36 37  a.foo(true);38  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment]39  // CHECK-FIXES: a.foo(/*abc=*/true);40 41  a.foo(false);42  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment]43  // CHECK-FIXES: a.foo(/*abc=*/false);44 45  a.foo(true, false);46  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment]47  // CHECK-MESSAGES: [[@LINE-2]]:15: warning: argument comment missing for literal argument 'cde' [bugprone-argument-comment]48  // CHECK-FIXES: a.foo(/*abc=*/true, /*cde=*/false);49 50  a.foo(false, true);51  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment]52  // CHECK-MESSAGES: [[@LINE-2]]:16: warning: argument comment missing for literal argument 'cde' [bugprone-argument-comment]53  // CHECK-FIXES: a.foo(/*abc=*/false, /*cde=*/true);54 55  a.foo(/*abc=*/false, true);56  // CHECK-MESSAGES: [[@LINE-1]]:24: warning: argument comment missing for literal argument 'cde' [bugprone-argument-comment]57  // CHECK-FIXES: a.foo(/*abc=*/false, /*cde=*/true);58 59  a.foo(false, /*cde=*/true);60  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment]61  // CHECK-FIXES: a.foo(/*abc=*/false, /*cde=*/true);62 63  bool val1 = true;64  bool val2 = false;65  a.foo(val1, val2);66 67  a.foo("", true);68  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment]69  // CHECK-FIXES: a.foo("", /*abc=*/true);70 71  a.foo(0);72  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'iabc' [bugprone-argument-comment]73  // CHECK-FIXES: a.foo(/*iabc=*/0);74 75  a.foo(1.0f);76  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'fabc' [bugprone-argument-comment]77  // CHECK-FIXES: a.foo(/*fabc=*/1.0f);78 79  a.foo(-1.0f);80  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'fabc' [bugprone-argument-comment]81  // CHECK-FIXES: a.foo(/*fabc=*/-1.0f);82 83  a.foo(1.0);84  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'dabc' [bugprone-argument-comment]85  // CHECK-FIXES: a.foo(/*dabc=*/1.0);86 87  a.foo(-1.0);88  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'dabc' [bugprone-argument-comment]89  // CHECK-FIXES: a.foo(/*dabc=*/-1.0);90 91  int val3 = 10;92  a.foo(val3);93  a.foo(-val3);94 95  float val4 = 10.0;96  a.foo(val4);97  a.foo(-val4);98 99  double val5 = 10.0;100  a.foo(val5);101  a.foo(-val5);102 103  a.foo("Hello World");104  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'strabc' [bugprone-argument-comment]105  // CHECK-FIXES: a.foo(/*strabc=*/"Hello World");106  //107  a.fooW(L"Hello World");108  // CHECK-MESSAGES: [[@LINE-1]]:10: warning: argument comment missing for literal argument 'wstrabc' [bugprone-argument-comment]109  // CHECK-FIXES: a.fooW(/*wstrabc=*/L"Hello World");110 111  a.fooPtr(nullptr);112  // CHECK-MESSAGES: [[@LINE-1]]:12: warning: argument comment missing for literal argument 'ptrabc' [bugprone-argument-comment]113  // CHECK-FIXES: a.fooPtr(/*ptrabc=*/nullptr);114 115  a.foo(402.0_km);116  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'dabc' [bugprone-argument-comment]117  // CHECK-FIXES: a.foo(/*dabc=*/402.0_km);118 119  a.foo(-402.0_km);120  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'dabc' [bugprone-argument-comment]121  // CHECK-FIXES: a.foo(/*dabc=*/-402.0_km);122 123  a.foo('A');124  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'chabc' [bugprone-argument-comment]125  // CHECK-FIXES: a.foo(/*chabc=*/'A');126 127  g(FOO);128  g(-FOO);129  h(1.0f);130  // CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]131  // CHECK-FIXES: h(/*b=*/1.0f);132  h(-1.0f);133  // CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]134  // CHECK-FIXES: h(/*b=*/-1.0f);135  i(__FILE__);136 137  j(1, X(1), X(1));138  // CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'a' [bugprone-argument-comment]139  // CHECK-FIXES: j(/*a=*/1, X(1), X(1));140  j(/*a=*/1, X(1), X(1));141 142  j(X(1), 1, X(1));143  // CHECK-MESSAGES: [[@LINE-1]]:11: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]144  // CHECK-FIXES: j(X(1), /*b=*/1, X(1));145  j(X(1), /*b=*/1, X(1));146 147  j(X(1), X(1), 1);148  // CHECK-MESSAGES: [[@LINE-1]]:17: warning: argument comment missing for literal argument 'c' [bugprone-argument-comment]149  // CHECK-FIXES: j(X(1), X(1), /*c=*/1);150  j(X(1), X(1), /*c=*/1);151 152  j(X(1), 1, 1);153  // CHECK-MESSAGES: [[@LINE-1]]:11: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]154  // CHECK-MESSAGES: [[@LINE-2]]:14: warning: argument comment missing for literal argument 'c' [bugprone-argument-comment]155  // CHECK-FIXES: j(X(1), /*b=*/1, /*c=*/1);156  j(X(1), /*b=*/1, /*c=*/1);157 158  j(1, X(1), 1);159  // CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'a' [bugprone-argument-comment]160  // CHECK-MESSAGES: [[@LINE-2]]:14: warning: argument comment missing for literal argument 'c' [bugprone-argument-comment]161  // CHECK-FIXES: j(/*a=*/1, X(1), /*c=*/1);162  j(/*a=*/1, X(1), /*c=*/1);163 164  j(1, 1, X(1));165  // CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'a' [bugprone-argument-comment]166  // CHECK-MESSAGES: [[@LINE-2]]:8: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]167  // CHECK-FIXES: j(/*a=*/1, /*b=*/1, X(1));168  j(/*a=*/1, /*b=*/1, X(1));169 170  // FIXME Would like the below to add argument comments.171  g((1));172  // FIXME But we should not add argument comments here.173  g(_Generic(0, int : 0));174 175  402.0_km;176}177 178void f(bool _with_underscores_);179void ignores_underscores() {180  f(false);181  // CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument '_with_underscores_' [bugprone-argument-comment]182  // CHECK-FIXES: f(/*_with_underscores_=*/false);183 184  f(true);185  // CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument186  // CHECK-FIXES: f(/*_with_underscores_=*/true);187}188