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

Stephan Bergmann sbergman at redhat.com
Tue May 30 13:47:39 UTC 2017


 compilerplugins/clang/redundantcast.cxx       |   24 +++++++++++++-----------
 svx/source/sidebar/area/AreaPropertyPanel.cxx |   16 ++++++++--------
 svx/source/tbxctrls/fillctrl.cxx              |   12 ++++++------
 3 files changed, 27 insertions(+), 25 deletions(-)

New commits:
commit 7d858ad0575b8be58dfb69773e2fba2cf95409c8
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue May 30 15:46:55 2017 +0200

    Restrict loplugin:redundantcast to "real" casts
    
    Change-Id: Ifc9de898e5c9a084cbfd739625c679185c3a1534

diff --git a/compilerplugins/clang/redundantcast.cxx b/compilerplugins/clang/redundantcast.cxx
index 4ffef355bd6a..8b5eb3d90e91 100644
--- a/compilerplugins/clang/redundantcast.cxx
+++ b/compilerplugins/clang/redundantcast.cxx
@@ -480,17 +480,20 @@ bool RedundantCast::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr const * exp
         return true;
     if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/svl/qa/"))
         return true;
-    // the array-of-struct initialiser here makes clang unhappy if I remove all of the "SchemeInfo" names
-    if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/tools/source/fsys/urlobj.cxx"))
-        return true;
-    // 2 structs with compiled-generated constructors where I cannot remove the cast even though the cast is a NoOp
-    if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/tools/source/inet/inetmime.cxx"))
-        return true;
-    // some explicit use of std::initializer_list
-    if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/svx/source/sidebar/area/AreaPropertyPanel.cxx"))
-        return true;
-    if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/svx/source/tbxctrls/fillctrl.cxx"))
+
+    // Restrict this to "real" casts (compared to uses of braced-init-list, like
+    //
+    //   Foo{bar, baz}
+    //
+    // or
+    //
+    //   std::initializer_list<Foo>{bar, baz}
+    //
+    // ), at least for now:
+    auto const sub = compat::getSubExprAsWritten(expr);
+    if (isa<InitListExpr>(sub) || isa<CXXStdInitializerListExpr>(sub)) {
         return true;
+    }
 
     // See the commit message of d0e7d020fa405ab94f19916ec96fbd4611da0031
     // "socket.c -> socket.cxx" for the reason to have
@@ -498,7 +501,6 @@ bool RedundantCast::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr const * exp
     //   bool(FD_ISSET(...))
     //
     // in sal/osl/unx/socket.cxx:
-    auto const sub = compat::getSubExprAsWritten(expr);
     //TODO: Better check that sub is exactly an expansion of FD_ISSET:
     if (sub->getLocEnd().isMacroID()) {
         for (auto loc = sub->getLocStart();
diff --git a/svx/source/sidebar/area/AreaPropertyPanel.cxx b/svx/source/sidebar/area/AreaPropertyPanel.cxx
index 58f3aed8a68f..10f3798e5bdb 100644
--- a/svx/source/sidebar/area/AreaPropertyPanel.cxx
+++ b/svx/source/sidebar/area/AreaPropertyPanel.cxx
@@ -124,8 +124,8 @@ void AreaPropertyPanel::setFillStyleAndColor(const XFillStyleItem* pStyleItem,
 {
     GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_FILL_COLOR,
         SfxCallMode::RECORD, (pStyleItem)
-            ? std::initializer_list<SfxPoolItem const*>({ &rColorItem, pStyleItem })
-            : std::initializer_list<SfxPoolItem const*>({ &rColorItem }));
+            ? std::initializer_list<SfxPoolItem const*>{ &rColorItem, pStyleItem }
+            : std::initializer_list<SfxPoolItem const*>{ &rColorItem });
 }
 
 void AreaPropertyPanel::setFillStyleAndGradient(const XFillStyleItem* pStyleItem,
@@ -133,8 +133,8 @@ void AreaPropertyPanel::setFillStyleAndGradient(const XFillStyleItem* pStyleItem
 {
     GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_FILL_GRADIENT,
         SfxCallMode::RECORD, (pStyleItem)
-            ? std::initializer_list<SfxPoolItem const*>({ &rGradientItem, pStyleItem })
-            : std::initializer_list<SfxPoolItem const*>({ &rGradientItem }));
+            ? std::initializer_list<SfxPoolItem const*>{ &rGradientItem, pStyleItem }
+            : std::initializer_list<SfxPoolItem const*>{ &rGradientItem });
 }
 
 void AreaPropertyPanel::setFillStyleAndHatch(const XFillStyleItem* pStyleItem,
@@ -142,8 +142,8 @@ void AreaPropertyPanel::setFillStyleAndHatch(const XFillStyleItem* pStyleItem,
 {
     GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_FILL_HATCH,
         SfxCallMode::RECORD, (pStyleItem)
-            ? std::initializer_list<SfxPoolItem const*>({ &rHatchItem, pStyleItem })
-            : std::initializer_list<SfxPoolItem const*>({ &rHatchItem }));
+            ? std::initializer_list<SfxPoolItem const*>{ &rHatchItem, pStyleItem }
+            : std::initializer_list<SfxPoolItem const*>{ &rHatchItem });
 }
 
 void AreaPropertyPanel::setFillStyleAndBitmap(const XFillStyleItem* pStyleItem,
@@ -151,8 +151,8 @@ void AreaPropertyPanel::setFillStyleAndBitmap(const XFillStyleItem* pStyleItem,
 {
     GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_FILL_BITMAP,
         SfxCallMode::RECORD, (pStyleItem)
-            ? std::initializer_list<SfxPoolItem const*>({ &rBitmapItem, pStyleItem })
-            : std::initializer_list<SfxPoolItem const*>({ &rBitmapItem }));
+            ? std::initializer_list<SfxPoolItem const*>{ &rBitmapItem, pStyleItem }
+            : std::initializer_list<SfxPoolItem const*>{ &rBitmapItem });
 }
 
 } } // end of namespace svx::sidebar
