[Libreoffice-commits] core.git: compilerplugins/clang
Stephan Bergmann
sbergman at redhat.com
Wed Oct 4 10:03:56 UTC 2017
compilerplugins/clang/blockblock.cxx | 45 ++----------------------------
compilerplugins/clang/test/blockblock.cxx | 8 +++--
2 files changed, 8 insertions(+), 45 deletions(-)
New commits:
commit 1084e8be44661aaeacb8801707701013eb3fcdbc
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Wed Oct 4 12:03:23 2017 +0200
More targeted check for preprocessing conditionals in loplugin:blockblock
Change-Id: Ib9b6b266ed4bf4d2672aed723c7f92f58c9007b3
diff --git a/compilerplugins/clang/blockblock.cxx b/compilerplugins/clang/blockblock.cxx
index a4ac7ffb8edb..7d274059fedf 100644
--- a/compilerplugins/clang/blockblock.cxx
+++ b/compilerplugins/clang/blockblock.cxx
@@ -35,48 +35,6 @@ public:
TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
}
- bool TraverseFunctionDecl(FunctionDecl * decl) {
- if (containsPreprocessingConditionalInclusion(decl->getSourceRange())) {
- return true;
- }
- return RecursiveASTVisitor::TraverseFunctionDecl(decl);
- }
-
- bool TraverseCXXMethodDecl(CXXMethodDecl * decl) {
- if (containsPreprocessingConditionalInclusion(decl->getSourceRange())) {
- return true;
- }
- return RecursiveASTVisitor::TraverseCXXMethodDecl(decl);
- }
-
- bool TraverseCXXConstructorDecl(CXXConstructorDecl * decl) {
- if (containsPreprocessingConditionalInclusion(decl->getSourceRange())) {
- return true;
- }
- return RecursiveASTVisitor::TraverseCXXConstructorDecl(decl);
- }
-
- bool TraverseCXXDestructorDecl(CXXDestructorDecl * decl) {
- if (containsPreprocessingConditionalInclusion(decl->getSourceRange())) {
- return true;
- }
- return RecursiveASTVisitor::TraverseCXXDestructorDecl(decl);
- }
-
- bool TraverseCXXConversionDecl(CXXConversionDecl * decl) {
- if (containsPreprocessingConditionalInclusion(decl->getSourceRange())) {
- return true;
- }
- return RecursiveASTVisitor::TraverseCXXConversionDecl(decl);
- }
-
- bool TraverseObjCMethodDecl(ObjCMethodDecl * decl) {
- if (containsPreprocessingConditionalInclusion(decl->getSourceRange())) {
- return true;
- }
- return RecursiveASTVisitor::TraverseObjCMethodDecl(decl);
- }
-
bool VisitCompoundStmt(CompoundStmt const * );
};
@@ -93,6 +51,9 @@ bool BlockBlock::VisitCompoundStmt(CompoundStmt const * compound)
return true;
if (compiler.getSourceManager().isMacroBodyExpansion(inner->getLocStart()))
return true;
+ if (containsPreprocessingConditionalInclusion(compound->getSourceRange())) {
+ return true;
+ }
report(
DiagnosticsEngine::Warning,
"block directly inside block",
diff --git a/compilerplugins/clang/test/blockblock.cxx b/compilerplugins/clang/test/blockblock.cxx
index 2463ccaa7fd5..bd48ed7d38fa 100644
--- a/compilerplugins/clang/test/blockblock.cxx
+++ b/compilerplugins/clang/test/blockblock.cxx
@@ -8,12 +8,14 @@
*/
int f(bool b1, bool b2) {
- if (b1 || b2) {
+ if (b1 || b2) { // no warning
#if 0
if (b1)
#endif
- {
- return 0;
+ { // expected-error {{block directly inside block [loplugin:blockblock]}}
+ { // expected-note {{inner block here [loplugin:blockblock]}}
+ return 0;
+ }
}
}
return 1;
More information about the Libreoffice-commits
mailing list