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

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Wed May 27 17:52:39 UTC 2020


 compilerplugins/clang/plugin.cxx              |   20 +++++++++++---------
 oox/source/drawingml/chart/titleconverter.cxx |    2 +-
 oox/source/dump/dumperbase.cxx                |    6 +++---
 oox/source/dump/oledumper.cxx                 |    4 ++--
 4 files changed, 17 insertions(+), 15 deletions(-)

New commits:
commit c3fbda80eb1d52239d8992eaadeabf89ee57170f
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Wed May 27 16:00:08 2020 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Wed May 27 19:51:58 2020 +0200

    Further fixing of loplugin:simplifypointertobool for libstdc++ std::shared_ptr
    
    ...after fe6cce01c88d045a1fcf09acf049c34c22299b02 "Fix
    loplugin:simplifypointertobool for libstdc++ std::shared_ptr", this time for
    uses of oox::drawingml::chart::ModelRef, which derives from std::shared_ptr.
    
    Change-Id: I7e9620da52b3f6d26c6fe6d7909888c3a221c164
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94975
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/compilerplugins/clang/plugin.cxx b/compilerplugins/clang/plugin.cxx
index 5248927e5d84..c9e0170f2969 100644
--- a/compilerplugins/clang/plugin.cxx
+++ b/compilerplugins/clang/plugin.cxx
@@ -830,19 +830,21 @@ bool hasExternalLinkage(VarDecl const * decl) {
 
 bool isSmartPointerType(const Expr* e)
 {
-    // First check the object type as written, in case the get member function is
-    // declared at a base class of std::unique_ptr or std::shared_ptr:
-    auto const t = e->IgnoreImpCasts()->getType();
-    auto const tc1 = loplugin::TypeCheck(t);
-    if (tc1.ClassOrStruct("unique_ptr").StdNamespace()
-          || tc1.ClassOrStruct("shared_ptr").StdNamespace())
+    // First check whether the object type as written is, or is derived from, std::unique_ptr or
+    // std::shared_ptr, in case the get member function is declared at a base class of that std
+    // type:
+    if (loplugin::isDerivedFrom(
+            e->IgnoreImpCasts()->getType()->getAsCXXRecordDecl(),
+            [](Decl const * decl) {
+                auto const dc = loplugin::DeclCheck(decl);
+                return dc.ClassOrStruct("unique_ptr").StdNamespace()
+                    || dc.ClassOrStruct("shared_ptr").StdNamespace();
+            }))
         return true;
 
     // Then check the object type coerced to the type of the get member function, in
     // case the type-as-written is derived from one of these types (tools::SvRef is
-    // final, but the rest are not; but note that this will fail when the type-as-
-    // written is derived from std::unique_ptr or std::shared_ptr for which the get
-    // member function is declared at a base class):
+    // final, but the rest are not):
     auto const tc2 = loplugin::TypeCheck(e->getType());
     if (tc2.ClassOrStruct("unique_ptr").StdNamespace()
            || tc2.ClassOrStruct("shared_ptr").StdNamespace()
diff --git a/oox/source/drawingml/chart/titleconverter.cxx b/oox/source/drawingml/chart/titleconverter.cxx
index a4a2d9c1ec89..c4bf45dea739 100644
--- a/oox/source/drawingml/chart/titleconverter.cxx
+++ b/oox/source/drawingml/chart/titleconverter.cxx
@@ -238,7 +238,7 @@ void LegendConverter::convertFromModel( const Reference< XDiagram >& rxDiagram )
         }
         bool bManualLayout=false;
         // manual positioning and size
-        if( mrModel.mxLayout.get() )
+        if( mrModel.mxLayout )
         {
             LayoutConverter aLayoutConv( *this, *mrModel.mxLayout );
             // manual size needs ChartLegendExpansion_CUSTOM
diff --git a/oox/source/dump/dumperbase.cxx b/oox/source/dump/dumperbase.cxx
index 775790a20eed..8fcb7277b2e4 100644
--- a/oox/source/dump/dumperbase.cxx
+++ b/oox/source/dump/dumperbase.cxx
@@ -2015,7 +2015,7 @@ void InputObjectBase::construct( const InputObjectBase& rParent )
 
 bool InputObjectBase::implIsValid() const
 {
-    return mxStrm.get() && OutputObjectBase::implIsValid();
+    return mxStrm && OutputObjectBase::implIsValid();
 }
 
 void InputObjectBase::skipBlock( sal_Int64 nBytes, bool bShowSize )
@@ -2318,7 +2318,7 @@ void TextStreamObjectBase::implDump()
 
 void TextStreamObjectBase::constructTextStrmObj( rtl_TextEncoding eTextEnc )
 {
-    if( mxStrm.get() )
+    if( mxStrm )
         mxTextStrm = std::make_shared<TextInputStream>( getContext(), *mxStrm, eTextEnc );
 }
 
@@ -2450,7 +2450,7 @@ void RecordObjectBase::construct( const ObjectBase& rParent,
 
 bool RecordObjectBase::implIsValid() const
 {
-    return mxBaseStrm.get() && InputObjectBase::implIsValid();
+    return mxBaseStrm && InputObjectBase::implIsValid();
 }
 
 void RecordObjectBase::implDump()
diff --git a/oox/source/dump/oledumper.cxx b/oox/source/dump/oledumper.cxx
index 80485c453b7c..290ace6b39c0 100644
--- a/oox/source/dump/oledumper.cxx
+++ b/oox/source/dump/oledumper.cxx
@@ -1859,7 +1859,7 @@ VbaDirStreamObject::VbaDirStreamObject( const ObjectBase& rParent,
     mrVbaData( rVbaData )
 {
     mxInStrm = rxStrm;
-    if( mxInStrm.get() )
+    if( mxInStrm )
     {
         BinaryInputStreamRef xVbaStrm( std::make_shared<::oox::ole::VbaInputStream>( *mxInStrm ) );
         SequenceRecordObjectBase::construct( rParent, xVbaStrm, rSysFileName, "VBA-DIR-RECORD-NAMES", "VBA-DIR-SIMPLE-RECORDS" );
@@ -1868,7 +1868,7 @@ VbaDirStreamObject::VbaDirStreamObject( const ObjectBase& rParent,
 
 bool VbaDirStreamObject::implIsValid() const
 {
-    return mxInStrm.get() && SequenceRecordObjectBase::implIsValid();
+    return mxInStrm && SequenceRecordObjectBase::implIsValid();
 }
 
 bool VbaDirStreamObject::implReadRecordHeader( BinaryInputStream& rBaseStrm, sal_Int64& ornRecId, sal_Int64& ornRecSize )


More information about the Libreoffice-commits mailing list