518 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			518 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C++
		
	
	
	
| #include "ClangTidyTest.h"
 | |
| #include "readability/BracesAroundStatementsCheck.h"
 | |
| #include "readability/NamespaceCommentCheck.h"
 | |
| #include "readability/SimplifyBooleanExprCheck.h"
 | |
| #include "gtest/gtest.h"
 | |
| 
 | |
| namespace clang {
 | |
| namespace tidy {
 | |
| namespace test {
 | |
| 
 | |
| using readability::BracesAroundStatementsCheck;
 | |
| using readability::NamespaceCommentCheck;
 | |
| using readability::SimplifyBooleanExprCheck;
 | |
| 
 | |
| TEST(NamespaceCommentCheckTest, Basic) {
 | |
|   EXPECT_EQ("namespace i {\n} // namespace i",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace i {\n}"));
 | |
|   EXPECT_EQ("namespace {\n} // namespace",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n}"));
 | |
|   EXPECT_EQ("namespace i { namespace j {\n} // namespace j\n } // namespace i",
 | |
|             runCheckOnCode<NamespaceCommentCheck>(
 | |
|                 "namespace i { namespace j {\n} }"));
 | |
| }
 | |
| 
 | |
| TEST(NamespaceCommentCheckTest, SingleLineNamespaces) {
 | |
|   EXPECT_EQ(
 | |
|       "namespace i { namespace j { } }",
 | |
|       runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j { } }"));
 | |
| }
 | |
| 
 | |
| TEST(NamespaceCommentCheckTest, CheckExistingComments) {
 | |
|   EXPECT_EQ("namespace i { namespace j {\n"
 | |
|             "} /* namespace j */ } // namespace i\n"
 | |
|             " /* random comment */",
 | |
|             runCheckOnCode<NamespaceCommentCheck>(
 | |
|                 "namespace i { namespace j {\n"
 | |
|                 "} /* namespace j */ } /* random comment */"));
 | |
|   EXPECT_EQ("namespace {\n"
 | |
|             "} // namespace",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
 | |
|                                                   "} // namespace"));
 | |
|   EXPECT_EQ("namespace {\n"
 | |
|             "} //namespace",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
 | |
|                                                   "} //namespace"));
 | |
|   EXPECT_EQ("namespace {\n"
 | |
|             "} // anonymous namespace",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
 | |
|                                                   "} // anonymous namespace"));
 | |
|   EXPECT_EQ("namespace {\n"
 | |
|             "} // Anonymous namespace.",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
 | |
|                                                   "} // Anonymous namespace."));
 | |
|   EXPECT_EQ(
 | |
|       "namespace q {\n"
 | |
|       "} // namespace q",
 | |
|       runCheckOnCode<NamespaceCommentCheck>("namespace q {\n"
 | |
|                                             "} // anonymous namespace q"));
 | |
|   EXPECT_EQ(
 | |
|       "namespace My_NameSpace123 {\n"
 | |
|       "} // namespace My_NameSpace123",
 | |
|       runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n"
 | |
|                                             "} // namespace My_NameSpace123"));
 | |
|   EXPECT_EQ(
 | |
|       "namespace My_NameSpace123 {\n"
 | |
|       "} //namespace My_NameSpace123",
 | |
|       runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n"
 | |
|                                             "} //namespace My_NameSpace123"));
 | |
|   EXPECT_EQ("namespace My_NameSpace123 {\n"
 | |
|             "} //  end namespace   My_NameSpace123",
 | |
|             runCheckOnCode<NamespaceCommentCheck>(
 | |
|                 "namespace My_NameSpace123 {\n"
 | |
|                 "} //  end namespace   My_NameSpace123"));
 | |
|   // Understand comments only on the same line.
 | |
|   EXPECT_EQ("namespace {\n"
 | |
|             "} // namespace\n"
 | |
|             "// namespace",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
 | |
|                                                   "}\n"
 | |
|                                                   "// namespace"));
 | |
| }
 | |
| 
 | |
| TEST(NamespaceCommentCheckTest, FixWrongComments) {
 | |
|   EXPECT_EQ("namespace i { namespace jJ0_ {\n"
 | |
|             "} // namespace jJ0_\n"
 | |
|             " } // namespace i\n"
 | |
|             " /* random comment */",
 | |
|             runCheckOnCode<NamespaceCommentCheck>(
 | |
|                 "namespace i { namespace jJ0_ {\n"
 | |
|                 "} /* namespace qqq */ } /* random comment */"));
 | |
|   EXPECT_EQ("namespace {\n"
 | |
|             "} // namespace",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
 | |
|                                                   "} // namespace asdf"));
 | |
|   // Remove unknown line comments. These are likely to be an unrecognized form
 | |
|   // of a namespace ending comment.
 | |
|   EXPECT_EQ("namespace {\n"
 | |
|             "} // namespace",
 | |
|             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
 | |
|                                                   "} // random text"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, IfWithComments) {
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (false /*dummy token*/) {\n"
 | |
|             "    // comment\n"
 | |
|             "    return -1; /**/\n"
 | |
|             "}\n"
 | |
|             "  if (false) {\n"
 | |
|             "    return -1; // comment\n"
 | |
|             "}\n"
 | |
|             "  if (false) {\n"
 | |
|             "    return -1; \n"
 | |
|             "}/* multi-line \n comment */\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  if (false /*dummy token*/)\n"
 | |
|                 "    // comment\n"
 | |
|                 "    return -1; /**/\n"
 | |
|                 "  if (false)\n"
 | |
|                 "    return -1; // comment\n"
 | |
|                 "  if (false)\n"
 | |
|                 "    return -1; /* multi-line \n comment */\n"
 | |
|                 "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (false /*dummy token*/) {\n"
 | |
|             "    // comment\n"
 | |
|             "    return -1 /**/ ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  if (false /*dummy token*/)\n"
 | |
|                 "    // comment\n"
 | |
|                 "    return -1 /**/ ;\n"
 | |
|                 "}"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, If) {
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
 | |
|                                                  "  if (false) {\n"
 | |
|                                                  "    return -1;\n"
 | |
|                                                  "  }\n"
 | |
|                                                  "}");
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
 | |
|                                                  "  if (auto Cond = false) {\n"
 | |
|                                                  "    return -1;\n"
 | |
|                                                  "  }\n"
 | |
|                                                  "}");
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
 | |
|                                                  "  if (false) {\n"
 | |
|                                                  "    return -1;\n"
 | |
|                                                  "  } else {\n"
 | |
|                                                  "    return -2;\n"
 | |
|                                                  "  }\n"
 | |
|                                                  "}");
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (false) {\n"
 | |
|             "    return -1;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  if (false)\n"
 | |
|                                                         "    return -1;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (auto Cond = false /**/ ) {\n"
 | |
|             "    return -1;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  if (auto Cond = false /**/ )\n"
 | |
|                 "    return -1;\n"
 | |
|                 "}"));
 | |
|   // FIXME: Consider adding braces before EMPTY_MACRO and after the statement.
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck,
 | |
|                     "#define EMPTY_MACRO\n"
 | |
|                     "int main() {\n"
 | |
|                     "  if (auto Cond = false EMPTY_MACRO /**/ ) EMPTY_MACRO\n"
 | |
|                     "    return -1;\n"
 | |
|                     "}");
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (true) { return -1/**/ ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  if (true) return -1/**/ ;\n"
 | |
|                 "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (false) {\n"
 | |
|             "    return -1;\n"
 | |
|             "  } else {\n"
 | |
|             "    return -2;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  if (false)\n"
 | |
|                                                         "    return -1;\n"
 | |
|                                                         "  else\n"
 | |
|                                                         "    return -2;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (false) {\n"
 | |
|             "    return -1;\n"
 | |
|             "  } else if (1 == 2) {\n"
 | |
|             "    return -2;\n"
 | |
|             "  } else {\n"
 | |
|             "    return -3;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  if (false)\n"
 | |
|                                                         "    return -1;\n"
 | |
|                                                         "  else if (1 == 2)\n"
 | |
|                                                         "    return -2;\n"
 | |
|                                                         "  else\n"
 | |
|                                                         "    return -3;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (false) {\n"
 | |
|             "    return -1;\n"
 | |
|             "  } else if (1 == 2) {\n"
 | |
|             "    return -2;\n"
 | |
|             "  } else {\n"
 | |
|             "    return -3;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  if (false)\n"
 | |
|                                                         "    return -1;\n"
 | |
|                                                         "  else if (1 == 2) {\n"
 | |
|                                                         "    return -2;\n"
 | |
|                                                         "  } else\n"
 | |
|                                                         "    return -3;\n"
 | |
|                                                         "}"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, IfElseWithShortStatements) {
 | |
|   ClangTidyOptions Options;
 | |
|   Options.CheckOptions["test-check-0.ShortStatementLines"] = "1";
 | |
| 
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (true) return 1;\n"
 | |
|             "  if (false) { return -1;\n"
 | |
|             "  } else if (1 == 2) { return -2;\n"
 | |
|             "  } else { return -3;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  if (true) return 1;\n"
 | |
|                 "  if (false) return -1;\n"
 | |
|                 "  else if (1 == 2) return -2;\n"
 | |
|                 "  else return -3;\n"
 | |
|                 "}",
 | |
|                 nullptr, "input.cc", None, Options));
 | |
