compilerplugins/clang/noexceptmove.cxx |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

New commits:
commit 152b3ef0f36a067e3ee07172d3057a3a728e12f1
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Tue Oct 1 13:54:45 2019 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Tue Oct 1 21:41:44 2019 +0200

    loplugin:noexceptmove: Cater for null FunctionDecl::getBody
    
    ...which can happen for function templates with clang-cl, leading to false
    warnings like
    
    > [build CXX] codemaker/source/commoncpp/commoncpp.cxx
    > In file included from codemaker/source/commoncpp/commoncpp.cxx:25:
    > In file included from include\codemaker/typemanager.hxx:28:
    > include\rtl/ref.hxx(126,5): error: move operator= can be noexcept 
[loplugin:noexceptmove]
    >     Reference<reference_type> &
    >     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Change-Id: I541c7c3d86d05964834e3e5cf678c8f1145ea132
    Reviewed-on: https://gerrit.libreoffice.org/79956
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/compilerplugins/clang/noexceptmove.cxx 
b/compilerplugins/clang/noexceptmove.cxx
index 1a1f2de41971..f0fd6cd899c5 100644
--- a/compilerplugins/clang/noexceptmove.cxx
+++ b/compilerplugins/clang/noexceptmove.cxx
@@ -67,7 +67,8 @@ bool 
NoExceptMove::TraverseCXXConstructorDecl(CXXConstructorDecl* constructorDec
                         && constructorDecl->getExceptionSpecType() == EST_None
                         && !constructorDecl->isDefaulted() && 
!constructorDecl->isDeleted()
                         && !ignoreLocation(constructorDecl)
-                        && constructorDecl->isThisDeclarationADefinition();
+                        && constructorDecl->isThisDeclarationADefinition()
+                        && constructorDecl->getBody() != nullptr;
     if (isMove)
     {
         m_ConstructorThrows.push_back(false);
@@ -115,7 +116,7 @@ bool NoExceptMove::TraverseCXXMethodDecl(CXXMethodDecl* 
methodDecl)
     bool isMove = methodDecl->isMoveAssignmentOperator()
                   && methodDecl->getExceptionSpecType() == EST_None && 
!methodDecl->isDefaulted()
                   && !methodDecl->isDeleted() && !ignoreLocation(methodDecl)
-                  && methodDecl->isThisDeclarationADefinition();
+                  && methodDecl->isThisDeclarationADefinition() && 
methodDecl->getBody() != nullptr;
     if (isMove)
     {
         StringRef fn = getFileNameOfSpellingLoc(
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to