Kaydet (Commit) 07d04fd3 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Better fix for missing [[noreturn]] of CPPUNIT_FAIL

This includes a revert of commit 9808486a "Avoid
-Werror,-Wimplicit-fallthrough with clang-cl", and also undoes older MSVC
workarounds (that would start to cause "warning C4702: unreachable code" now).

Change-Id: If72bf336e12e0a2db589857e8875003dae861977
Reviewed-on: https://gerrit.libreoffice.org/67248
Tested-by: Jenkins
Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst 3430192b
......@@ -340,7 +340,6 @@ Reference< chart2::data::XDataSequence > getLabelDataSequenceFromDoc(
}
CPPUNIT_FAIL("no Label sequence found");
return Reference< chart2::data::XDataSequence > ();
}
Reference< chart2::data::XDataSequence > getDataSequenceFromDocByRole(
......
From c955b1041b9e3ebe7ee8a620340b78bddc820682 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Fri, 1 Feb 2019 13:37:59 +0100
Subject: [PATCH] Unconditionally use C++11 [[noreturn]]
This helps avoid issues like <https://gerrit.libreoffice.org/plugins/gitiles/
core/+/9808486a89c6368f836579f8d8c0dda63fd0063c%5E%21> "Avoid
-Werror,-Wimplicit-fallthrough with clang-cl ...where CPPUNIT_FAIL is marked as
noreturn only for __GNUC__".
Change-Id: Idb33af7375f103f2dd7a7b4c3dbf20ce731b17ad
---
include/cppunit/Asserter.h | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/include/cppunit/Asserter.h b/include/cppunit/Asserter.h
index 3321b87..dd39ead 100644
--- a/include/cppunit/Asserter.h
+++ b/include/cppunit/Asserter.h
@@ -43,23 +43,17 @@ class Message;
* \endcode
*/
-#if defined __GNUC__
-# define NORETURN __attribute__((noreturn))
-#else
-# define NORETURN
-#endif
-
struct Asserter
{
/*! \brief Throws a Exception with the specified message and location.
*/
- NORETURN static void CPPUNIT_API fail( const Message &message,
+ [[noreturn]] static void CPPUNIT_API fail( const Message &message,
const SourceLine &sourceLine = SourceLine() );
/*! \brief Throws a Exception with the specified message and location.
* \deprecated Use fail( Message, SourceLine ) instead.
*/
- NORETURN static void CPPUNIT_API fail( std::string message,
+ [[noreturn]] static void CPPUNIT_API fail( std::string message,
const SourceLine &sourceLine = SourceLine() );
/*! \brief Throws a Exception with the specified message and location.
@@ -165,7 +159,7 @@ struct Asserter
* what are the differences between the expected and actual value.
* \param shortDescription Short description for the failure message.
*/
- NORETURN static void CPPUNIT_API failNotEqual( std::string expected,
+ [[noreturn]] static void CPPUNIT_API failNotEqual( std::string expected,
std::string actual,
const SourceLine &sourceLine,
const AdditionalMessage &additionalMessage = AdditionalMessage(),
--
2.20.1
......@@ -15,6 +15,8 @@ $(eval $(call gb_UnpackedTarball_update_autoconf_configs,cppunit))
# gcc9.patch.0 addressed upstream with <https://gerrit.libreoffice.org/58690> "Avoid GCC 9
# -Wdeprecated-copy":
# 0001-Unconditionally-use-C-11-noreturn.patch.1 upstream at <https://gerrit.libreoffice.org/67247>
# "Unconditionally use C++11 [[noreturn]]"
$(eval $(call gb_UnpackedTarball_add_patches,cppunit,\
external/cppunit/windows.patch \
external/cppunit/unix.patch \
......@@ -22,6 +24,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cppunit,\
external/cppunit/enable-win32-debug.patch \
external/cppunit/rtti.patch.0 \
external/cppunit/gcc9.patch.0 \
external/cppunit/0001-Unconditionally-use-C-11-noreturn.patch.1 \
))
ifeq ($(DISABLE_DYNLOADING),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,cppunit,\
......
......@@ -43,7 +43,7 @@ private:
sal_Int32 SAL_CALL readBytes(css::uno::Sequence<sal_Int8> &, sal_Int32)
override
{ CPPUNIT_FAIL("readLine is supposed to call readSomeBytes instead"); return 0;}
{ CPPUNIT_FAIL("readLine is supposed to call readSomeBytes instead"); }
sal_Int32 SAL_CALL readSomeBytes(
css::uno::Sequence<sal_Int8 > & aData, sal_Int32 nMaxBytesToRead) override
......
......@@ -11,7 +11,6 @@
#include <memory>
#include <o3tl/unreachable.hxx>
#include <vcl/mtfxmldump.hxx>
namespace {
......@@ -97,7 +96,6 @@ OUString XmlTestTools::getXPathContent(xmlDocPtr pXmlDoc, const OString& rXPath)
{
case XPATH_UNDEFINED:
CPPUNIT_FAIL("Undefined XPath type");
O3TL_UNREACHABLE;
case XPATH_NODESET:
{
xmlNodeSetPtr pXmlNodes = pXmlObj->nodesetval;
......@@ -132,7 +130,6 @@ OUString XmlTestTools::getXPathContent(xmlDocPtr pXmlDoc, const OString& rXPath)
}
CPPUNIT_FAIL("Invalid XPath type");
return OUString(); // to suppress "Not all control paths return a value" warning on MSVC
}
void XmlTestTools::assertXPath(xmlDocPtr pXmlDoc, const OString& rXPath, const OString& rAttribute, const OUString& rExpectedValue)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment