blob: 8dc5bf150fa322b837d42f2e4ed7077567e944fa [file] [log] [blame]
// RUN: %check_clang_tidy %s readability-braces-around-statements %t
void do_something(const char *) {}
bool cond(const char *) {
return false;
}
#define EMPTY_MACRO
#define EMPTY_MACRO_FUN()
void test() {
if (cond("if0") /*comment*/) do_something("same-line");
// CHECK-MESSAGES: :[[@LINE-1]]:31: warning: statement should be inside braces
// CHECK-FIXES: if (cond("if0") /*comment*/) { do_something("same-line");
// CHECK-FIXES: }
if (cond("if0.1"))
do_something("single-line");
// CHECK-MESSAGES: :[[@LINE-2]]:21: warning: statement should be inside braces
// CHECK-FIXES: if (cond("if0.1")) {
// CHECK-FIXES: }
if (cond("if1") /*comment*/)
// some comment
do_something("if1");
// CHECK-MESSAGES: :[[@LINE-3]]:31: warning: statement should be inside braces
// CHECK-FIXES: if (cond("if1") /*comment*/) {
// CHECK-FIXES: }
if (cond("if2")) {
do_something("if2");
}
if (cond("if3"))
;
// CHECK-MESSAGES: :[[@LINE-2]]:19: warning: statement should be inside braces
// CHECK-FIXES: if (cond("if3")) {
// CHECK-FIXES: }
if (cond("if-else1"))
do_something("if-else1");
// CHECK-MESSAGES: :[[@LINE-2]]:24: warning: statement should be inside braces
// CHECK-FIXES: if (cond("if-else1")) {
// CHECK-FIXES: } else {
else
do_something("if-else1 else");
// CHECK-MESSAGES: :[[@LINE-2]]:7: warning: statement should be inside braces
// CHECK-FIXES: }
if (cond("if-else2")) {
do_something("if-else2");
} else {
do_something("if-else2 else");
}
if (cond("if-else if-else1"))
do_something("if");
// CHECK-MESSAGES: :[[@LINE-2]]:32: warning: statement should be inside braces
// CHECK-FIXES: } else if (cond("else if1")) {
else if (cond("else if1"))
do_something("else if");
// CHECK-MESSAGES: :[[@LINE-2]]:29: warning: statement should be inside braces
else
do_something("else");
// CHECK-MESSAGES: :[[@LINE-2]]:7: warning: statement should be inside braces
// CHECK-FIXES: }
if (cond("if-else if-else2")) {
do_something("if");
} else if (cond("else if2")) {
do_something("else if");
} else {
do_something("else");
}
for (;;)
do_something("for");
// CHECK-MESSAGES: :[[@LINE-2]]:11: warning: statement should be inside braces
// CHECK-FIXES: for (;;) {
// CHECK-FIXES: }
for (;;) {
do_something("for");
}
for (;;)
;
// CHECK-MESSAGES: :[[@LINE-2]]:11: warning: statement should be inside braces
// CHECK-FIXES: for (;;) {
// CHECK-FIXES: }
int arr[4] = {1, 2, 3, 4};
for (int a : arr)
do_something("for-range");
// CHECK-MESSAGES: :[[@LINE-2]]:20: warning: statement should be inside braces
// CHECK-FIXES: for (int a : arr) {
// CHECK-FIXES: }
for (int a : arr) {
do_something("for-range");
}
for (int a : arr)
;
// CHECK-MESSAGES: :[[@LINE-2]]:20: warning: statement should be inside braces
// CHECK-FIXES: for (int a : arr) {
// CHECK-FIXES: }
while (cond("while1"))
do_something("while");
// CHECK-MESSAGES: :[[@LINE-2]]:25: warning: statement should be inside braces
// CHECK-FIXES: while (cond("while1")) {
// CHECK-FIXES: }
while (cond("while2")) {
do_something("while");
}
while (false)
;
// CHECK-MESSAGES: :[[@LINE-2]]:16: warning: statement should be inside braces
// CHECK-FIXES: while (false) {
// CHECK-FIXES: }
do
do_something("do1");
while (cond("do1"));
// CHECK-MESSAGES: :[[@LINE-3]]:5: warning: statement should be inside braces
// CHECK-FIXES: do {
// CHECK-FIXES: } while (cond("do1"));
do {
do_something("do2");
} while (cond("do2"));
do
;
while (false);
// CHECK-MESSAGES: :[[@LINE-3]]:5: warning: statement should be inside braces
// CHECK-FIXES: do {
// CHECK-FIXES: } while (false);
if (cond("ifif1"))
// comment
if (cond("ifif2"))
// comment
/*comment*/ ; // comment
// CHECK-MESSAGES: :[[@LINE-5]]:21: warning: statement should be inside braces
// CHECK-MESSAGES: :[[@LINE-4]]:23: warning: statement should be inside braces
// CHECK-FIXES: if (cond("ifif1")) {
// CHECK-FIXES: if (cond("ifif2")) {
// CHECK-FIXES: }
// CHECK-FIXES-NEXT: }
if (cond("ifif3"))
// comment
if (cond("ifif4")) {
// comment
/*comment*/; // comment
}
// CHECK-MESSAGES: :[[@LINE-6]]:21: warning: statement should be inside braces
// CHECK-FIXES: if (cond("ifif3")) {
// CHECK-FIXES: }
if (cond("ifif5"))
; /* multi-line
comment */
// CHECK-MESSAGES: :[[@LINE-3]]:21: warning: statement should be inside braces
// CHECK-FIXES: if (cond("ifif5")) {
// CHECK-FIXES: }/* multi-line
if (1) while (2) if (3) for (;;) do ; while(false) /**/;/**/
// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: statement should be inside braces
// CHECK-MESSAGES: :[[@LINE-2]]:19: warning: statement should be inside braces
// CHECK-MESSAGES: :[[@LINE-3]]:26: warning: statement should be inside braces
// CHECK-MESSAGES: :[[@LINE-4]]:35: warning: statement should be inside braces
// CHECK-MESSAGES: :[[@LINE-5]]:38: warning: statement should be inside braces
// CHECK-FIXES: if (1) { while (2) { if (3) { for (;;) { do { ; } while(false) /**/;/**/
// CHECK-FIXES-NEXT: }
// CHECK-FIXES-NEXT: }
// CHECK-FIXES-NEXT: }
// CHECK-FIXES-NEXT: }
}
void f(const char *p) {
if (!p)
f("\
");
} // end of f
// CHECK-MESSAGES: :[[@LINE-4]]:10: warning: statement should be inside braces
// CHECK-FIXES: {{^}} if (!p) {{{$}}
// CHECK-FIXES-NEXT: {{^}} f("\{{$}}
// CHECK-FIXES-NEXT: {{^}}");{{$}}
// CHECK-FIXES-NEXT: {{^}}}{{$}}
// CHECK-FIXES-NEXT: {{^}}} // end of f{{$}}
#define M(x) x
int test_macros(bool b) {
if (b) {
return 1;
} else
M(return 2);
// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: statement should be inside braces
// CHECK-FIXES: } else {
// CHECK-FIXES-NEXT: M(return 2);
// CHECK-FIXES-NEXT: }
M(
for (;;)
;
);
// CHECK-MESSAGES: :[[@LINE-3]]:13: warning: statement should be inside braces
// CHECK-FIXES: {{^}} for (;;) {{{$}}
// CHECK-FIXES-NEXT: {{^ ;$}}
// CHECK-FIXES-NEXT: {{^}$}}
}