xref: /llvm-project/clang-tools-extra/test/clang-tidy/checkers/bugprone/suspicious-missing-comma.cpp (revision 89a1d03e2b379e325daa5249411e414bbd995b5e)
1*89a1d03eSRichard // RUN: %check_clang_tidy %s bugprone-suspicious-missing-comma %t
2*89a1d03eSRichard 
3*89a1d03eSRichard const char* Cartoons[] = {
4*89a1d03eSRichard   "Bugs Bunny",
5*89a1d03eSRichard   "Homer Simpson",
6*89a1d03eSRichard   "Mickey Mouse",
7*89a1d03eSRichard   "Bart Simpson",
8*89a1d03eSRichard   "Charlie Brown"  // There is a missing comma here.
9*89a1d03eSRichard   "Fred Flintstone",
10*89a1d03eSRichard   "Popeye",
11*89a1d03eSRichard };
12*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: suspicious string literal, probably missing a comma [bugprone-suspicious-missing-comma]
13*89a1d03eSRichard 
14*89a1d03eSRichard const wchar_t* Colors[] = {
15*89a1d03eSRichard   L"Red", L"Yellow", L"Blue", L"Green", L"Purple", L"Rose", L"White", L"Black"
16*89a1d03eSRichard };
17*89a1d03eSRichard 
18*89a1d03eSRichard // The following array should not trigger any warnings. There is more than 5
19*89a1d03eSRichard // elements, but they are all concatenated string literals.
20*89a1d03eSRichard const char* HttpCommands[] = {
21*89a1d03eSRichard   "GET / HTTP/1.0\r\n"
22*89a1d03eSRichard   "\r\n",
23*89a1d03eSRichard 
24*89a1d03eSRichard   "GET /index.html HTTP/1.0\r\n"
25*89a1d03eSRichard   "\r\n",
26*89a1d03eSRichard 
27*89a1d03eSRichard   "GET /favicon.ico HTTP/1.0\r\n"
28*89a1d03eSRichard   "header: dummy"
29*89a1d03eSRichard   "\r\n",
30*89a1d03eSRichard 
31*89a1d03eSRichard   "GET /index.html-en HTTP/1.0\r\n"
32*89a1d03eSRichard   "\r\n",
33*89a1d03eSRichard 
34*89a1d03eSRichard   "GET /index.html-fr HTTP/1.0\r\n"
35*89a1d03eSRichard   "\r\n",
36*89a1d03eSRichard 
37*89a1d03eSRichard   "GET /index.html-es HTTP/1.0\r\n"
38*89a1d03eSRichard   "\r\n",
39*89a1d03eSRichard };
40*89a1d03eSRichard 
41*89a1d03eSRichard // This array is too small to trigger a warning.
42*89a1d03eSRichard const char* SmallArray[] = {
43*89a1d03eSRichard   "a" "b", "c"
44*89a1d03eSRichard };
45*89a1d03eSRichard 
46*89a1d03eSRichard // Parentheses should be enough to avoid warnings.
47*89a1d03eSRichard const char* ParentheseArray[] = {
48*89a1d03eSRichard   ("a" "b"), "c",
49*89a1d03eSRichard   ("d"
50*89a1d03eSRichard    "e"
51*89a1d03eSRichard    "f"),
52*89a1d03eSRichard   "g", "h", "i", "j", "k", "l"
53*89a1d03eSRichard };
54*89a1d03eSRichard 
55*89a1d03eSRichard // Indentation should be enough to avoid warnings.
56*89a1d03eSRichard const char* CorrectlyIndentedArray[] = {
57*89a1d03eSRichard   "This is a long message "
58*89a1d03eSRichard       "which is spanning over multiple lines."
59*89a1d03eSRichard       "And this should be fine.",
60*89a1d03eSRichard   "a", "b", "c", "d", "e", "f",
61*89a1d03eSRichard   "g", "h", "i", "j", "k", "l"
62*89a1d03eSRichard };
63*89a1d03eSRichard 
64*89a1d03eSRichard const char* IncorrectlyIndentedArray[] = {
65*89a1d03eSRichard   "This is a long message "
66*89a1d03eSRichard   "which is spanning over multiple lines."
67*89a1d03eSRichard       "And this should be fine.",
68*89a1d03eSRichard   "a", "b", "c", "d", "e", "f",
69*89a1d03eSRichard   "g", "h", "i", "j", "k", "l"
70*89a1d03eSRichard };
71*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-6]]:3: warning: suspicious string literal, probably missing a comma [bugprone-suspicious-missing-comma]
72*89a1d03eSRichard 
73*89a1d03eSRichard const char* TooManyConcatenatedTokensArray[] = {
74*89a1d03eSRichard   "Dummy line",
75*89a1d03eSRichard   "Dummy line",
76*89a1d03eSRichard   "a" "b" "c" "d" "e" "f",
77*89a1d03eSRichard   "g" "h" "i" "j" "k" "l",
78*89a1d03eSRichard   "Dummy line",
79*89a1d03eSRichard   "Dummy line",
80*89a1d03eSRichard   "Dummy line",
81*89a1d03eSRichard   "Dummy line",
82*89a1d03eSRichard };
83