[Libreoffice-commits] core.git: compilerplugins/clang

Stephan Bergmann sbergman at redhat.com
Wed Jun 29 13:13:54 UTC 2016


 compilerplugins/clang/refcounting.cxx |  117 ++++++++++++++++++++--------------
 1 file changed, 71 insertions(+), 46 deletions(-)

New commits:
commit a29240256506bfabfbda78edd9d0744b8899cc38
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Jun 29 15:13:25 2016 +0200

    Further clean-up
    
    Change-Id: I2b867a93fd8c5cf3c1e4f53863c441478d9201e1

diff --git a/compilerplugins/clang/refcounting.cxx b/compilerplugins/clang/refcounting.cxx
index 2049eab..bfdafe9 100644
--- a/compilerplugins/clang/refcounting.cxx
+++ b/compilerplugins/clang/refcounting.cxx
@@ -109,47 +109,6 @@ bool containsXInterfaceSubclass(const QualType& qType) {
     return containsXInterfaceSubclass(qType.getTypePtr());
 }
 
-static std::vector<std::string> PROBABLY_GOOD_TEMPLATES = {
-    "abp::OMultiInstanceAutoRegistration",
-    "com::sun::star::uno::Reference",
-    "com::sun::star::uno::WeakReference",
-    "com::sun::star::uno::Sequence",
-    "accessibility::WeakCppRef",
-    "dba::OAutoRegistration",
-    "dbp::OMultiInstanceAutoRegistration",
-    "dbaui::OMultiInstanceAutoRegistration",
-    "dbaxml::OMultiInstanceAutoRegistration",
-    "io_acceptor::ReferenceEqual",
-    "io_acceptor::ReferenceHash",
-    "comphelper::OAutoRegistration",
-    "comphelper::OInterfaceCompare",
-    "comphelper::WeakBag",
-    "comphelper::service_decl::class_",
-    "comphelper::service_decl::vba_service_class_",
-    "comphelper::service_decl::inheritingClass_",
-    "comphelper::module::OAutoRegistration",
-    "comphelper::mem_fun1_t",
-    "comphelper::OSimpleListenerContainer",
-    "dbmm::OAutoRegistration",
-    "pcr::OAutoRegistration",
-    "logging::ComponentMethodGuard",
-    "logging::OAutoRegistration",
-    "rtl::Reference",
-    "sdbtools::OAutoRegistration",
-    "stoc_connector::ReferenceEqual",
-    "stoc_connector::ReferenceHash",
-    "std::__1::mem_fun_t",
-    "std::__1::mem_fun1_t",
-    "std::mem_fun_t",
-    "std::mem_fun1_t",
-    "SwIterator",
-    "toolkit::InitGuard",
-    "utl::SharedUNOComponent",
-    "utl::OAutoRegistration",
-    "vcl::DeleteUnoReferenceOnDeinit",
-    "xmloff::OInterfaceCompare",
-};
-
 bool containsXInterfaceSubclass(const Type* pType0) {
     if (!pType0)
         return false;
@@ -190,14 +149,80 @@ bool containsXInterfaceSubclass(const Type* pType0) {
     if (pRecordDecl) {
         const ClassTemplateSpecializationDecl* pTemplate = dyn_cast<ClassTemplateSpecializationDecl>(pRecordDecl);
         if (pTemplate) {
-            if (loplugin::DeclCheck(pTemplate).Struct("FindUnoInstanceHint")
-                .AnonymousNamespace().GlobalNamespace())
+            // Probably good templates:
+            loplugin::DeclCheck dc(pTemplate);
+            if ((dc.Struct("FindUnoInstanceHint").AnonymousNamespace()
+                 .GlobalNamespace())
+                || (dc.Class("OMultiInstanceAutoRegistration").Namespace("abp")
+                    .GlobalNamespace())
+                || (dc.Class("Reference").Namespace("uno").Namespace("star")
+                    .Namespace("sun").Namespace("com").GlobalNamespace())
+                || (dc.Class("WeakReference").Namespace("uno").Namespace("star")
+                    .Namespace("sun").Namespace("com").GlobalNamespace())
+                || (dc.Class("Sequence").Namespace("uno").Namespace("star")
+                    .Namespace("sun").Namespace("com").GlobalNamespace())
+                || (dc.Class("WeakCppRef").Namespace("accessibility")
+                    .GlobalNamespace())
+                || (dc.Class("OAutoRegistration").Namespace("dba")
+                    .GlobalNamespace())
+                || (dc.Class("OMultiInstanceAutoRegistration").Namespace("dbp")
+                    .GlobalNamespace())
+                || (dc.Class("OMultiInstanceAutoRegistration")
+                    .Namespace("dbaui").GlobalNamespace())
+                || (dc.Class("OMultiInstanceAutoRegistration")
+                    .Namespace("dbaxml").GlobalNamespace())
+                || (dc.Struct("ReferenceEqual").Namespace("io_acceptor")
+                    .GlobalNamespace())
+                || (dc.Struct("ReferenceHash").Namespace("io_acceptor")
+                    .GlobalNamespace())
+                || (dc.Class("OAutoRegistration").Namespace("comphelper")
+                    .GlobalNamespace())
+                || (dc.Struct("OInterfaceCompare").Namespace("comphelper")
+                    .GlobalNamespace())
+                || dc.Class("WeakBag").Namespace("comphelper").GlobalNamespace()
+                || (dc.Struct("class_").Namespace("service_decl")
+                    .Namespace("comphelper").GlobalNamespace())
+                || (dc.Struct("vba_service_class_").Namespace("service_decl")
+                    .Namespace("comphelper").GlobalNamespace())
+                || (dc.Struct("inheritingClass_").Namespace("service_decl")
+                    .Namespace("comphelper").GlobalNamespace())
+                || (dc.Class("OAutoRegistration").Namespace("module")
+                    .Namespace("comphelper").GlobalNamespace())
+                || (dc.Class("mem_fun1_t").Namespace("comphelper")
+                    .GlobalNamespace())
+                || (dc.Class("OSimpleListenerContainer").Namespace("comphelper")
+                    .GlobalNamespace())
+                || (dc.Class("OAutoRegistration").Namespace("dbmm")
+                    .GlobalNamespace())
+                || (dc.Class("OAutoRegistration").Namespace("pcr")
+                    .GlobalNamespace())
+                || (dc.Class("ComponentMethodGuard").Namespace("logging")
+                    .GlobalNamespace())
+                || (dc.Class("OAutoRegistration").Namespace("logging")
+                    .GlobalNamespace())
+                || dc.Class("Reference").Namespace("rtl").GlobalNamespace()
+                || (dc.Class("OAutoRegistration").Namespace("sdbtools")
+                    .GlobalNamespace())
+                || (dc.Struct("ReferenceEqual").Namespace("stoc_connector")
+                    .GlobalNamespace())
+                || (dc.Struct("ReferenceHash").Namespace("stoc_connector")
+                    .GlobalNamespace())
+                || dc.Class("mem_fun_t").StdNamespace()
+                || dc.Class("mem_fun1_t").StdNamespace()
+                || dc.Class("SwIterator").GlobalNamespace()
+                || (dc.Class("InitGuard").Namespace("toolkit")
+                    .GlobalNamespace())
+                || (dc.Class("SharedUNOComponent").Namespace("utl")
+                    .GlobalNamespace())
+                || (dc.Class("OAutoRegistration").Namespace("utl")
+                    .GlobalNamespace())
+                || (dc.Class("DeleteUnoReferenceOnDeinit").Namespace("vcl")
+                    .GlobalNamespace())
+                || (dc.Struct("OInterfaceCompare").Namespace("xmloff")
+                    .GlobalNamespace()))
             {
                 return false;
             }
-            std::string aName = pTemplate->getQualifiedNameAsString();
-            if (std::find(PROBABLY_GOOD_TEMPLATES.begin(), PROBABLY_GOOD_TEMPLATES.end(), aName) != PROBABLY_GOOD_TEMPLATES.end())
-                return false;
             for(unsigned i=0; i<pTemplate->getTemplateArgs().size(); ++i) {
                 const TemplateArgument& rArg = pTemplate->getTemplateArgs()[i];
                 if (rArg.getKind() == TemplateArgument::ArgKind::Type &&


More information about the Libreoffice-commits mailing list