[clang-tools-extra] r326327 - Rename a few checks from misc- to bugprone-.
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 28 06:47:20 PST 2018
Author: alexfh
Date: Wed Feb 28 06:47:20 2018
New Revision: 326327
URL: http://llvm.org/viewvc/llvm-project?rev=326327&view=rev
Log:
Rename a few checks from misc- to bugprone-.
Summary:
rename_check.py {misc,bugprone}-forwarding-reference-overload
rename_check.py {misc,bugprone}-macro-repeated-side-effects
rename_check.py {misc,bugprone}-lambda-function-name
rename_check.py {misc,bugprone}-misplaced-widening-cast
Reviewers: hokein, sammccall, aaron.ballman
Reviewed By: aaron.ballman
Subscribers: klimek, cfe-commits, mgorny
Differential Revision: https://reviews.llvm.org/D43867
Added:
clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp
clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.h
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h
clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp
clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.h
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h
clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.h
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h
clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp
clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.h
- copied, changed from r326321, clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h
clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-forwarding-reference-overload.rst
- copied, changed from r326321, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-lambda-function-name.rst
- copied, changed from r326321, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-macro-repeated-side-effects.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-misplaced-widening-cast.rst
- copied, changed from r326321, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst
clang-tools-extra/trunk/test/clang-tidy/bugprone-forwarding-reference-overload.cpp
- copied, changed from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp
clang-tools-extra/trunk/test/clang-tidy/bugprone-lambda-function-name.cpp
- copied, changed from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp
clang-tools-extra/trunk/test/clang-tidy/bugprone-macro-repeated-side-effects.c
- copied, changed from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c
clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp
- copied, changed from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp
clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-implicit-enabled.cpp
- copied, changed from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp
Removed:
clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp
clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h
clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp
clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h
clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h
clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp
clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h
clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst
clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp
clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp
clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c
clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp
clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp
Modified:
clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp
clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp
clang-tools-extra/trunk/docs/ReleaseNotes.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
Modified: clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp?rev=326327&r1=326326&r2=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp Wed Feb 28 06:47:20 2018
@@ -17,10 +17,14 @@
#include "DanglingHandleCheck.h"
#include "FoldInitTypeCheck.h"
#include "ForwardDeclarationNamespaceCheck.h"
+#include "ForwardingReferenceOverloadCheck.h"
#include "InaccurateEraseCheck.h"
#include "IncorrectRoundingsCheck.h"
#include "IntegerDivisionCheck.h"
+#include "LambdaFunctionNameCheck.h"
+#include "MacroRepeatedSideEffectsCheck.h"
#include "MisplacedOperatorInStrlenInAllocCheck.h"
+#include "MisplacedWideningCastCheck.h"
#include "MoveForwardingReferenceCheck.h"
#include "MultipleStatementMacroCheck.h"
#include "StringConstructorCheck.h"
@@ -51,14 +55,22 @@ public:
"bugprone-fold-init-type");
CheckFactories.registerCheck<ForwardDeclarationNamespaceCheck>(
"bugprone-forward-declaration-namespace");
+ CheckFactories.registerCheck<ForwardingReferenceOverloadCheck>(
+ "bugprone-forwarding-reference-overload");
CheckFactories.registerCheck<InaccurateEraseCheck>(
"bugprone-inaccurate-erase");
CheckFactories.registerCheck<IncorrectRoundingsCheck>(
"bugprone-incorrect-roundings");
CheckFactories.registerCheck<IntegerDivisionCheck>(
"bugprone-integer-division");
+ CheckFactories.registerCheck<LambdaFunctionNameCheck>(
+ "bugprone-lambda-function-name");
+ CheckFactories.registerCheck<MacroRepeatedSideEffectsCheck>(
+ "bugprone-macro-repeated-side-effects");
CheckFactories.registerCheck<MisplacedOperatorInStrlenInAllocCheck>(
"bugprone-misplaced-operator-in-strlen-in-alloc");
+ CheckFactories.registerCheck<MisplacedWideningCastCheck>(
+ "bugprone-misplaced-widening-cast");
CheckFactories.registerCheck<MoveForwardingReferenceCheck>(
"bugprone-move-forwarding-reference");
CheckFactories.registerCheck<MultipleStatementMacroCheck>(
Modified: clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt?rev=326327&r1=326326&r2=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt Wed Feb 28 06:47:20 2018
@@ -9,10 +9,14 @@ add_clang_library(clangTidyBugproneModul
DanglingHandleCheck.cpp
FoldInitTypeCheck.cpp
ForwardDeclarationNamespaceCheck.cpp
+ ForwardingReferenceOverloadCheck.cpp
InaccurateEraseCheck.cpp
IncorrectRoundingsCheck.cpp
IntegerDivisionCheck.cpp
+ LambdaFunctionNameCheck.cpp
+ MacroRepeatedSideEffectsCheck.cpp
MisplacedOperatorInStrlenInAllocCheck.cpp
+ MisplacedWideningCastCheck.cpp
MoveForwardingReferenceCheck.cpp
MultipleStatementMacroCheck.cpp
StringConstructorCheck.cpp
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp (from r326321, clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp?p2=clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp&p1=clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp Wed Feb 28 06:47:20 2018
@@ -16,7 +16,7 @@ using namespace clang::ast_matchers;
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
namespace {
// Check if the given type is related to std::enable_if.
@@ -143,6 +143,6 @@ void ForwardingReferenceOverloadCheck::c
}
}
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.h (from r326321, clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.h?p2=clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.h&p1=clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.h Wed Feb 28 06:47:20 2018
@@ -7,14 +7,14 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_FORWARDING_REFERENCE_OVERLOAD_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_FORWARDING_REFERENCE_OVERLOAD_H
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_FORWARDINGREFERENCEOVERLOADCHECK_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_FORWARDINGREFERENCEOVERLOADCHECK_H
#include "../ClangTidy.h"
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
/// The checker looks for constructors that can act as copy or move constructors
/// through their forwarding reference parameters. If a non const lvalue
@@ -26,7 +26,7 @@ namespace misc {
/// C++ Design, item 26.
///
/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/misc-forwarding-reference-overload.html
+/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone-forwarding-reference-overload.html
class ForwardingReferenceOverloadCheck : public ClangTidyCheck {
public:
ForwardingReferenceOverloadCheck(StringRef Name, ClangTidyContext *Context)
@@ -35,8 +35,8 @@ public:
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
};
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_FORWARDING_REFERENCE_OVERLOAD_H
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_FORWARDINGREFERENCEOVERLOADCHECK_H
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp (from r326321, clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp?p2=clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp&p1=clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp Wed Feb 28 06:47:20 2018
@@ -18,7 +18,7 @@ using namespace clang::ast_matchers;
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
namespace {
@@ -94,6 +94,6 @@ void LambdaFunctionNameCheck::check(cons
<< PredefinedExpr::getIdentTypeName(E->getIdentType());
}
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.h (from r326321, clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.h?p2=clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.h&p1=clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/LambdaFunctionNameCheck.h Wed Feb 28 06:47:20 2018
@@ -7,21 +7,21 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_LAMBDA_FUNCTION_NAME_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_LAMBDA_FUNCTION_NAME_H
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_LAMBDAFUNCTIONNAMECHECK_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_LAMBDAFUNCTIONNAMECHECK_H
#include "../ClangTidy.h"
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
/// Detect when __func__ or __FUNCTION__ is being used from within a lambda. In
/// that context, those expressions expand to the name of the call operator
/// (i.e., `operator()`).
///
/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/misc-lambda-function-name.html
+/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone-lambda-function-name.html
class LambdaFunctionNameCheck : public ClangTidyCheck {
public:
struct SourceRangeLessThan {
@@ -44,8 +44,8 @@ private:
SourceRangeSet SuppressMacroExpansions;
};
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_LAMBDA_FUNCTION_NAME_H
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_LAMBDAFUNCTIONNAMECHECK_H
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp (from r326321, clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp?p2=clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp&p1=clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp Wed Feb 28 06:47:20 2018
@@ -15,7 +15,7 @@
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
namespace {
class MacroRepeatedPPCallbacks : public PPCallbacks {
@@ -179,6 +179,6 @@ void MacroRepeatedSideEffectsCheck::regi
*this, Compiler.getPreprocessor()));
}
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.h (from r326321, clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.h?p2=clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.h&p1=clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.h Wed Feb 28 06:47:20 2018
@@ -7,14 +7,14 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MACRO_REPEATED_SIDE_EFFECTS_CHECK_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MACRO_REPEATED_SIDE_EFFECTS_CHECK_H
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_MACROREPEATEDSIDEEFFECTSCHECK_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_MACROREPEATEDSIDEEFFECTSCHECK_H
#include "../ClangTidy.h"
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
/// Checks for repeated argument with side effects in macros.
class MacroRepeatedSideEffectsCheck : public ClangTidyCheck {
@@ -24,8 +24,8 @@ public:
void registerPPCallbacks(CompilerInstance &Compiler) override;
};
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MACRO_REPEATED_SIDE_EFFECTS_CHECK_H
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_MACROREPEATEDSIDEEFFECTSCHECK_H
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp (from r326321, clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp?p2=clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp&p1=clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp Wed Feb 28 06:47:20 2018
@@ -16,7 +16,7 @@ using namespace clang::ast_matchers;
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
MisplacedWideningCastCheck::MisplacedWideningCastCheck(
StringRef Name, ClangTidyContext *Context)
@@ -228,6 +228,6 @@ void MisplacedWideningCastCheck::check(c
<< CalcType << CastType;
}
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
Copied: clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.h (from r326321, clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.h?p2=clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.h&p1=clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/MisplacedWideningCastCheck.h Wed Feb 28 06:47:20 2018
@@ -7,14 +7,14 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISPLACED_WIDENING_CAST_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISPLACED_WIDENING_CAST_H
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_MISPLACEDWIDENINGCASTCHECK_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_MISPLACEDWIDENINGCASTCHECK_H
#include "../ClangTidy.h"
namespace clang {
namespace tidy {
-namespace misc {
+namespace bugprone {
/// Find casts of calculation results to bigger type. Typically from int to
/// long. If the intention of the cast is to avoid loss of precision then
@@ -27,7 +27,7 @@ namespace misc {
// be the most common case. Enabled by default.
///
/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/misc-misplaced-widening-cast.html
+/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone-misplaced-widening-cast.html
class MisplacedWideningCastCheck : public ClangTidyCheck {
public:
MisplacedWideningCastCheck(StringRef Name, ClangTidyContext *Context);
@@ -39,7 +39,7 @@ private:
const bool CheckImplicitCasts;
};
-} // namespace misc
+} // namespace bugprone
} // namespace tidy
} // namespace clang
Modified: clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt?rev=326327&r1=326326&r2=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt Wed Feb 28 06:47:20 2018
@@ -1,15 +1,11 @@
set(LLVM_LINK_COMPONENTS support)
add_clang_library(clangTidyMiscModule
- ForwardingReferenceOverloadCheck.cpp
- LambdaFunctionNameCheck.cpp
MisplacedConstCheck.cpp
UnconventionalAssignOperatorCheck.cpp
DefinitionsInHeadersCheck.cpp
MacroParenthesesCheck.cpp
- MacroRepeatedSideEffectsCheck.cpp
MiscTidyModule.cpp
- MisplacedWideningCastCheck.cpp
NewDeleteOverloadsCheck.cpp
NonCopyableObjects.cpp
RedundantExpressionCheck.cpp
Removed: clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp (removed)
@@ -1,148 +0,0 @@
-//===--- ForwardingReferenceOverloadCheck.cpp - clang-tidy-----------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "ForwardingReferenceOverloadCheck.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include <algorithm>
-
-using namespace clang::ast_matchers;
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-namespace {
-// Check if the given type is related to std::enable_if.
-AST_MATCHER(QualType, isEnableIf) {
- auto CheckTemplate = [](const TemplateSpecializationType *Spec) {
- if (!Spec || !Spec->getTemplateName().getAsTemplateDecl()) {
- return false;
- }
- const NamedDecl *TypeDecl =
- Spec->getTemplateName().getAsTemplateDecl()->getTemplatedDecl();
- return TypeDecl->isInStdNamespace() &&
- (TypeDecl->getName().equals("enable_if") ||
- TypeDecl->getName().equals("enable_if_t"));
- };
- const Type *BaseType = Node.getTypePtr();
- // Case: pointer or reference to enable_if.
- while (BaseType->isPointerType() || BaseType->isReferenceType()) {
- BaseType = BaseType->getPointeeType().getTypePtr();
- }
- // Case: type parameter dependent (enable_if<is_integral<T>>).
- if (const auto *Dependent = BaseType->getAs<DependentNameType>()) {
- BaseType = Dependent->getQualifier()->getAsType();
- }
- if (!BaseType)
- return false;
- if (CheckTemplate(BaseType->getAs<TemplateSpecializationType>())) {
- return true; // Case: enable_if_t< >.
- } else if (const auto *Elaborated = BaseType->getAs<ElaboratedType>()) {
- if (const auto *Qualifier = Elaborated->getQualifier()->getAsType()) {
- if (CheckTemplate(Qualifier->getAs<TemplateSpecializationType>())) {
- return true; // Case: enable_if< >::type.
- }
- }
- }
- return false;
-}
-AST_MATCHER_P(TemplateTypeParmDecl, hasDefaultArgument,
- clang::ast_matchers::internal::Matcher<QualType>, TypeMatcher) {
- return Node.hasDefaultArgument() &&
- TypeMatcher.matches(Node.getDefaultArgument(), Finder, Builder);
-}
-} // namespace
-
-void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) {
- // Forwarding references require C++11 or later.
- if (!getLangOpts().CPlusPlus11)
- return;
-
- auto ForwardingRefParm =
- parmVarDecl(
- hasType(qualType(rValueReferenceType(),
- references(templateTypeParmType(hasDeclaration(
- templateTypeParmDecl().bind("type-parm-decl")))),
- unless(references(isConstQualified())))))
- .bind("parm-var");
-
- DeclarationMatcher findOverload =
- cxxConstructorDecl(
- hasParameter(0, ForwardingRefParm),
- unless(hasAnyParameter(
- // No warning: enable_if as constructor parameter.
- parmVarDecl(hasType(isEnableIf())))),
- unless(hasParent(functionTemplateDecl(has(templateTypeParmDecl(
- // No warning: enable_if as type parameter.
- hasDefaultArgument(isEnableIf())))))))
- .bind("ctor");
- Finder->addMatcher(findOverload, this);
-}
-
-void ForwardingReferenceOverloadCheck::check(
- const MatchFinder::MatchResult &Result) {
- const auto *ParmVar = Result.Nodes.getNodeAs<ParmVarDecl>("parm-var");
- const auto *TypeParmDecl =
- Result.Nodes.getNodeAs<TemplateTypeParmDecl>("type-parm-decl");
-
- // Get the FunctionDecl and FunctionTemplateDecl containing the function
- // parameter.
- const auto *FuncForParam = dyn_cast<FunctionDecl>(ParmVar->getDeclContext());
- if (!FuncForParam)
- return;
- const FunctionTemplateDecl *FuncTemplate =
- FuncForParam->getDescribedFunctionTemplate();
- if (!FuncTemplate)
- return;
-
- // Check that the template type parameter belongs to the same function
- // template as the function parameter of that type. (This implies that type
- // deduction will happen on the type.)
- const TemplateParameterList *Params = FuncTemplate->getTemplateParameters();
- if (std::find(Params->begin(), Params->end(), TypeParmDecl) == Params->end())
- return;
-
- // Every parameter after the first must have a default value.
- const auto *Ctor = Result.Nodes.getNodeAs<CXXConstructorDecl>("ctor");
- for (auto Iter = Ctor->param_begin() + 1; Iter != Ctor->param_end(); ++Iter) {
- if (!(*Iter)->hasDefaultArg())
- return;
- }
- bool EnabledCopy = false, DisabledCopy = false, EnabledMove = false,
- DisabledMove = false;
- for (const auto *OtherCtor : Ctor->getParent()->ctors()) {
- if (OtherCtor->isCopyOrMoveConstructor()) {
- if (OtherCtor->isDeleted() || OtherCtor->getAccess() == AS_private)
- (OtherCtor->isCopyConstructor() ? DisabledCopy : DisabledMove) = true;
- else
- (OtherCtor->isCopyConstructor() ? EnabledCopy : EnabledMove) = true;
- }
- }
- bool Copy = (!EnabledMove && !DisabledMove && !DisabledCopy) || EnabledCopy;
- bool Move = !DisabledMove || EnabledMove;
- if (!Copy && !Move)
- return;
- diag(Ctor->getLocation(),
- "constructor accepting a forwarding reference can "
- "hide the %select{copy|move|copy and move}0 constructor%s1")
- << (Copy && Move ? 2 : (Copy ? 0 : 1)) << Copy + Move;
- for (const auto *OtherCtor : Ctor->getParent()->ctors()) {
- if (OtherCtor->isCopyOrMoveConstructor() && !OtherCtor->isDeleted() &&
- OtherCtor->getAccess() != AS_private) {
- diag(OtherCtor->getLocation(),
- "%select{copy|move}0 constructor declared here", DiagnosticIDs::Note)
- << OtherCtor->isMoveConstructor();
- }
- }
-}
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
Removed: clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/ForwardingReferenceOverloadCheck.h (removed)
@@ -1,42 +0,0 @@
-//===--- ForwardingReferenceOverloadCheck.h - clang-tidy---------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_FORWARDING_REFERENCE_OVERLOAD_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_FORWARDING_REFERENCE_OVERLOAD_H
-
-#include "../ClangTidy.h"
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-/// The checker looks for constructors that can act as copy or move constructors
-/// through their forwarding reference parameters. If a non const lvalue
-/// reference is passed to the constructor, the forwarding reference parameter
-/// can be a perfect match while the const reference parameter of the copy
-/// constructor can't. The forwarding reference constructor will be called,
-/// which can lead to confusion.
-/// For detailed description of this problem see: Scott Meyers, Effective Modern
-/// C++ Design, item 26.
-///
-/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/misc-forwarding-reference-overload.html
-class ForwardingReferenceOverloadCheck : public ClangTidyCheck {
-public:
- ForwardingReferenceOverloadCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
- void registerMatchers(ast_matchers::MatchFinder *Finder) override;
- void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
-};
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
-
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_FORWARDING_REFERENCE_OVERLOAD_H
Removed: clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.cpp (removed)
@@ -1,99 +0,0 @@
-//===--- LambdaFunctionNameCheck.cpp - clang-tidy--------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "LambdaFunctionNameCheck.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Lex/MacroInfo.h"
-#include "clang/Lex/Preprocessor.h"
-
-using namespace clang::ast_matchers;
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-namespace {
-
-// Keep track of macro expansions that contain both __FILE__ and __LINE__. If
-// such a macro also uses __func__ or __FUNCTION__, we don't want to issue a
-// warning because __FILE__ and __LINE__ may be useful even if __func__ or
-// __FUNCTION__ is not, especially if the macro could be used in the context of
-// either a function body or a lambda body.
-class MacroExpansionsWithFileAndLine : public PPCallbacks {
-public:
- explicit MacroExpansionsWithFileAndLine(
- LambdaFunctionNameCheck::SourceRangeSet *SME)
- : SuppressMacroExpansions(SME) {}
-
- void MacroExpands(const Token &MacroNameTok,
- const MacroDefinition &MD, SourceRange Range,
- const MacroArgs *Args) override {
- bool has_file = false;
- bool has_line = false;
- for (const auto& T : MD.getMacroInfo()->tokens()) {
- if (T.is(tok::identifier)) {
- StringRef IdentName = T.getIdentifierInfo()->getName();
- if (IdentName == "__FILE__") {
- has_file = true;
- } else if (IdentName == "__LINE__") {
- has_line = true;
- }
- }
- }
- if (has_file && has_line) {
- SuppressMacroExpansions->insert(Range);
- }
- }
-
-private:
- LambdaFunctionNameCheck::SourceRangeSet* SuppressMacroExpansions;
-};
-
-} // namespace
-
-void LambdaFunctionNameCheck::registerMatchers(MatchFinder *Finder) {
- // Match on PredefinedExprs inside a lambda.
- Finder->addMatcher(predefinedExpr(hasAncestor(lambdaExpr())).bind("E"),
- this);
-}
-
-void LambdaFunctionNameCheck::registerPPCallbacks(CompilerInstance &Compiler) {
- Compiler.getPreprocessor().addPPCallbacks(
- llvm::make_unique<MacroExpansionsWithFileAndLine>(
- &SuppressMacroExpansions));
-}
-
-void LambdaFunctionNameCheck::check(const MatchFinder::MatchResult &Result) {
- const auto *E = Result.Nodes.getNodeAs<PredefinedExpr>("E");
- if (E->getIdentType() != PredefinedExpr::Func &&
- E->getIdentType() != PredefinedExpr::Function) {
- // We don't care about other PredefinedExprs.
- return;
- }
- if (E->getLocation().isMacroID()) {
- auto ER =
- Result.SourceManager->getImmediateExpansionRange(E->getLocation());
- if (SuppressMacroExpansions.find(SourceRange(ER.first, ER.second)) !=
- SuppressMacroExpansions.end()) {
- // This is a macro expansion for which we should not warn.
- return;
- }
- }
- diag(E->getLocation(),
- "inside a lambda, '%0' expands to the name of the function call "
- "operator; consider capturing the name of the enclosing function "
- "explicitly")
- << PredefinedExpr::getIdentTypeName(E->getIdentType());
-}
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
Removed: clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/LambdaFunctionNameCheck.h (removed)
@@ -1,51 +0,0 @@
-//===--- LambdaFunctionNameCheck.h - clang-tidy------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_LAMBDA_FUNCTION_NAME_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_LAMBDA_FUNCTION_NAME_H
-
-#include "../ClangTidy.h"
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-/// Detect when __func__ or __FUNCTION__ is being used from within a lambda. In
-/// that context, those expressions expand to the name of the call operator
-/// (i.e., `operator()`).
-///
-/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/misc-lambda-function-name.html
-class LambdaFunctionNameCheck : public ClangTidyCheck {
-public:
- struct SourceRangeLessThan {
- bool operator()(const SourceRange &L, const SourceRange &R) const {
- if (L.getBegin() == R.getBegin()) {
- return L.getEnd() < R.getEnd();
- }
- return L.getBegin() < R.getBegin();
- }
- };
- using SourceRangeSet = std::set<SourceRange, SourceRangeLessThan>;
-
- LambdaFunctionNameCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
- void registerMatchers(ast_matchers::MatchFinder *Finder) override;
- void registerPPCallbacks(CompilerInstance &Compiler) override;
- void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
-
-private:
- SourceRangeSet SuppressMacroExpansions;
-};
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
-
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_LAMBDA_FUNCTION_NAME_H
Removed: clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp (removed)
@@ -1,184 +0,0 @@
-//===--- MacroRepeatedSideEffectsCheck.cpp - clang-tidy--------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "MacroRepeatedSideEffectsCheck.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Lex/MacroArgs.h"
-#include "clang/Lex/PPCallbacks.h"
-#include "clang/Lex/Preprocessor.h"
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-namespace {
-class MacroRepeatedPPCallbacks : public PPCallbacks {
-public:
- MacroRepeatedPPCallbacks(ClangTidyCheck &Check, Preprocessor &PP)
- : Check(Check), PP(PP) {}
-
- void MacroExpands(const Token &MacroNameTok, const MacroDefinition &MD,
- SourceRange Range, const MacroArgs *Args) override;
-
-private:
- ClangTidyCheck &Check;
- Preprocessor &PP;
-
- unsigned countArgumentExpansions(const MacroInfo *MI,
- const IdentifierInfo *Arg) const;
-
- bool hasSideEffects(const Token *ResultArgToks) const;
-};
-} // End of anonymous namespace.
-
-void MacroRepeatedPPCallbacks::MacroExpands(const Token &MacroNameTok,
- const MacroDefinition &MD,
- SourceRange Range,
- const MacroArgs *Args) {
- // Ignore macro argument expansions.
- if (!Range.getBegin().isFileID())
- return;
-
- const MacroInfo *MI = MD.getMacroInfo();
-
- // Bail out if the contents of the macro are containing keywords that are
- // making the macro too complex.
- if (std::find_if(
- MI->tokens().begin(), MI->tokens().end(), [](const Token &T) {
- return T.isOneOf(tok::kw_if, tok::kw_else, tok::kw_switch,
- tok::kw_case, tok::kw_break, tok::kw_while,
- tok::kw_do, tok::kw_for, tok::kw_continue,
- tok::kw_goto, tok::kw_return);
- }) != MI->tokens().end())
- return;
-
- for (unsigned ArgNo = 0U; ArgNo < MI->getNumParams(); ++ArgNo) {
- const IdentifierInfo *Arg = *(MI->param_begin() + ArgNo);
- const Token *ResultArgToks = Args->getUnexpArgument(ArgNo);
-
- if (hasSideEffects(ResultArgToks) &&
- countArgumentExpansions(MI, Arg) >= 2) {
- Check.diag(ResultArgToks->getLocation(),
- "side effects in the %ordinal0 macro argument %1 are "
- "repeated in macro expansion")
- << (ArgNo + 1) << Arg;
- Check.diag(MI->getDefinitionLoc(), "macro %0 defined here",
- DiagnosticIDs::Note)
- << MacroNameTok.getIdentifierInfo();
- }
- }
-}
-
-unsigned MacroRepeatedPPCallbacks::countArgumentExpansions(
- const MacroInfo *MI, const IdentifierInfo *Arg) const {
- // Current argument count. When moving forward to a different control-flow
- // path this can decrease.
- unsigned Current = 0;
- // Max argument count.
- unsigned Max = 0;
- bool SkipParen = false;
- int SkipParenCount = 0;
- // Has a __builtin_constant_p been found?
- bool FoundBuiltin = false;
- bool PrevTokenIsHash = false;
- // Count when "?" is reached. The "Current" will get this value when the ":"
- // is reached.
- std::stack<unsigned, SmallVector<unsigned, 8>> CountAtQuestion;
- for (const auto &T : MI->tokens()) {
- // The result of __builtin_constant_p(x) is 0 if x is a macro argument
- // with side effects. If we see a __builtin_constant_p(x) followed by a
- // "?" "&&" or "||", then we need to reason about control flow to report
- // warnings correctly. Until such reasoning is added, bail out when this
- // happens.
- if (FoundBuiltin && T.isOneOf(tok::question, tok::ampamp, tok::pipepipe))
- return Max;
-
- // Skip stringified tokens.
- if (T.is(tok::hash)) {
- PrevTokenIsHash = true;
- continue;
- }
- if (PrevTokenIsHash) {
- PrevTokenIsHash = false;
- continue;
- }
-
- // Handling of ? and :.
- if (T.is(tok::question)) {
- CountAtQuestion.push(Current);
- } else if (T.is(tok::colon)) {
- if (CountAtQuestion.empty())
- return 0;
- Current = CountAtQuestion.top();
- CountAtQuestion.pop();
- }
-
- // If current token is a parenthesis, skip it.
- if (SkipParen) {
- if (T.is(tok::l_paren))
- SkipParenCount++;
- else if (T.is(tok::r_paren))
- SkipParenCount--;
- SkipParen = (SkipParenCount != 0);
- if (SkipParen)
- continue;
- }
-
- IdentifierInfo *TII = T.getIdentifierInfo();
- // If not existent, skip it.
- if (TII == nullptr)
- continue;
-
- // If a __builtin_constant_p is found within the macro definition, don't
- // count arguments inside the parentheses and remember that it has been
- // seen in case there are "?", "&&" or "||" operators later.
- if (TII->getBuiltinID() == Builtin::BI__builtin_constant_p) {
- FoundBuiltin = true;
- SkipParen = true;
- continue;
- }
-
- // If another macro is found within the macro definition, skip the macro
- // and the eventual arguments.
- if (TII->hasMacroDefinition()) {
- const MacroInfo *M = PP.getMacroDefinition(TII).getMacroInfo();
- if (M != nullptr && M->isFunctionLike())
- SkipParen = true;
- continue;
- }
-
- // Count argument.
- if (TII == Arg) {
- Current++;
- if (Current > Max)
- Max = Current;
- }
- }
- return Max;
-}
-
-bool MacroRepeatedPPCallbacks::hasSideEffects(
- const Token *ResultArgToks) const {
- for (; ResultArgToks->isNot(tok::eof); ++ResultArgToks) {
- if (ResultArgToks->isOneOf(tok::plusplus, tok::minusminus))
- return true;
- }
- return false;
-}
-
-void MacroRepeatedSideEffectsCheck::registerPPCallbacks(
- CompilerInstance &Compiler) {
- Compiler.getPreprocessor().addPPCallbacks(
- ::llvm::make_unique<MacroRepeatedPPCallbacks>(
- *this, Compiler.getPreprocessor()));
-}
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
Removed: clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/MacroRepeatedSideEffectsCheck.h (removed)
@@ -1,31 +0,0 @@
-//===--- MacroRepeatedSideEffectsCheck.h - clang-tidy -----------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MACRO_REPEATED_SIDE_EFFECTS_CHECK_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MACRO_REPEATED_SIDE_EFFECTS_CHECK_H
-
-#include "../ClangTidy.h"
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-/// Checks for repeated argument with side effects in macros.
-class MacroRepeatedSideEffectsCheck : public ClangTidyCheck {
-public:
- MacroRepeatedSideEffectsCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
- void registerPPCallbacks(CompilerInstance &Compiler) override;
-};
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
-
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MACRO_REPEATED_SIDE_EFFECTS_CHECK_H
Modified: clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp?rev=326327&r1=326326&r2=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp Wed Feb 28 06:47:20 2018
@@ -11,12 +11,8 @@
#include "../ClangTidyModule.h"
#include "../ClangTidyModuleRegistry.h"
#include "DefinitionsInHeadersCheck.h"
-#include "ForwardingReferenceOverloadCheck.h"
-#include "LambdaFunctionNameCheck.h"
#include "MacroParenthesesCheck.h"
-#include "MacroRepeatedSideEffectsCheck.h"
#include "MisplacedConstCheck.h"
-#include "MisplacedWideningCastCheck.h"
#include "NewDeleteOverloadsCheck.h"
#include "NonCopyableObjects.h"
#include "RedundantExpressionCheck.h"
@@ -46,10 +42,6 @@ namespace misc {
class MiscModule : public ClangTidyModule {
public:
void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
- CheckFactories.registerCheck<ForwardingReferenceOverloadCheck>(
- "misc-forwarding-reference-overload");
- CheckFactories.registerCheck<LambdaFunctionNameCheck>(
- "misc-lambda-function-name");
CheckFactories.registerCheck<MisplacedConstCheck>("misc-misplaced-const");
CheckFactories.registerCheck<UnconventionalAssignOperatorCheck>(
"misc-unconventional-assign-operator");
@@ -57,10 +49,6 @@ public:
"misc-definitions-in-headers");
CheckFactories.registerCheck<MacroParenthesesCheck>(
"misc-macro-parentheses");
- CheckFactories.registerCheck<MacroRepeatedSideEffectsCheck>(
- "misc-macro-repeated-side-effects");
- CheckFactories.registerCheck<MisplacedWideningCastCheck>(
- "misc-misplaced-widening-cast");
CheckFactories.registerCheck<NewDeleteOverloadsCheck>(
"misc-new-delete-overloads");
CheckFactories.registerCheck<NonCopyableObjectsCheck>(
Removed: clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.cpp (removed)
@@ -1,233 +0,0 @@
-//===--- MisplacedWideningCastCheck.cpp - clang-tidy-----------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "MisplacedWideningCastCheck.h"
-#include "../utils/Matchers.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-
-using namespace clang::ast_matchers;
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-MisplacedWideningCastCheck::MisplacedWideningCastCheck(
- StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context),
- CheckImplicitCasts(Options.get("CheckImplicitCasts", false)) {}
-
-void MisplacedWideningCastCheck::storeOptions(
- ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "CheckImplicitCasts", CheckImplicitCasts);
-}
-
-void MisplacedWideningCastCheck::registerMatchers(MatchFinder *Finder) {
- const auto Calc =
- expr(anyOf(binaryOperator(
- anyOf(hasOperatorName("+"), hasOperatorName("-"),
- hasOperatorName("*"), hasOperatorName("<<"))),
- unaryOperator(hasOperatorName("~"))),
- hasType(isInteger()))
- .bind("Calc");
-
- const auto ExplicitCast = explicitCastExpr(hasDestinationType(isInteger()),
- has(ignoringParenImpCasts(Calc)));
- const auto ImplicitCast =
- implicitCastExpr(hasImplicitDestinationType(isInteger()),
- has(ignoringParenImpCasts(Calc)));
- const auto Cast = expr(anyOf(ExplicitCast, ImplicitCast)).bind("Cast");
-
- Finder->addMatcher(varDecl(hasInitializer(Cast)), this);
- Finder->addMatcher(returnStmt(hasReturnValue(Cast)), this);
- Finder->addMatcher(callExpr(hasAnyArgument(Cast)), this);
- Finder->addMatcher(binaryOperator(hasOperatorName("="), hasRHS(Cast)), this);
- Finder->addMatcher(
- binaryOperator(matchers::isComparisonOperator(), hasEitherOperand(Cast)),
- this);
-}
-
-static unsigned getMaxCalculationWidth(const ASTContext &Context,
- const Expr *E) {
- E = E->IgnoreParenImpCasts();
-
- if (const auto *Bop = dyn_cast<BinaryOperator>(E)) {
- unsigned LHSWidth = getMaxCalculationWidth(Context, Bop->getLHS());
- unsigned RHSWidth = getMaxCalculationWidth(Context, Bop->getRHS());
- if (Bop->getOpcode() == BO_Mul)
- return LHSWidth + RHSWidth;
- if (Bop->getOpcode() == BO_Add)
- return std::max(LHSWidth, RHSWidth) + 1;
- if (Bop->getOpcode() == BO_Rem) {
- llvm::APSInt Val;
- if (Bop->getRHS()->EvaluateAsInt(Val, Context))
- return Val.getActiveBits();
- } else if (Bop->getOpcode() == BO_Shl) {
- llvm::APSInt Bits;
- if (Bop->getRHS()->EvaluateAsInt(Bits, Context)) {
- // We don't handle negative values and large values well. It is assumed
- // that compiler warnings are written for such values so the user will
- // fix that.
- return LHSWidth + Bits.getExtValue();
- }
-
- // Unknown bitcount, assume there is truncation.
- return 1024U;
- }
- } else if (const auto *Uop = dyn_cast<UnaryOperator>(E)) {
- // There is truncation when ~ is used.
- if (Uop->getOpcode() == UO_Not)
- return 1024U;
-
- QualType T = Uop->getType();
- return T->isIntegerType() ? Context.getIntWidth(T) : 1024U;
- } else if (const auto *I = dyn_cast<IntegerLiteral>(E)) {
- return I->getValue().getActiveBits();
- }
-
- return Context.getIntWidth(E->getType());
-}
-
-static int relativeIntSizes(BuiltinType::Kind Kind) {
- switch (Kind) {
- case BuiltinType::UChar:
- return 1;
- case BuiltinType::SChar:
- return 1;
- case BuiltinType::Char_U:
- return 1;
- case BuiltinType::Char_S:
- return 1;
- case BuiltinType::UShort:
- return 2;
- case BuiltinType::Short:
- return 2;
- case BuiltinType::UInt:
- return 3;
- case BuiltinType::Int:
- return 3;
- case BuiltinType::ULong:
- return 4;
- case BuiltinType::Long:
- return 4;
- case BuiltinType::ULongLong:
- return 5;
- case BuiltinType::LongLong:
- return 5;
- case BuiltinType::UInt128:
- return 6;
- case BuiltinType::Int128:
- return 6;
- default:
- return 0;
- }
-}
-
-static int relativeCharSizes(BuiltinType::Kind Kind) {
- switch (Kind) {
- case BuiltinType::UChar:
- return 1;
- case BuiltinType::SChar:
- return 1;
- case BuiltinType::Char_U:
- return 1;
- case BuiltinType::Char_S:
- return 1;
- case BuiltinType::Char16:
- return 2;
- case BuiltinType::Char32:
- return 3;
- default:
- return 0;
- }
-}
-
-static int relativeCharSizesW(BuiltinType::Kind Kind) {
- switch (Kind) {
- case BuiltinType::UChar:
- return 1;
- case BuiltinType::SChar:
- return 1;
- case BuiltinType::Char_U:
- return 1;
- case BuiltinType::Char_S:
- return 1;
- case BuiltinType::WChar_U:
- return 2;
- case BuiltinType::WChar_S:
- return 2;
- default:
- return 0;
- }
-}
-
-static bool isFirstWider(BuiltinType::Kind First, BuiltinType::Kind Second) {
- int FirstSize, SecondSize;
- if ((FirstSize = relativeIntSizes(First)) != 0 &&
- (SecondSize = relativeIntSizes(Second)) != 0)
- return FirstSize > SecondSize;
- if ((FirstSize = relativeCharSizes(First)) != 0 &&
- (SecondSize = relativeCharSizes(Second)) != 0)
- return FirstSize > SecondSize;
- if ((FirstSize = relativeCharSizesW(First)) != 0 &&
- (SecondSize = relativeCharSizesW(Second)) != 0)
- return FirstSize > SecondSize;
- return false;
-}
-
-void MisplacedWideningCastCheck::check(const MatchFinder::MatchResult &Result) {
- const auto *Cast = Result.Nodes.getNodeAs<CastExpr>("Cast");
- if (!CheckImplicitCasts && isa<ImplicitCastExpr>(Cast))
- return;
- if (Cast->getLocStart().isMacroID())
- return;
-
- const auto *Calc = Result.Nodes.getNodeAs<Expr>("Calc");
- if (Calc->getLocStart().isMacroID())
- return;
-
- if (Cast->isTypeDependent() || Cast->isValueDependent() ||
- Calc->isTypeDependent() || Calc->isValueDependent())
- return;
-
- ASTContext &Context = *Result.Context;
-
- QualType CastType = Cast->getType();
- QualType CalcType = Calc->getType();
-
- // Explicit truncation using cast.
- if (Context.getIntWidth(CastType) < Context.getIntWidth(CalcType))
- return;
-
- // If CalcType and CastType have same size then there is no real danger, but
- // there can be a portability problem.
-
- if (Context.getIntWidth(CastType) == Context.getIntWidth(CalcType)) {
- const auto *CastBuiltinType =
- dyn_cast<BuiltinType>(CastType->getUnqualifiedDesugaredType());
- const auto *CalcBuiltinType =
- dyn_cast<BuiltinType>(CalcType->getUnqualifiedDesugaredType());
- if (CastBuiltinType && CalcBuiltinType &&
- !isFirstWider(CastBuiltinType->getKind(), CalcBuiltinType->getKind()))
- return;
- }
-
- // Don't write a warning if we can easily see that the result is not
- // truncated.
- if (Context.getIntWidth(CalcType) >= getMaxCalculationWidth(Context, Calc))
- return;
-
- diag(Cast->getLocStart(), "either cast from %0 to %1 is ineffective, or "
- "there is loss of precision before the conversion")
- << CalcType << CastType;
-}
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
Removed: clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/MisplacedWideningCastCheck.h (removed)
@@ -1,46 +0,0 @@
-//===--- MisplacedWideningCastCheck.h - clang-tidy---------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISPLACED_WIDENING_CAST_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MISPLACED_WIDENING_CAST_H
-
-#include "../ClangTidy.h"
-
-namespace clang {
-namespace tidy {
-namespace misc {
-
-/// Find casts of calculation results to bigger type. Typically from int to
-/// long. If the intention of the cast is to avoid loss of precision then
-/// the cast is misplaced, and there can be loss of precision. Otherwise
-/// such cast is ineffective.
-///
-/// There is one option:
-///
-/// - `CheckImplicitCasts`: Whether to check implicit casts as well which may
-// be the most common case. Enabled by default.
-///
-/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/misc-misplaced-widening-cast.html
-class MisplacedWideningCastCheck : public ClangTidyCheck {
-public:
- MisplacedWideningCastCheck(StringRef Name, ClangTidyContext *Context);
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
- void registerMatchers(ast_matchers::MatchFinder *Finder) override;
- void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
-
-private:
- const bool CheckImplicitCasts;
-};
-
-} // namespace misc
-} // namespace tidy
-} // namespace clang
-
-#endif
Modified: clang-tools-extra/trunk/docs/ReleaseNotes.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ReleaseNotes.rst?rev=326327&r1=326326&r2=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/ReleaseNotes.rst (original)
+++ clang-tools-extra/trunk/docs/ReleaseNotes.rst Wed Feb 28 06:47:20 2018
@@ -57,6 +57,18 @@ The improvements are...
Improvements to clang-tidy
--------------------------
+- The 'misc-misplaced-widening-cast' check was renamed to `bugprone-misplaced-widening-cast
+ <http://clang.llvm.org/extra/clang-tidy/checks/bugprone-misplaced-widening-cast.html>`_
+
+- The 'misc-lambda-function-name' check was renamed to `bugprone-lambda-function-name
+ <http://clang.llvm.org/extra/clang-tidy/checks/bugprone-lambda-function-name.html>`_
+
+- The 'misc-macro-repeated-side-effects' check was renamed to `bugprone-macro-repeated-side-effects
+ <http://clang.llvm.org/extra/clang-tidy/checks/bugprone-macro-repeated-side-effects.html>`_
+
+- The 'misc-forwarding-reference-overload' check was renamed to `bugprone-forwarding-reference-overload
+ <http://clang.llvm.org/extra/clang-tidy/checks/bugprone-forwarding-reference-overload.html>`_
+
- The 'misc-incorrect-roundings' check was renamed to `bugprone-incorrect-roundings
<http://clang.llvm.org/extra/clang-tidy/checks/bugprone-incorrect-roundings.html>`_
Copied: clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-forwarding-reference-overload.rst (from r326321, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-forwarding-reference-overload.rst?p2=clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-forwarding-reference-overload.rst&p1=clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-forwarding-reference-overload.rst Wed Feb 28 06:47:20 2018
@@ -1,7 +1,7 @@
-.. title:: clang-tidy - misc-forwarding-reference-overload
+.. title:: clang-tidy - bugprone-forwarding-reference-overload
-misc-forwarding-reference-overload
-==================================
+bugprone-forwarding-reference-overload
+======================================
The check looks for perfect forwarding constructors that can hide copy or move
constructors. If a non const lvalue reference is passed to the constructor, the
Copied: clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-lambda-function-name.rst (from r326321, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-lambda-function-name.rst?p2=clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-lambda-function-name.rst&p1=clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-lambda-function-name.rst Wed Feb 28 06:47:20 2018
@@ -1,7 +1,7 @@
-.. title:: clang-tidy - misc-lambda-function-name
+.. title:: clang-tidy - bugprone-lambda-function-name
-misc-lambda-function-name
-=========================
+bugprone-lambda-function-name
+=============================
Checks for attempts to get the name of a function from within a lambda
expression. The name of a lambda is always something like ``operator()``, which
Added: clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-macro-repeated-side-effects.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-macro-repeated-side-effects.rst?rev=326327&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-macro-repeated-side-effects.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-macro-repeated-side-effects.rst Wed Feb 28 06:47:20 2018
@@ -0,0 +1,7 @@
+.. title:: clang-tidy - bugprone-macro-repeated-side-effects
+
+bugprone-macro-repeated-side-effects
+====================================
+
+
+Checks for repeated argument with side effects in macros.
Copied: clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-misplaced-widening-cast.rst (from r326321, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-misplaced-widening-cast.rst?p2=clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-misplaced-widening-cast.rst&p1=clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-misplaced-widening-cast.rst Wed Feb 28 06:47:20 2018
@@ -1,7 +1,7 @@
-.. title:: clang-tidy - misc-misplaced-widening-cast
+.. title:: clang-tidy - bugprone-misplaced-widening-cast
-misc-misplaced-widening-cast
-============================
+bugprone-misplaced-widening-cast
+================================
This check will warn when there is a cast of a calculation result to a bigger
type. If the intention of the cast is to avoid loss of precision then the cast
Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=326327&r1=326326&r2=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Wed Feb 28 06:47:20 2018
@@ -24,10 +24,14 @@ Clang-Tidy Checks
bugprone-dangling-handle
bugprone-fold-init-type
bugprone-forward-declaration-namespace
+ bugprone-forwarding-reference-overload
bugprone-inaccurate-erase
bugprone-incorrect-roundings
bugprone-integer-division
+ bugprone-lambda-function-name
+ bugprone-macro-repeated-side-effects
bugprone-misplaced-operator-in-strlen-in-alloc
+ bugprone-misplaced-widening-cast
bugprone-move-forwarding-reference
bugprone-multiple-statement-macro
bugprone-string-constructor
@@ -127,12 +131,8 @@ Clang-Tidy Checks
llvm-namespace-comment
llvm-twine-local
misc-definitions-in-headers
- misc-forwarding-reference-overload
- misc-lambda-function-name
misc-macro-parentheses
- misc-macro-repeated-side-effects
misc-misplaced-const
- misc-misplaced-widening-cast
misc-new-delete-overloads
misc-non-copyable-objects
misc-redundant-expression
Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-forwarding-reference-overload.rst (removed)
@@ -1,49 +0,0 @@
-.. title:: clang-tidy - misc-forwarding-reference-overload
-
-misc-forwarding-reference-overload
-==================================
-
-The check looks for perfect forwarding constructors that can hide copy or move
-constructors. If a non const lvalue reference is passed to the constructor, the
-forwarding reference parameter will be a better match than the const reference
-parameter of the copy constructor, so the perfect forwarding constructor will be
-called, which can be confusing.
-For detailed description of this issue see: Scott Meyers, Effective Modern C++,
-Item 26.
-
-Consider the following example:
-
- .. code-block:: c++
-
- class Person {
- public:
- // C1: perfect forwarding ctor
- template<typename T>
- explicit Person(T&& n) {}
-
- // C2: perfect forwarding ctor with parameter default value
- template<typename T>
- explicit Person(T&& n, int x = 1) {}
-
- // C3: perfect forwarding ctor guarded with enable_if
- template<typename T, typename X = enable_if_t<is_special<T>,void>>
- explicit Person(T&& n) {}
-
- // (possibly compiler generated) copy ctor
- Person(const Person& rhs);
- };
-
-The check warns for constructors C1 and C2, because those can hide copy and move
-constructors. We suppress warnings if the copy and the move constructors are both
-disabled (deleted or private), because there is nothing the perfect forwarding
-constructor could hide in this case. We also suppress warnings for constructors
-like C3 that are guarded with an enable_if, assuming the programmer was aware of
-the possible hiding.
-
-Background
-----------
-
-For deciding whether a constructor is guarded with enable_if, we consider the
-default values of the type parameters and the types of the constructor
-parameters. If any part of these types is std::enable_if or std::enable_if_t, we
-assume the constructor is guarded.
Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-lambda-function-name.rst (removed)
@@ -1,27 +0,0 @@
-.. title:: clang-tidy - misc-lambda-function-name
-
-misc-lambda-function-name
-=========================
-
-Checks for attempts to get the name of a function from within a lambda
-expression. The name of a lambda is always something like ``operator()``, which
-is almost never what was intended.
-
-Example:
-
-.. code-block:: c++
-
- void FancyFunction() {
- [] { printf("Called from %s\n", __func__); }();
- [] { printf("Now called from %s\n", __FUNCTION__); }();
- }
-
-Output::
-
- Called from operator()
- Now called from operator()
-
-Likely intended output::
-
- Called from FancyFunction
- Now called from FancyFunction
Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst (removed)
@@ -1,7 +0,0 @@
-.. title:: clang-tidy - misc-macro-repeated-side-effects
-
-misc-macro-repeated-side-effects
-================================
-
-
-Checks for repeated argument with side effects in macros.
Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-misplaced-widening-cast.rst (removed)
@@ -1,65 +0,0 @@
-.. title:: clang-tidy - misc-misplaced-widening-cast
-
-misc-misplaced-widening-cast
-============================
-
-This check will warn when there is a cast of a calculation result to a bigger
-type. If the intention of the cast is to avoid loss of precision then the cast
-is misplaced, and there can be loss of precision. Otherwise the cast is
-ineffective.
-
-Example code:
-
-.. code-block:: c++
-
- long f(int x) {
- return (long)(x * 1000);
- }
-
-The result ``x * 1000`` is first calculated using ``int`` precision. If the
-result exceeds ``int`` precision there is loss of precision. Then the result is
-casted to ``long``.
-
-If there is no loss of precision then the cast can be removed or you can
-explicitly cast to ``int`` instead.
-
-If you want to avoid loss of precision then put the cast in a proper location,
-for instance:
-
-.. code-block:: c++
-
- long f(int x) {
- return (long)x * 1000;
- }
-
-Implicit casts
---------------
-
-Forgetting to place the cast at all is at least as dangerous and at least as
-common as misplacing it. If :option:`CheckImplicitCasts` is enabled the check
-also detects these cases, for instance:
-
-.. code-block:: c++
-
- long f(int x) {
- return x * 1000;
- }
-
-Floating point
---------------
-
-Currently warnings are only written for integer conversion. No warning is
-written for this code:
-
-.. code-block:: c++
-
- double f(float x) {
- return (double)(x * 10.0f);
- }
-
-Options
--------
-
-.. option:: CheckImplicitCasts
-
- If non-zero, enables detection of implicit casts. Default is non-zero.
Copied: clang-tools-extra/trunk/test/clang-tidy/bugprone-forwarding-reference-overload.cpp (from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/bugprone-forwarding-reference-overload.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/bugprone-forwarding-reference-overload.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/bugprone-forwarding-reference-overload.cpp Wed Feb 28 06:47:20 2018
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s misc-forwarding-reference-overload %t -- -- -std=c++14
+// RUN: %check_clang_tidy %s bugprone-forwarding-reference-overload %t -- -- -std=c++14
namespace std {
template <bool B, class T = void> struct enable_if { typedef T type; };
@@ -20,7 +20,7 @@ template <typename T> constexpr bool jus
class Test1 {
public:
template <typename T> Test1(T &&n);
- // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors [misc-forwarding-reference-overload]
+ // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
template <typename T> Test1(T &&n, int i = 5, ...);
// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors
Copied: clang-tools-extra/trunk/test/clang-tidy/bugprone-lambda-function-name.cpp (from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/bugprone-lambda-function-name.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/bugprone-lambda-function-name.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/bugprone-lambda-function-name.cpp Wed Feb 28 06:47:20 2018
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s misc-lambda-function-name %t
+// RUN: %check_clang_tidy %s bugprone-lambda-function-name %t
void Foo(const char* a, const char* b, int c) {}
@@ -8,15 +8,15 @@ void Foo(const char* a, const char* b, i
void Positives() {
[] { __func__; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
+ // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [bugprone-lambda-function-name]
[] { __FUNCTION__; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__FUNCTION__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
+ // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__FUNCTION__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [bugprone-lambda-function-name]
[] { FUNC_MACRO; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
+ // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [bugprone-lambda-function-name]
[] { FUNCTION_MACRO; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__FUNCTION__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
+ // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__FUNCTION__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [bugprone-lambda-function-name]
[] { EMBED_IN_ANOTHER_MACRO1; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
+ // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [bugprone-lambda-function-name]
}
#define FUNC_MACRO_WITH_FILE_AND_LINE Foo(__func__, __FILE__, __LINE__)
Copied: clang-tools-extra/trunk/test/clang-tidy/bugprone-macro-repeated-side-effects.c (from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/bugprone-macro-repeated-side-effects.c?p2=clang-tools-extra/trunk/test/clang-tidy/bugprone-macro-repeated-side-effects.c&p1=clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c (original)
+++ clang-tools-extra/trunk/test/clang-tidy/bugprone-macro-repeated-side-effects.c Wed Feb 28 06:47:20 2018
@@ -1,9 +1,9 @@
-// RUN: %check_clang_tidy %s misc-macro-repeated-side-effects %t
+// RUN: %check_clang_tidy %s bugprone-macro-repeated-side-effects %t
#define badA(x,y) ((x)+((x)+(y))+(y))
void bad(int ret, int a, int b) {
ret = badA(a++, b);
- // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: side effects in the 1st macro argument 'x' are repeated in macro expansion [misc-macro-repeated-side-effects]
+ // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: side effects in the 1st macro argument 'x' are repeated in macro expansion [bugprone-macro-repeated-side-effects]
ret = badA(++a, b);
// CHECK-MESSAGES: :[[@LINE-1]]:14: warning: side effects in the 1st macro argument 'x'
ret = badA(a--, b);
Copied: clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp (from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-explicit-only.cpp Wed Feb 28 06:47:20 2018
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s misc-misplaced-widening-cast %t -- -config="{CheckOptions: [{key: misc-misplaced-widening-cast.CheckImplicitCasts, value: 0}]}" --
+// RUN: %check_clang_tidy %s bugprone-misplaced-widening-cast %t -- -config="{CheckOptions: [{key: bugprone-misplaced-widening-cast.CheckImplicitCasts, value: 0}]}" --
void func(long arg) {}
@@ -7,7 +7,7 @@ void assign(int a, int b) {
l = a * b;
l = (long)(a * b);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion [misc-misplaced-widening-cast]
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion [bugprone-misplaced-widening-cast]
l = (long)a * b;
l = a << 8;
Copied: clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-implicit-enabled.cpp (from r326321, clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-implicit-enabled.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-implicit-enabled.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp&r1=326321&r2=326327&rev=326327&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/bugprone-misplaced-widening-cast-implicit-enabled.cpp Wed Feb 28 06:47:20 2018
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s misc-misplaced-widening-cast %t -- -config="{CheckOptions: [{key: misc-misplaced-widening-cast.CheckImplicitCasts, value: 1}]}" --
+// RUN: %check_clang_tidy %s bugprone-misplaced-widening-cast %t -- -config="{CheckOptions: [{key: bugprone-misplaced-widening-cast.CheckImplicitCasts, value: 1}]}" --
void func(long arg) {}
@@ -6,7 +6,7 @@ void assign(int a, int b) {
long l;
l = a * b;
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion [misc-misplaced-widening-cast]
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion [bugprone-misplaced-widening-cast]
l = (long)(a * b);
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
l = (long)a * b;
Removed: clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/misc-forwarding-reference-overload.cpp (removed)
@@ -1,145 +0,0 @@
-// RUN: %check_clang_tidy %s misc-forwarding-reference-overload %t -- -- -std=c++14
-
-namespace std {
-template <bool B, class T = void> struct enable_if { typedef T type; };
-
-template <class T> struct enable_if<true, T> { typedef T type; };
-
-template <bool B, class T = void>
-using enable_if_t = typename enable_if<B, T>::type;
-
-template <class T> struct enable_if_nice { typedef T type; };
-} // namespace std
-
-namespace foo {
-template <class T> struct enable_if { typedef T type; };
-} // namespace foo
-
-template <typename T> constexpr bool just_true = true;
-
-class Test1 {
-public:
- template <typename T> Test1(T &&n);
- // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors [misc-forwarding-reference-overload]
-
- template <typename T> Test1(T &&n, int i = 5, ...);
- // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors
-
- template <typename T, typename U = typename std::enable_if_nice<T>::type>
- Test1(T &&n);
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
-
- template <typename T>
- Test1(T &&n, typename foo::enable_if<long>::type i = 5, ...);
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
-
- Test1(const Test1 &other) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: note: copy constructor declared here
-
- Test1(Test1 &other) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: note: copy constructor declared here
-
- Test1(Test1 &&other) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: note: move constructor declared here
-};
-
-template <typename U> class Test2 {
-public:
- // Two parameters without default value, can't act as copy / move constructor.
- template <typename T, class V> Test2(T &&n, V &&m, int i = 5, ...);
-
- // Guarded with enable_if.
- template <typename T>
- Test2(T &&n, int i = 5,
- std::enable_if_t<sizeof(int) < sizeof(long), int> a = 5, ...);
-
- // Guarded with enable_if.
- template <typename T, typename X = typename std::enable_if<
- sizeof(int) < sizeof(long), double>::type &>
- Test2(T &&n);
-
- // Guarded with enable_if.
- template <typename T>
- Test2(T &&n, typename std::enable_if<just_true<T>>::type **a = nullptr);
-
- // Guarded with enable_if.
- template <typename T, typename X = std::enable_if_t<just_true<T>> *&&>
- Test2(T &&n, double d = 0.0);
-
- // Not a forwarding reference parameter.
- template <typename T> Test2(const T &&n);
-
- // Not a forwarding reference parameter.
- Test2(int &&x);
-
- // Two parameters without default value, can't act as copy / move constructor.
- template <typename T> Test2(T &&n, int x);
-
- // Not a forwarding reference parameter.
- template <typename T> Test2(U &&n);
-};
-
-// The copy and move constructors are both disabled.
-class Test3 {
-public:
- template <typename T> Test3(T &&n);
-
- template <typename T> Test3(T &&n, int I = 5, ...);
-
- Test3(const Test3 &rhs) = delete;
-
-private:
- Test3(Test3 &&rhs);
-};
-
-// Both the copy and the (compiler generated) move constructors can be hidden.
-class Test4 {
-public:
- template <typename T> Test4(T &&n);
- // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors
-
- Test4(const Test4 &rhs);
- // CHECK-MESSAGES: :[[@LINE-1]]:3: note: copy constructor declared here
-};
-
-// Nothing can be hidden, the copy constructor is implicitly deleted.
-class Test5 {
-public:
- template <typename T> Test5(T &&n);
-
- Test5(Test5 &&rhs) = delete;
-};
-
-// Only the move constructor can be hidden.
-class Test6 {
-public:
- template <typename T> Test6(T &&n);
- // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the move constructor
-
- Test6(Test6 &&rhs);
- // CHECK-MESSAGES: :[[@LINE-1]]:3: note: move constructor declared here
-private:
- Test6(const Test6 &rhs);
-};
-
-// Do not dereference a null BaseType.
-template <class _Callable> class result_of;
-template <class _Fp, class ..._Args> class result_of<_Fp(_Args...)> { };
-template <class _Tp> using result_of_t = typename result_of<_Tp>::type;
-
-template <class... _Types> struct __overload;
-template <class _Tp, class... _Types>
-struct __overload<_Tp, _Types...> : __overload<_Types...> {
- using __overload<_Types...>::operator();
-};
-
-template <class _Tp, class... _Types>
-using __best_match_t = typename result_of_t<__overload<_Types...>(_Tp&&)>::type;
-
-template <class... _Types>
-class variant {
-public:
- template <class _Arg, class _Tp = __best_match_t<_Arg, _Types...> >
- constexpr variant(_Arg&& __arg) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: constructor accepting a forwarding reference can hide the copy and move constructors
-};
Removed: clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/misc-lambda-function-name.cpp (removed)
@@ -1,41 +0,0 @@
-// RUN: %check_clang_tidy %s misc-lambda-function-name %t
-
-void Foo(const char* a, const char* b, int c) {}
-
-#define FUNC_MACRO Foo(__func__, "", 0)
-#define FUNCTION_MACRO Foo(__FUNCTION__, "", 0)
-#define EMBED_IN_ANOTHER_MACRO1 FUNC_MACRO
-
-void Positives() {
- [] { __func__; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
- [] { __FUNCTION__; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__FUNCTION__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
- [] { FUNC_MACRO; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
- [] { FUNCTION_MACRO; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__FUNCTION__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
- [] { EMBED_IN_ANOTHER_MACRO1; }();
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inside a lambda, '__func__' expands to the name of the function call operator; consider capturing the name of the enclosing function explicitly [misc-lambda-function-name]
-}
-
-#define FUNC_MACRO_WITH_FILE_AND_LINE Foo(__func__, __FILE__, __LINE__)
-#define FUNCTION_MACRO_WITH_FILE_AND_LINE Foo(__FUNCTION__, __FILE__, __LINE__)
-#define EMBED_IN_ANOTHER_MACRO2 FUNC_MACRO_WITH_FILE_AND_LINE
-
-void Negatives() {
- __func__;
- __FUNCTION__;
-
- // __PRETTY_FUNCTION__ should not trigger a warning because its value is
- // actually potentially useful.
- __PRETTY_FUNCTION__;
- [] { __PRETTY_FUNCTION__; }();
-
- // Don't warn if __func__/__FUNCTION is used inside a macro that also uses
- // __FILE__ and __LINE__, on the assumption that __FILE__ and __LINE__ will
- // be useful even if __func__/__FUNCTION__ is not.
- [] { FUNC_MACRO_WITH_FILE_AND_LINE; }();
- [] { FUNCTION_MACRO_WITH_FILE_AND_LINE; }();
- [] { EMBED_IN_ANOTHER_MACRO2; }();
-}
Removed: clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c (original)
+++ clang-tools-extra/trunk/test/clang-tidy/misc-macro-repeated-side-effects.c (removed)
@@ -1,106 +0,0 @@
-// RUN: %check_clang_tidy %s misc-macro-repeated-side-effects %t
-
-#define badA(x,y) ((x)+((x)+(y))+(y))
-void bad(int ret, int a, int b) {
- ret = badA(a++, b);
- // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: side effects in the 1st macro argument 'x' are repeated in macro expansion [misc-macro-repeated-side-effects]
- ret = badA(++a, b);
- // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: side effects in the 1st macro argument 'x'
- ret = badA(a--, b);
- // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: side effects in the 1st macro argument 'x'
- ret = badA(--a, b);
- // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: side effects in the 1st macro argument 'x'
- ret = badA(a, b++);
- // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: side effects in the 2nd macro argument 'y'
- ret = badA(a, ++b);
- // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: side effects in the 2nd macro argument 'y'
- ret = badA(a, b--);
- // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: side effects in the 2nd macro argument 'y'
- ret = badA(a, --b);
- // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: side effects in the 2nd macro argument 'y'
-}
-
-
-#define MIN(A,B) ((A) < (B) ? (A) : (B)) // single ?:
-#define LIMIT(X,A,B) ((X) < (A) ? (A) : ((X) > (B) ? (B) : (X))) // two ?:
-void question(int x) {
- MIN(x++, 12);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: side effects in the 1st macro argument 'A'
- MIN(34, x++);
- // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: side effects in the 2nd macro argument 'B'
- LIMIT(x++, 0, 100);
- // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: side effects in the 1st macro argument 'X'
- LIMIT(20, x++, 100);
- // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: side effects in the 2nd macro argument 'A'
- LIMIT(20, 0, x++);
- // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: side effects in the 3rd macro argument 'B'
-}
-
-// False positive: Repeated side effects is intentional.
-// It is hard to know when it's done by intention so right now we warn.
-#define UNROLL(A) {A A}
-void fp1(int i) {
- UNROLL({ i++; });
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: side effects in the 1st macro argument 'A'
-}
-
-// Do not produce a false positive on a strchr() macro. Explanation; Currently the '?'
-// triggers the test to bail out, because it cannot evaluate __builtin_constant_p(c).
-# define strchrs(s, c) \
- (__extension__ (__builtin_constant_p (c) && !__builtin_constant_p (s) \
- && (c) == '\0' \
- ? (char *) __rawmemchr (s, c) \
- : __builtin_strchr (s, c)))
-char* __rawmemchr(char* a, char b) {
- return a;
-}
-void pass(char* pstr, char ch) {
- strchrs(pstr, ch++); // No error.
-}
-
-// Check large arguments (t=20, u=21).
-#define largeA(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, x, y, z) \
- ((a) + (a) + (b) + (b) + (c) + (c) + (d) + (d) + (e) + (e) + (f) + (f) + (g) + (g) + \
- (h) + (h) + (i) + (i) + (j) + (j) + (k) + (k) + (l) + (l) + (m) + (m) + (n) + (n) + \
- (o) + (o) + (p) + (p) + (q) + (q) + (r) + (r) + (s) + (s) + (t) + (t) + (u) + (u) + \
- (v) + (v) + (x) + (x) + (y) + (y) + (z) + (z))
-void large(int a) {
- largeA(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a++, 0, 0, 0, 0, 0, 0);
- // CHECK-MESSAGES: :[[@LINE-1]]:64: warning: side effects in the 19th macro argument 's'
- largeA(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a++, 0, 0, 0, 0, 0);
- // CHECK-MESSAGES: :[[@LINE-1]]:67: warning: side effects in the 20th macro argument 't'
- largeA(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a++, 0, 0, 0, 0);
- // CHECK-MESSAGES: :[[@LINE-1]]:70: warning: side effects in the 21st macro argument 'u'
-}
-
-// Passing macro argument as argument to __builtin_constant_p and macros.
-#define builtinbad(x) (__builtin_constant_p(x) + (x) + (x))
-#define builtingood1(x) (__builtin_constant_p(x) + (x))
-#define builtingood2(x) ((__builtin_constant_p(x) && (x)) || (x))
-#define macrobad(x) (builtingood1(x) + (x) + (x))
-#define macrogood(x) (builtingood1(x) + (x))
-void builtins(int ret, int a) {
- ret += builtinbad(a++);
- // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: side effects in the 1st macro argument 'x'
-
- ret += builtingood1(a++);
- ret += builtingood2(a++);
-
- ret += macrobad(a++);
- // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: side effects in the 1st macro argument 'x'
-
- ret += macrogood(a++);
-}
-
-// Bail out for conditionals.
-#define condB(x,y) if(x) {x=y;} else {x=y + 1;}
-void conditionals(int a, int b)
-{
- condB(a, b++);
-}
-
-void log(const char *s, int v);
-#define LOG(val) log(#val, (val))
-void test_log(int a) {
- LOG(a++);
-}
Removed: clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-explicit-only.cpp (removed)
@@ -1,64 +0,0 @@
-// RUN: %check_clang_tidy %s misc-misplaced-widening-cast %t -- -config="{CheckOptions: [{key: misc-misplaced-widening-cast.CheckImplicitCasts, value: 0}]}" --
-
-void func(long arg) {}
-
-void assign(int a, int b) {
- long l;
-
- l = a * b;
- l = (long)(a * b);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion [misc-misplaced-widening-cast]
- l = (long)a * b;
-
- l = a << 8;
- l = (long)(a << 8);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
- l = (long)b << 8;
-
- l = static_cast<long>(a * b);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
-}
-
-void compare(int a, int b, long c) {
- bool l;
-
- l = a * b == c;
- l = c == a * b;
- l = (long)(a * b) == c;
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
- l = c == (long)(a * b);
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: either cast from 'int' to 'long'
- l = (long)a * b == c;
- l = c == (long)a * b;
-}
-
-void init(unsigned int n) {
- long l1 = n << 8;
- long l2 = (long)(n << 8);
- // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: either cast from 'unsigned int' to 'long'
- long l3 = (long)n << 8;
-}
-
-void call(unsigned int n) {
- func(n << 8);
- func((long)(n << 8));
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: either cast from 'unsigned int' to 'long'
- func((long)n << 8);
-}
-
-long ret(int a) {
- if (a < 0) {
- return a * 1000;
- } else if (a > 0) {
- return (long)(a * 1000);
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: either cast from 'int' to 'long'
- } else {
- return (long)a * 1000;
- }
-}
-
-// Shall not generate an assert. https://bugs.llvm.org/show_bug.cgi?id=33660
-template <class> class A {
- enum Type {};
- static char *m_fn1() { char p = (Type)(&p - m_fn1()); }
-};
Removed: clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp?rev=326326&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/misc-misplaced-widening-cast-implicit-enabled.cpp (removed)
@@ -1,101 +0,0 @@
-// RUN: %check_clang_tidy %s misc-misplaced-widening-cast %t -- -config="{CheckOptions: [{key: misc-misplaced-widening-cast.CheckImplicitCasts, value: 1}]}" --
-
-void func(long arg) {}
-
-void assign(int a, int b) {
- long l;
-
- l = a * b;
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion [misc-misplaced-widening-cast]
- l = (long)(a * b);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
- l = (long)a * b;
-
- l = a << 8;
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
- l = (long)(a << 8);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
- l = (long)b << 8;
-
- l = static_cast<long>(a * b);
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
-}
-
-void compare(int a, int b, long c) {
- bool l;
-
- l = a * b == c;
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
- l = c == a * b;
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: either cast from 'int' to 'long'
- l = (long)(a * b) == c;
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: either cast from 'int' to 'long'
- l = c == (long)(a * b);
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: either cast from 'int' to 'long'
- l = (long)a * b == c;
- l = c == (long)a * b;
-}
-
-void init(unsigned int n) {
- long l1 = n << 8;
- // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: either cast from 'unsigned int' to 'long'
- long l2 = (long)(n << 8);
- // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: either cast from 'unsigned int' to 'long'
- long l3 = (long)n << 8;
-}
-
-void call(unsigned int n) {
- func(n << 8);
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: either cast from 'unsigned int' to 'long'
- func((long)(n << 8));
- // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: either cast from 'unsigned int' to 'long'
- func((long)n << 8);
-}
-
-long ret(int a) {
- if (a < 0) {
- return a * 1000;
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: either cast from 'int' to 'long'
- } else if (a > 0) {
- return (long)(a * 1000);
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: either cast from 'int' to 'long'
- } else {
- return (long)a * 1000;
- }
-}
-
-void dontwarn1(unsigned char a, int i, unsigned char *p) {
- long l;
- // The result is a 9 bit value, there is no truncation in the implicit cast.
- l = (long)(a + 15);
- // The result is a 12 bit value, there is no truncation in the implicit cast.
- l = (long)(a << 4);
- // The result is a 3 bit value, there is no truncation in the implicit cast.
- l = (long)((i % 5) + 1);
- // The result is a 16 bit value, there is no truncation in the implicit cast.
- l = (long)(((*p) << 8) + *(p + 1));
-}
-
-template <class T> struct DontWarn2 {
- void assign(T a, T b) {
- long l;
- l = (long)(a * b);
- }
-};
-DontWarn2<int> DW2;
-
-// Cast is not suspicious when casting macro.
-#define A (X<<2)
-long macro1(int X) {
- return (long)A;
-}
-
-// Don't warn about cast in macro.
-#define B(X,Y) (long)(X*Y)
-long macro2(int x, int y) {
- return B(x,y);
-}
-
-void floatingpoint(float a, float b) {
- double d = (double)(a * b); // Currently we don't warn for this.
-}
More information about the cfe-commits
mailing list