| 
 | |
|   // If the last else is an else-if, we also force it.
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  if (false) { return -1;\n"
 | |
|             "  } else if (1 == 2) { return -2;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  if (false) return -1;\n"
 | |
|                 "  else if (1 == 2) return -2;\n"
 | |
|                 "}",
 | |
|                 nullptr, "input.cc", None, Options));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, For) {
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
 | |
|                                                  "  for (;;) {\n"
 | |
|                                                  "    ;\n"
 | |
|                                                  "  }\n"
 | |
|                                                  "}");
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  for (;;) {\n"
 | |
|             "    ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  for (;;)\n"
 | |
|                                                         "    ;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  for (;;) {\n"
 | |
|             "    /**/ ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  for (;;)\n"
 | |
|                                                         "    /**/ ;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  for (;;) {\n"
 | |
|             "    return -1 /**/ ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  for (;;)\n"
 | |
|                                                         "    return -1 /**/ ;\n"
 | |
|                                                         "}"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, ForRange) {
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
 | |
|                                                  "  int arr[4];\n"
 | |
|                                                  "  for (int i : arr) {\n"
 | |
|                                                  "    ;\n"
 | |
|                                                  "  }\n"
 | |
|                                                  "}");
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  int arr[4];\n"
 | |
|             "  for (int i : arr) {\n"
 | |
|             "    ;\n"
 | |
|             "}\n"
 | |
|             "  for (int i : arr) {\n"
 | |
|             "    return -1 ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  int arr[4];\n"
 | |
|                                                         "  for (int i : arr)\n"
 | |
|                                                         "    ;\n"
 | |
|                                                         "  for (int i : arr)\n"
 | |
|                                                         "    return -1 ;\n"
 | |
|                                                         "}"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, DoWhile) {
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
 | |
|                                                  "  do {\n"
 | |
|                                                  "    ;\n"
 | |
|                                                  "  } while (false);\n"
 | |
|                                                  "}");
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  do {\n"
 | |
|             "    ;\n"
 | |
|             "  } while (false);\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  do\n"
 | |
|                                                         "    ;\n"
 | |
|                                                         "  while (false);\n"
 | |
|                                                         "}"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, While) {
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
 | |
|                                                  "  while (false) {\n"
 | |
|                                                  "    ;\n"
 | |
|                                                  "  }\n"
 | |
|                                                  "}");
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  while (false) {\n"
 | |
|             "    ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  while (false)\n"
 | |
|                                                         "    ;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  while (auto Cond = false) {\n"
 | |
|             "    ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  while (auto Cond = false)\n"
 | |
|                 "    ;\n"
 | |
|                 "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  while (false /*dummy token*/) {\n"
 | |
|             "    ;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  while (false /*dummy token*/)\n"
 | |
|                 "    ;\n"
 | |
|                 "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  while (false) {\n"
 | |
|             "    break;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  while (false)\n"
 | |
|                                                         "    break;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  while (false) {\n"
 | |
|             "    break /**/;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  while (false)\n"
 | |
|                                                         "    break /**/;\n"
 | |
|                                                         "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  while (false) {\n"
 | |
|             "    /**/;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                         "  while (false)\n"
 | |
|                                                         "    /**/;\n"
 | |
|                                                         "}"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, Nested) {
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  do { if (true) {}} while (false);\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  do if (true) {}while (false);\n"
 | |
|                 "}"));
 | |
|   EXPECT_EQ("int main() {\n"
 | |
|             "  do { if (true) {}} while (false);\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(
 | |
|                 "int main() {\n"
 | |
|                 "  do if (true) {}while (false);\n"
 | |
|                 "}"));
 | |
