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

Noel Grandin noel at peralex.com
Tue Mar 17 02:16:31 PDT 2015


 compilerplugins/clang/unusedvariablecheck.cxx |   27 ++++++++++++++++++++++++++
 sfx2/source/doc/templatedlg.cxx               |    4 +--
 2 files changed, 29 insertions(+), 2 deletions(-)

New commits:
commit 5229726b4d4e7d76f410d221f8f8cd8abcfd5a19
Author: Noel Grandin <noel at peralex.com>
Date:   Tue Mar 17 11:14:36 2015 +0200

    loplugin: add Dialog to unusedvariablecheck
    
    so that we find dialog that have been instantiated but not actually
    executed
    
    Change-Id: Ia308e832780627c0a8de71a9d64dabcb3b861a9c

diff --git a/compilerplugins/clang/unusedvariablecheck.cxx b/compilerplugins/clang/unusedvariablecheck.cxx
index cc37417..0308d9b 100644
--- a/compilerplugins/clang/unusedvariablecheck.cxx
+++ b/compilerplugins/clang/unusedvariablecheck.cxx
@@ -48,6 +48,30 @@ void UnusedVariableCheck::run()
     TraverseDecl( compiler.getASTContext().getTranslationUnitDecl());
     }
 
+bool BaseCheckNotDialogSubclass(const CXXRecordDecl *BaseDefinition, void *) {
+    if (BaseDefinition && BaseDefinition->getQualifiedNameAsString().compare("Dialog") == 0) {
+        return false;
+    }
+    return true;
+}
+
+bool isDerivedFromDialog(const CXXRecordDecl *decl) {
+    if (!decl)
+        return false;
+    if (decl->getQualifiedNameAsString() == "Dialog")
+        return true;
+    if (!decl->hasDefinition()) {
+        return false;
+    }
+    if (// not sure what hasAnyDependentBases() does,
+        // but it avoids classes we don't want, e.g. WeakAggComponentImplHelper1
+        !decl->hasAnyDependentBases() &&
+        !decl->forallBases(BaseCheckNotDialogSubclass, nullptr, true)) {
+        return true;
+    }
+    return false;
+}
+
 bool UnusedVariableCheck::VisitVarDecl( const VarDecl* var )
     {
     if( ignoreLocation( var ))
@@ -83,6 +107,9 @@ bool UnusedVariableCheck::VisitVarDecl( const VarDecl* var )
                 || n == "std::list" || n == "std::__debug::list"
                 || n == "std::vector" || n == "std::__debug::vector" )
                 warn_unused = true;
+            // check if this field is derived from Dialog
+            if (!warn_unused && isDerivedFromDialog(type))
+                  warn_unused = true;
             }
         if( warn_unused )
             {
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 094bc96..972c328 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -933,7 +933,7 @@ void SfxTemplateManagerDlg::OnTemplateImport ()
                     {
                         OUString aMsg(SfxResId(STR_MSG_ERROR_IMPORT).toString());
                         aMsg = aMsg.replaceFirst("$1",pFolder->maTitle);
-                        MessageDialog(this, aMsg.replaceFirst("$2",aTemplateList));
+                        MessageDialog(this, aMsg.replaceFirst("$2",aTemplateList)).Execute();
                     }
                 }
             }
@@ -956,7 +956,7 @@ void SfxTemplateManagerDlg::OnTemplateImport ()
                 {
                     OUString aMsg(SfxResId(STR_MSG_ERROR_IMPORT).toString());
                     aMsg = aMsg.replaceFirst("$1",mpLocalView->getCurRegionName());
-                    MessageDialog(this, aMsg.replaceFirst("$2",aTemplateList));
+                    MessageDialog(this, aMsg.replaceFirst("$2",aTemplateList)).Execute();
                 }
             }
 


More information about the Libreoffice-commits mailing list