[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