|   EXPECT_EQ(
 | |
|       "int main() {\n"
 | |
|       "  if (true) {\n"
 | |
|       "    // comment\n"
 | |
|       "    if (false) {\n"
 | |
|       "      // comment\n"
 | |
|       "      /**/ ; // comment\n"
 | |
|       "    }\n"
 | |
|       "}\n"
 | |
|       "}",
 | |
|       runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
 | |
|                                                   "  if (true)\n"
 | |
|                                                   "    // comment\n"
 | |
|                                                   "    if (false) {\n"
 | |
|                                                   "      // comment\n"
 | |
|                                                   "      /**/ ; // comment\n"
 | |
|                                                   "    }\n"
 | |
|                                                   "}"));
 | |
| }
 | |
| 
 | |
| TEST(BracesAroundStatementsCheckTest, Macros) {
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck,
 | |
|                     "#define IF(COND) if (COND) return -1;\n"
 | |
|                     "int main() {\n"
 | |
|                     "  IF(false)\n"
 | |
|                     "}");
 | |
|   EXPECT_NO_CHANGES(BracesAroundStatementsCheck,
 | |
|                     "#define FOR(COND) for (COND) return -1;\n"
 | |
|                     "int main() {\n"
 | |
|                     "  FOR(;;)\n"
 | |
|                     "}");
 | |
|   EXPECT_EQ("#define DO_IT ++i\n"
 | |
|             "int i = 0;\n"
 | |
|             "int main() {\n"
 | |
|             "  if (false) {\n"
 | |
|             "    DO_IT;\n"
 | |
|             "  } else if (1 == 2) {\n"
 | |
|             "    DO_IT;\n"
 | |
|             "  } else {\n"
 | |
|             "    DO_IT;\n"
 | |
|             "}\n"
 | |
|             "}",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>("#define DO_IT ++i\n"
 | |
|                                                         "int i = 0;\n"
 | |
|                                                         "int main() {\n"
 | |
|                                                         "  if (false)\n"
 | |
|                                                         "    DO_IT;\n"
 | |
|                                                         "  else if (1 == 2)\n"
 | |
|                                                         "    DO_IT;\n"
 | |
|                                                         "  else\n"
 | |
|                                                         "    DO_IT;\n"
 | |
|                                                         "}"));
 | |
| }
 | |
| 
 | |
| #define EXPECT_NO_CHANGES_WITH_OPTS(Check, Opts, Code)                         \
 | |
|   EXPECT_EQ(Code, runCheckOnCode<Check>(Code, nullptr, "input.cc", None, Opts))
 | |
| TEST(BracesAroundStatementsCheckTest, ImplicitCastInReturn) {
 | |
|   ClangTidyOptions Opts;
 | |
|   Opts.CheckOptions["test-check-0.ShortStatementLines"] = "1";
 | |
| 
 | |
|   StringRef Input = "const char *f() {\n"
 | |
|                     "  if (true) return \"\";\n"
 | |
|                     "  return \"abc\";\n"
 | |
|                     "}\n";
 | |
|   EXPECT_NO_CHANGES_WITH_OPTS(BracesAroundStatementsCheck, Opts, Input);
 | |
|   EXPECT_EQ("const char *f() {\n"
 | |
|             "  if (true) { return \"\";\n"
 | |
|             "}\n"
 | |
|             "  return \"abc\";\n"
 | |
|             "}\n",
 | |
|             runCheckOnCode<BracesAroundStatementsCheck>(Input));
 | |
| }
 | |
| 
 | |
| TEST(SimplifyBooleanExprCheckTest, CodeWithError) {
 | |
|   // Fixes PR55557
 | |
|   // Need to downgrade Wreturn-type from error as runCheckOnCode will fatal_exit
 | |
|   // if any errors occur.
 | |
|   EXPECT_EQ("void foo(bool b){ return b; }",
 | |
|             runCheckOnCode<SimplifyBooleanExprCheck>(
 | |
|                 "void foo(bool b){ if (b) return true; return false; }",
 | |
|                 nullptr, "input.cc", {"-Wno-error=return-type"}));
 | |
| }
 | |
| 
 | |
| } // namespace test
 | |
| } // namespace tidy
 | |
| } // namespace clang
 |