diff --git a/svx/source/tbxctrls/fillctrl.cxx b/svx/source/tbxctrls/fillctrl.cxx
index 0fdabe726ddd..7f9dfec5816a 100644
--- a/svx/source/tbxctrls/fillctrl.cxx
+++ b/svx/source/tbxctrls/fillctrl.cxx
@@ -788,8 +788,8 @@ IMPL_LINK_NOARG(SvxFillToolBoxControl, SelectFillAttrHdl, ListBox&, void)
                     SfxViewFrame::Current()->GetDispatcher()->ExecuteList(
                         SID_ATTR_FILL_GRADIENT, SfxCallMode::RECORD,
                         (bFillStyleChange)
-                            ? std::initializer_list<SfxPoolItem const*>({ &aXFillGradientItem, &aXFillStyleItem })
-                            : std::initializer_list<SfxPoolItem const*>({ &aXFillGradientItem }));
+                            ? std::initializer_list<SfxPoolItem const*>{ &aXFillGradientItem, &aXFillStyleItem }
+                            : std::initializer_list<SfxPoolItem const*>{ &aXFillGradientItem });
                 }
             }
 
@@ -821,8 +821,8 @@ IMPL_LINK_NOARG(SvxFillToolBoxControl, SelectFillAttrHdl, ListBox&, void)
                     SfxViewFrame::Current()->GetDispatcher()->ExecuteList(
                         SID_ATTR_FILL_HATCH, SfxCallMode::RECORD,
                         (bFillStyleChange)
-                            ? std::initializer_list<SfxPoolItem const*>({ &aXFillHatchItem, &aXFillStyleItem })
-                            : std::initializer_list<SfxPoolItem const*>({ &aXFillHatchItem }));
+                            ? std::initializer_list<SfxPoolItem const*>{ &aXFillHatchItem, &aXFillStyleItem }
+                            : std::initializer_list<SfxPoolItem const*>{ &aXFillHatchItem });
                 }
             }
 
@@ -854,8 +854,8 @@ IMPL_LINK_NOARG(SvxFillToolBoxControl, SelectFillAttrHdl, ListBox&, void)
                     SfxViewFrame::Current()->GetDispatcher()->ExecuteList(
                         SID_ATTR_FILL_BITMAP, SfxCallMode::RECORD,
                         (bFillStyleChange)
-                            ? std::initializer_list<SfxPoolItem const*>({ &aXFillBitmapItem, &aXFillStyleItem })
-                            : std::initializer_list<SfxPoolItem const*>({ &aXFillBitmapItem }));
+                            ? std::initializer_list<SfxPoolItem const*>{ &aXFillBitmapItem, &aXFillStyleItem }
+                            : std::initializer_list<SfxPoolItem const*>{ &aXFillBitmapItem });
                 }
             }
 


More information about the Libreoffice-commits mailing list