[clang-tools-extra] r284212 - [clang-tidy] Fix readability-braces-around-statements false positive
Marek Kurdej via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 14 01:10:08 PDT 2016
Author: mkurdej
Date: Fri Oct 14 03:10:08 2016
New Revision: 284212
URL: http://llvm.org/viewvc/llvm-project?rev=284212&view=rev
Log:
[clang-tidy] Fix readability-braces-around-statements false positive
Summary:
This fixes a false-positive e.g. when string literals are returned from if statement.
This patch includes as well a small fix to includes and renames of the test suite that collided with the name of the check.
Reviewers: alexfh, hokein
Subscribers: hokein
Tags: #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D25558
Modified:
clang-tools-extra/trunk/clang-tidy/modernize/UseUsingCheck.cpp
clang-tools-extra/trunk/clang-tidy/readability/BracesAroundStatementsCheck.cpp
clang-tools-extra/trunk/unittests/clang-tidy/ReadabilityModuleTest.cpp
Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseUsingCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseUsingCheck.cpp?rev=284212&r1=284211&r2=284212&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseUsingCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseUsingCheck.cpp Fri Oct 14 03:10:08 2016
@@ -8,7 +8,8 @@
//===----------------------------------------------------------------------===//
#include "UseUsingCheck.h"
-#include "../utils/LexerUtils.h"
+#include "clang/AST/ASTContext.h"
+#include "clang/Lex/Lexer.h"
using namespace clang::ast_matchers;
Modified: clang-tools-extra/trunk/clang-tidy/readability/BracesAroundStatementsCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/BracesAroundStatementsCheck.cpp?rev=284212&r1=284211&r2=284212&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/BracesAroundStatementsCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/BracesAroundStatementsCheck.cpp Fri Oct 14 03:10:08 2016
@@ -61,7 +61,7 @@ SourceLocation findEndLocation(SourceLoc
bool SkipEndWhitespaceAndComments = true;
tok::TokenKind TokKind = getTokenKind(Loc, SM, Context);
if (TokKind == tok::NUM_TOKENS || TokKind == tok::semi ||
- TokKind == tok::r_brace) {
+ TokKind == tok::r_brace || isStringLiteral(TokKind)) {
// If we are at ";" or "}", we found the last token. We could use as well
// `if (isa<NullStmt>(S))`, but it wouldn't work for nested statements.
SkipEndWhitespaceAndComments = false;
Modified: clang-tools-extra/trunk/unittests/clang-tidy/ReadabilityModuleTest.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clang-tidy/ReadabilityModuleTest.cpp?rev=284212&r1=284211&r2=284212&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/clang-tidy/ReadabilityModuleTest.cpp (original)
+++ clang-tools-extra/trunk/unittests/clang-tidy/ReadabilityModuleTest.cpp Fri Oct 14 03:10:08 2016
@@ -15,9 +15,9 @@ TEST(NamespaceCommentCheckTest, Basic) {
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} }"));
+ EXPECT_EQ("namespace i { namespace j {\n} // namespace j\n } // namespace i",
+ runCheckOnCode<NamespaceCommentCheck>(
+ "namespace i { namespace j {\n} }"));
}
TEST(NamespaceCommentCheckTest, SingleLineNamespaces) {
@@ -49,10 +49,11 @@ TEST(NamespaceCommentCheckTest, CheckExi
"} // 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 q {\n"
+ "} // namespace q",
+ runCheckOnCode<NamespaceCommentCheck>("namespace q {\n"
+ "} // anonymous namespace q"));
EXPECT_EQ(
"namespace My_NameSpace123 {\n"
"} // namespace My_NameSpace123",
@@ -97,7 +98,7 @@ TEST(NamespaceCommentCheckTest, FixWrong
"} // random text"));
}
-TEST(BracesAroundStatementsCheck, IfWithComments) {
+TEST(BracesAroundStatementsCheckTest, IfWithComments) {
EXPECT_EQ("int main() {\n"
" if (false /*dummy token*/) {\n"
" // comment\n"
@@ -134,7 +135,7 @@ TEST(BracesAroundStatementsCheck, IfWith
"}"));
}
-TEST(BracesAroundStatementsCheck, If) {
+TEST(BracesAroundStatementsCheckTest, If) {
EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
" if (false) {\n"
" return -1;\n"
@@ -235,7 +236,7 @@ TEST(BracesAroundStatementsCheck, If) {
"}"));
}
-TEST(BracesAroundStatementsCheck, IfElseWithShortStatements) {
+TEST(BracesAroundStatementsCheckTest, IfElseWithShortStatements) {
ClangTidyOptions Options;
Options.CheckOptions["test-check-0.ShortStatementLines"] = "1";
@@ -269,7 +270,7 @@ TEST(BracesAroundStatementsCheck, IfElse
nullptr, "input.cc", None, Options));
}
-TEST(BracesAroundStatementsCheck, For) {
+TEST(BracesAroundStatementsCheckTest, For) {
EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
" for (;;) {\n"
" ;\n"
@@ -304,7 +305,7 @@ TEST(BracesAroundStatementsCheck, For) {
"}"));
}
-TEST(BracesAroundStatementsCheck, ForRange) {
+TEST(BracesAroundStatementsCheckTest, ForRange) {
EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
" int arr[4];\n"
" for (int i : arr) {\n"
@@ -329,7 +330,7 @@ TEST(BracesAroundStatementsCheck, ForRan
"}"));
}
-TEST(BracesAroundStatementsCheck, DoWhile) {
+TEST(BracesAroundStatementsCheckTest, DoWhile) {
EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
" do {\n"
" ;\n"
@@ -347,7 +348,7 @@ TEST(BracesAroundStatementsCheck, DoWhil
"}"));
}
-TEST(BracesAroundStatementsCheck, While) {
+TEST(BracesAroundStatementsCheckTest, While) {
EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
" while (false) {\n"
" ;\n"
@@ -411,7 +412,7 @@ TEST(BracesAroundStatementsCheck, While)
"}"));
}
-TEST(BracesAroundStatementsCheck, Nested) {
+TEST(BracesAroundStatementsCheckTest, Nested) {
EXPECT_EQ("int main() {\n"
" do { if (true) {}} while (false);\n"
"}",
@@ -446,7 +447,7 @@ TEST(BracesAroundStatementsCheck, Nested
"}"));
}
-TEST(BracesAroundStatementsCheck, Macros) {
+TEST(BracesAroundStatementsCheckTest, Macros) {
EXPECT_NO_CHANGES(BracesAroundStatementsCheck,
"#define IF(COND) if (COND) return -1;\n"
"int main() {\n"
@@ -480,6 +481,19 @@ TEST(BracesAroundStatementsCheck, Macros
"}"));
}
+#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";
+
+ EXPECT_NO_CHANGES_WITH_OPTS(BracesAroundStatementsCheck, Opts,
+ "const char *f() {\n"
+ " if (true) return \"\";\n"
+ " return \"abc\";\n"
+ "}\n");
+}
+
} // namespace test
} // namespace tidy
} // namespace clang
More information about the cfe-commits
mailing list