1 | // RUN: %check_clang_tidy %s bugprone-argument-comment %t -- \ |
2 | // RUN: -config="{CheckOptions: { \ |
3 | // RUN: bugprone-argument-comment.IgnoreSingleArgument: true, \ |
4 | // RUN: bugprone-argument-comment.CommentBoolLiterals: true, \ |
5 | // RUN: bugprone-argument-comment.CommentIntegerLiterals: true, \ |
6 | // RUN: bugprone-argument-comment.CommentFloatLiterals: true, \ |
7 | // RUN: bugprone-argument-comment.CommentUserDefinedLiterals: true, \ |
8 | // RUN: bugprone-argument-comment.CommentStringLiterals: true, \ |
9 | // RUN: bugprone-argument-comment.CommentNullPtrs: true, \ |
10 | // RUN: bugprone-argument-comment.CommentCharacterLiterals: true}}" -- |
11 | |
12 | struct A { |
13 | void foo(bool abc); |
14 | void foo(bool abc, bool cde); |
15 | void foo(const char *, bool abc); |
16 | void foo(int iabc); |
17 | void foo(float fabc); |
18 | void foo(double dabc); |
19 | void foo(const char *strabc); |
20 | void fooW(const wchar_t *wstrabc); |
21 | void fooPtr(A *ptrabc); |
22 | void foo(char chabc); |
23 | }; |
24 | |
25 | #define FOO 1 |
26 | |
27 | void g(int a); |
28 | void h(double b); |
29 | void i(const char *c); |
30 | |
31 | double operator"" _km(long double); |
32 | |
33 | void test() { |
34 | A a; |
35 | |
36 | a.foo(abc: true); |
37 | |
38 | a.foo(abc: false); |
39 | |
40 | a.foo(abc: true, cde: false); |
41 | // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment] |
42 | // CHECK-MESSAGES: [[@LINE-2]]:15: warning: argument comment missing for literal argument 'cde' [bugprone-argument-comment] |
43 | // CHECK-FIXES: a.foo(/*abc=*/true, /*cde=*/false); |
44 | |
45 | a.foo(abc: false, cde: true); |
46 | // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment] |
47 | // CHECK-MESSAGES: [[@LINE-2]]:16: warning: argument comment missing for literal argument 'cde' [bugprone-argument-comment] |
48 | // CHECK-FIXES: a.foo(/*abc=*/false, /*cde=*/true); |
49 | |
50 | a.foo(/*abc=*/false, cde: true); |
51 | // CHECK-MESSAGES: [[@LINE-1]]:24: warning: argument comment missing for literal argument 'cde' [bugprone-argument-comment] |
52 | // CHECK-FIXES: a.foo(/*abc=*/false, /*cde=*/true); |
53 | |
54 | a.foo(abc: false, /*cde=*/true); |
55 | // CHECK-MESSAGES: [[@LINE-1]]:9: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment] |
56 | // CHECK-FIXES: a.foo(/*abc=*/false, /*cde=*/true); |
57 | |
58 | bool val1 = true; |
59 | bool val2 = false; |
60 | a.foo(abc: val1, cde: val2); |
61 | |
62 | a.foo("" , abc: true); |
63 | // CHECK-MESSAGES: [[@LINE-1]]:13: warning: argument comment missing for literal argument 'abc' [bugprone-argument-comment] |
64 | // CHECK-FIXES: a.foo("", /*abc=*/true); |
65 | |
66 | a.foo(iabc: 0); |
67 | |
68 | a.foo(fabc: 1.0f); |
69 | |
70 | a.foo(dabc: 1.0); |
71 | |
72 | int val3 = 10; |
73 | a.foo(iabc: val3); |
74 | |
75 | float val4 = 10.0; |
76 | a.foo(fabc: val4); |
77 | |
78 | double val5 = 10.0; |
79 | a.foo(dabc: val5); |
80 | |
81 | a.foo(strabc: "Hello World" ); |
82 | |
83 | a.fooW(wstrabc: L"Hello World" ); |
84 | |
85 | a.fooPtr(ptrabc: nullptr); |
86 | |
87 | a.foo(dabc: 402.0_km); |
88 | |
89 | a.foo(chabc: 'A'); |
90 | |
91 | g(FOO); |
92 | |
93 | h(b: 1.0f); |
94 | |
95 | i(__FILE__); |
96 | |
97 | g(a: (1)); |
98 | } |
99 | |
100 | void f(bool _with_underscores_); |
101 | void ignores_underscores() { |
102 | f(with_underscores_: false); |
103 | |
104 | f(with_underscores_: true); |
105 | } |
106 | |