[Libreoffice-commits] core.git: 2 commits - basic/source compilerplugins/clang cui/source include/basic include/vcl sc/source solenv/CompilerTest_compilerplugins_clang.mk vcl/source
Jochen Nitschke
j.nitschke+logerrit at ok.de
Fri Aug 11 19:25:10 UTC 2017
basic/source/sbx/sbxvar.cxx | 56 ---------------
compilerplugins/clang/deadclass.cxx | 74 ++++++++++++++++++++
compilerplugins/clang/test/deadclass.cxx | 14 +++
cui/source/dialogs/SpellAttrib.cxx | 36 ---------
cui/source/dialogs/SpellAttrib.hxx | 11 ---
include/basic/sbx.hxx | 12 ---
include/vcl/txtattr.hxx | 16 ----
sc/source/filter/inc/biffcodec.hxx | 37 ----------
sc/source/filter/oox/biffcodec.cxx | 99 ---------------------------
solenv/CompilerTest_compilerplugins_clang.mk | 1
vcl/source/edit/textdoc.cxx | 16 +---
vcl/source/edit/txtattr.cxx | 27 -------
12 files changed, 98 insertions(+), 301 deletions(-)
New commits:
commit 7634b279a53e7212925566e0de25d721fa7598ac
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date: Fri Aug 11 11:39:20 2017 +0200
vcl: use default copy-ctor for TextAttrib
Type of TextAttrib (mnWhich) never changes, const it up.
Derived classes can use implicit default copy-ctor.
No need to explicitly delete default-ctor if there is
a user provided ctor.
And no need to define a default override dtor here either.
Change-Id: I7a0d1896f659801319dc5fa74844df94c5888a7b
Reviewed-on: https://gerrit.libreoffice.org/41022
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/cui/source/dialogs/SpellAttrib.cxx b/cui/source/dialogs/SpellAttrib.cxx
index b71449d98295..cc1b86c6a66a 100644
--- a/cui/source/dialogs/SpellAttrib.cxx
+++ b/cui/source/dialogs/SpellAttrib.cxx
@@ -32,18 +32,6 @@ SpellErrorAttrib::SpellErrorAttrib( const SpellErrorDescription& rDesc ) :
}
-SpellErrorAttrib::SpellErrorAttrib( const SpellErrorAttrib& rAttr ) :
- TextAttrib(TEXTATTR_SPELL_ERROR),
- m_aSpellErrorDescription( rAttr.m_aSpellErrorDescription )
-{
-}
-
-
-SpellErrorAttrib::~SpellErrorAttrib()
-{
-}
-
-
void SpellErrorAttrib::SetFont( vcl::Font& ) const
{
//this attribute doesn't have a visual effect
@@ -70,18 +58,6 @@ SpellLanguageAttrib::SpellLanguageAttrib(LanguageType eLang) :
}
-SpellLanguageAttrib::SpellLanguageAttrib( const SpellLanguageAttrib& rAttr ) :
- TextAttrib(TEXTATTR_SPELL_LANGUAGE),
- m_eLanguage(rAttr.m_eLanguage)
-{
-}
-
-
-SpellLanguageAttrib::~SpellLanguageAttrib()
-{
-}
-
-
void SpellLanguageAttrib::SetFont( vcl::Font& ) const
{
//no visual effect
@@ -108,18 +84,6 @@ SpellBackgroundAttrib::SpellBackgroundAttrib(const Color& rCol) :
}
-SpellBackgroundAttrib::SpellBackgroundAttrib( const SpellBackgroundAttrib& rAttr ) :
- TextAttrib(TEXTATTR_SPELL_BACKGROUND),
- m_aBackgroundColor(rAttr.m_aBackgroundColor)
-{
-}
-
-
-SpellBackgroundAttrib::~SpellBackgroundAttrib()
-{
-}
-
-
void SpellBackgroundAttrib::SetFont( vcl::Font& rFont ) const
{
rFont.SetFillColor(m_aBackgroundColor);
diff --git a/cui/source/dialogs/SpellAttrib.hxx b/cui/source/dialogs/SpellAttrib.hxx
index 3ce4048d4021..aabf466235c3 100644
--- a/cui/source/dialogs/SpellAttrib.hxx
+++ b/cui/source/dialogs/SpellAttrib.hxx
@@ -96,11 +96,8 @@ public:
private:
SpellErrorDescription m_aSpellErrorDescription;
- SpellErrorAttrib() = delete;
public:
SpellErrorAttrib( const SpellErrorDescription& );
- SpellErrorAttrib( const SpellErrorAttrib& rAttr );
- virtual ~SpellErrorAttrib() override;
const SpellErrorDescription& GetErrorDescription() const { return m_aSpellErrorDescription; }
@@ -115,12 +112,8 @@ class SpellLanguageAttrib : public TextAttrib
{
LanguageType m_eLanguage;
- SpellLanguageAttrib() = delete;
-
public:
SpellLanguageAttrib(LanguageType eLanguage);
- SpellLanguageAttrib( const SpellLanguageAttrib& rAttr );
- virtual ~SpellLanguageAttrib() override;
LanguageType GetLanguage() const {return m_eLanguage;}
@@ -134,12 +127,8 @@ class SpellBackgroundAttrib : public TextAttrib
{
Color m_aBackgroundColor;
- SpellBackgroundAttrib() = delete;
-
public:
SpellBackgroundAttrib(const Color& rCol);
- SpellBackgroundAttrib( const SpellBackgroundAttrib& rAttr );
- virtual ~SpellBackgroundAttrib() override;
virtual void SetFont( vcl::Font& rFont ) const override;
virtual TextAttrib* Clone() const override;
diff --git a/include/vcl/txtattr.hxx b/include/vcl/txtattr.hxx
index e446ee203563..8fadf98cc46f 100644
--- a/include/vcl/txtattr.hxx
+++ b/include/vcl/txtattr.hxx
@@ -39,11 +39,11 @@ namespace vcl { class Font; }
class VCL_DLLPUBLIC TextAttrib
{
private:
- sal_uInt16 mnWhich;
+ sal_uInt16 const mnWhich;
protected:
- TextAttrib( sal_uInt16 nWhich ) { mnWhich = nWhich; }
- TextAttrib( const TextAttrib& rAttr ) { mnWhich = rAttr.mnWhich; }
+ TextAttrib( sal_uInt16 nWhich ) : mnWhich(nWhich) {}
+ TextAttrib( const TextAttrib& ) = default;
public:
@@ -66,8 +66,6 @@ private:
public:
TextAttribFontColor( const Color& rColor );
- TextAttribFontColor( const TextAttribFontColor& rAttr );
- virtual ~TextAttribFontColor() override;
const Color& GetColor() const { return maColor; }
@@ -84,8 +82,6 @@ private:
public:
TextAttribFontWeight( FontWeight eWeight );
- TextAttribFontWeight( const TextAttribFontWeight& rAttr );
- virtual ~TextAttribFontWeight() override;
virtual void SetFont( vcl::Font& rFont ) const override;
virtual TextAttrib* Clone() const override;
@@ -98,8 +94,6 @@ class VCL_DLLPUBLIC TextAttribProtect : public TextAttrib
{
public:
TextAttribProtect();
- TextAttribProtect( const TextAttribProtect& rAttr );
- virtual ~TextAttribProtect() override;
virtual void SetFont( vcl::Font& rFont ) const override;
virtual TextAttrib* Clone() const override;
@@ -116,13 +110,9 @@ private:
sal_Int32 mnStart;
sal_Int32 mnEnd;
-protected:
-
public:
-
TextCharAttrib( const TextAttrib& rAttr, sal_Int32 nStart, sal_Int32 nEnd );
TextCharAttrib( const TextCharAttrib& rTextCharAttrib );
- ~TextCharAttrib();
const TextAttrib& GetAttr() const { return *mpAttr; }
diff --git a/vcl/source/edit/textdoc.cxx b/vcl/source/edit/textdoc.cxx
index dce76e1cc0b6..25b19fb521c4 100644
--- a/vcl/source/edit/textdoc.cxx
+++ b/vcl/source/edit/textdoc.cxx
@@ -29,20 +29,16 @@ static bool CompareStart( const std::unique_ptr<TextCharAttrib>& pFirst, const s
}
TextCharAttrib::TextCharAttrib( const TextAttrib& rAttr, sal_Int32 nStart, sal_Int32 nEnd )
+ : mpAttr(rAttr.Clone())
+ , mnStart(nStart)
+ , mnEnd(nEnd)
{
- mpAttr.reset( rAttr.Clone() );
- mnStart = nStart;
- mnEnd = nEnd;
}
TextCharAttrib::TextCharAttrib( const TextCharAttrib& rTextCharAttrib )
-{
- mpAttr.reset( rTextCharAttrib.GetAttr().Clone() );
- mnStart = rTextCharAttrib.mnStart;
- mnEnd = rTextCharAttrib.mnEnd;
-}
-
-TextCharAttrib::~TextCharAttrib()
+ : mpAttr(rTextCharAttrib.mpAttr->Clone())
+ , mnStart(rTextCharAttrib.mnStart)
+ , mnEnd(rTextCharAttrib.mnEnd)
{
}
diff --git a/vcl/source/edit/txtattr.cxx b/vcl/source/edit/txtattr.cxx
index 4065995314ec..f1a6e1ea6b0c 100644
--- a/vcl/source/edit/txtattr.cxx
+++ b/vcl/source/edit/txtattr.cxx
@@ -34,15 +34,6 @@ TextAttribFontColor::TextAttribFontColor( const Color& rColor )
{
}
-TextAttribFontColor::TextAttribFontColor( const TextAttribFontColor& rAttr )
- : TextAttrib( rAttr ), maColor( rAttr.maColor )
-{
-}
-
-TextAttribFontColor::~TextAttribFontColor()
-{
-}
-
void TextAttribFontColor::SetFont( vcl::Font& rFont ) const
{
rFont.SetColor( maColor );
@@ -64,15 +55,6 @@ TextAttribFontWeight::TextAttribFontWeight( FontWeight eWeight )
{
}
-TextAttribFontWeight::TextAttribFontWeight( const TextAttribFontWeight& rAttr )
- : TextAttrib( rAttr ), meWeight( rAttr.meWeight )
-{
-}
-
-TextAttribFontWeight::~TextAttribFontWeight()
-{
-}
-
void TextAttribFontWeight::SetFont( vcl::Font& rFont ) const
{
rFont.SetWeight( meWeight );
@@ -94,15 +76,6 @@ TextAttribProtect::TextAttribProtect() :
{
}
-TextAttribProtect::TextAttribProtect( const TextAttribProtect&) :
- TextAttrib( TEXTATTR_PROTECTED )
-{
-}
-
-TextAttribProtect::~TextAttribProtect()
-{
-}
-
void TextAttribProtect::SetFont( vcl::Font& ) const
{
}
commit 4d89865ef2026f40a9a4d66f3e047b77454e6fee
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Fri Aug 11 14:55:50 2017 +0200
new loplugin:deadclass
look for classes which only have copy/move constructors, and so are
effectively dead
Change-Id: I0b844f301e2200c2b40031856bfdb0b0e2c8f77d
Reviewed-on: https://gerrit.libreoffice.org/41039
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/basic/source/sbx/sbxvar.cxx b/basic/source/sbx/sbxvar.cxx
index 2e0d49c927a2..df30aad6ebe8 100644
--- a/basic/source/sbx/sbxvar.cxx
+++ b/basic/source/sbx/sbxvar.cxx
@@ -624,62 +624,6 @@ SbxInfo::SbxInfo( const OUString& r, sal_uInt32 n )
: aHelpFile( r ), nHelpId( n )
{}
-// SbxAlias
-
-SbxAlias::SbxAlias( const SbxAlias& r )
- : SvRefBase( r ), SbxVariable( r ),
- SfxListener( r ), xAlias( r.xAlias )
-{}
-
-SbxAlias& SbxAlias::operator=( const SbxAlias& r )
-{
- xAlias = r.xAlias;
- return *this;
-}
-
-SbxAlias::~SbxAlias()
-{
- if( xAlias.is() )
- {
- EndListening( xAlias->GetBroadcaster() );
- }
-}
-
-void SbxAlias::Broadcast( SfxHintId nHt )
-{
- if( xAlias.is() )
- {
- xAlias->SetParameters( GetParameters() );
- if( nHt == SfxHintId::BasicDataWanted )
- {
- SbxVariable::operator=( *xAlias );
- }
- else if( nHt == SfxHintId::BasicDataChanged || nHt == SfxHintId::BasicConverted )
- {
- *xAlias = *this;
- }
- else if( nHt == SfxHintId::BasicInfoWanted )
- {
- xAlias->Broadcast( nHt );
- pInfo = xAlias->GetInfo();
- }
- }
-}
-
-void SbxAlias::Notify( SfxBroadcaster&, const SfxHint& rHint )
-{
- const SbxHint* p = dynamic_cast<const SbxHint*>(&rHint);
- if( p && p->GetId() == SfxHintId::BasicDying )
- {
- xAlias.clear();
- // delete the alias?
- if( pParent )
- {
- pParent->Remove( this );
- }
- }
-}
-
void SbxVariable::Dump( SvStream& rStrm, bool bFill )
{
OString aBNameStr(OUStringToOString(GetName( SbxNameType::ShortTypes ), RTL_TEXTENCODING_ASCII_US));
diff --git a/compilerplugins/clang/deadclass.cxx b/compilerplugins/clang/deadclass.cxx
new file mode 100644
index 000000000000..1c14dd52d136
--- /dev/null
+++ b/compilerplugins/clang/deadclass.cxx
@@ -0,0 +1,74 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "plugin.hxx"
+
+namespace {
+
+class DeadClass:
+ public RecursiveASTVisitor<DeadClass>, public loplugin::Plugin
+{
+public:
+ explicit DeadClass(InstantiationData const & data): Plugin(data) {}
+
+ void run() override;
+
+ bool VisitCXXRecordDecl(CXXRecordDecl const *);
+};
+
+void DeadClass::run() {
+ if (compiler.getLangOpts().CPlusPlus) {
+ TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
+ }
+}
+
+bool DeadClass::VisitCXXRecordDecl(CXXRecordDecl const * decl) {
+ if (ignoreLocation(decl) || !decl->isThisDeclarationADefinition())
+ return true;
+ if (decl->needsImplicitDefaultConstructor())
+ return true;
+ if (decl->getDescribedClassTemplate())
+ return true;
+ if (isa<ClassTemplateSpecializationDecl>(decl))
+ return true;
+ int otherCnt = 0;
+ int copyMoveCnt = 0;
+ for (auto i = decl->ctor_begin(); i != decl->ctor_end(); ++i) {
+ if (!i->isUserProvided())
+ continue;
+// if (i->getTemplatedKind() != clang::FunctionDecl::TK_NonTemplate)
+// return true;
+// if (i->getTemplateInstantiationPattern())
+// return true;
+ if (i->isCopyOrMoveConstructor())
+ copyMoveCnt++;
+ else
+ otherCnt++;
+ }
+ if (otherCnt == 0 && copyMoveCnt > 0)
+ {
+ report(
+ DiagnosticsEngine::Warning,
+ "class has only copy/move constructors, must be dead",
+ decl->getLocStart())
+ << decl->getSourceRange();
+ for (auto i = decl->ctor_begin(); i != decl->ctor_end(); ++i) {
+ if (i->isDeleted())
+ continue;
+ i->dump();
+ }
+ }
+ return true;
+}
+
+loplugin::Plugin::Registration<DeadClass> X("deadclass");
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/test/deadclass.cxx b/compilerplugins/clang/test/deadclass.cxx
new file mode 100644
index 000000000000..d8b9cdb60889
--- /dev/null
+++ b/compilerplugins/clang/test/deadclass.cxx
@@ -0,0 +1,14 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+struct Foo { // expected-error {{class has only copy/move constructors, must be dead [loplugin:deadclass]}}
+ Foo(Foo&);
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/include/basic/sbx.hxx b/include/basic/sbx.hxx
index 0e905fd333b1..45d00555ec3d 100644
--- a/include/basic/sbx.hxx
+++ b/include/basic/sbx.hxx
@@ -97,18 +97,6 @@ public:
SbxVariable* GetVar() const { return pVar; }
};
-// SbxAlias is an alias for a var or object
-class BASIC_DLLPUBLIC SbxAlias : public SbxVariable, public SfxListener
-{
- SbxVariableRef xAlias;
- virtual ~SbxAlias() override;
- virtual void Broadcast( SfxHintId ) override;
- virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
-public:
- SbxAlias( const SbxAlias& );
- SbxAlias& operator=( const SbxAlias& );
-};
-
// SbxArray is an unidimensional, dynamic Array
// The variables convert from SbxVariablen. Put()/Insert() into the
// declared datatype, if they are not SbxVARIANT.
diff --git a/sc/source/filter/inc/biffcodec.hxx b/sc/source/filter/inc/biffcodec.hxx
index 4548ff6a9b4a..6375b52e1e3a 100644
--- a/sc/source/filter/inc/biffcodec.hxx
+++ b/sc/source/filter/inc/biffcodec.hxx
@@ -54,43 +54,6 @@ private:
bool mbValid; /// True = decoder is correctly initialized.
};
-/** Decodes BIFF stream contents that are encoded using the old XOR algorithm. */
-class BiffDecoder_XOR : public BiffDecoderBase
-{
-private:
- /** Copy constructor for cloning. */
- BiffDecoder_XOR( const BiffDecoder_XOR& rDecoder );
-
- /** Implements password verification and initialization of the decoder. */
- virtual css::uno::Sequence< css::beans::NamedValue > implVerifyPassword( const OUString& rPassword ) override;
- virtual bool implVerifyEncryptionData( const css::uno::Sequence< css::beans::NamedValue >& rEncryptionData ) override;
-
-private:
- ::oox::core::BinaryCodec_XOR maCodec; /// Cipher algorithm implementation.
- css::uno::Sequence< css::beans::NamedValue > maEncryptionData;
- sal_uInt16 mnKey;
- sal_uInt16 mnHash;
-};
-
-/** Decodes BIFF stream contents that are encoded using the RC4 algorithm. */
-class BiffDecoder_RCF : public BiffDecoderBase
-{
-private:
- /** Copy constructor for cloning. */
- BiffDecoder_RCF( const BiffDecoder_RCF& rDecoder );
-
- /** Implements password verification and initialization of the decoder. */
- virtual css::uno::Sequence< css::beans::NamedValue > implVerifyPassword( const OUString& rPassword ) override;
- virtual bool implVerifyEncryptionData( const css::uno::Sequence< css::beans::NamedValue >& rEncryptionData ) override;
-
-private:
- ::oox::core::BinaryCodec_RCF maCodec; /// Cipher algorithm implementation.
- css::uno::Sequence< css::beans::NamedValue > maEncryptionData;
- ::std::vector< sal_uInt8 > maSalt;
- ::std::vector< sal_uInt8 > maVerifier;
- ::std::vector< sal_uInt8 > maVerifierHash;
-};
-
} // namespace xls
} // namespace oox
diff --git a/sc/source/filter/oox/biffcodec.cxx b/sc/source/filter/oox/biffcodec.cxx
index 4f924a3a3b5f..5c8e421301a3 100644
--- a/sc/source/filter/oox/biffcodec.cxx
+++ b/sc/source/filter/oox/biffcodec.cxx
@@ -52,105 +52,6 @@ BiffDecoderBase::~BiffDecoderBase()
return mbValid ? ::comphelper::DocPasswordVerifierResult::OK : ::comphelper::DocPasswordVerifierResult::WrongPassword;
}
-BiffDecoder_XOR::BiffDecoder_XOR( const BiffDecoder_XOR& rDecoder ) :
- BiffDecoderBase(), // must be called to prevent compiler warning
- maCodec(),
- maEncryptionData( rDecoder.maEncryptionData ),
- mnKey( rDecoder.mnKey ),
- mnHash( rDecoder.mnHash )
-{
- if( isValid() )
- maCodec.initCodec( maEncryptionData );
-}
-
-Sequence< NamedValue > BiffDecoder_XOR::implVerifyPassword( const OUString& rPassword )
-{
- maEncryptionData.realloc( 0 );
-
- /* Convert password to a byte string. TODO: this needs some finetuning
- according to the spec... */
- OString aBytePassword = OUStringToOString( rPassword, osl_getThreadTextEncoding() );
- sal_Int32 nLen = aBytePassword.getLength();
- if( (0 < nLen) && (nLen < 16) )
- {
- // init codec
- maCodec.initKey( reinterpret_cast< const sal_uInt8* >( aBytePassword.getStr() ) );
-
- if( maCodec.verifyKey( mnKey, mnHash ) )
- maEncryptionData = maCodec.getEncryptionData();
- }
-
- return maEncryptionData;
-}
-
-bool BiffDecoder_XOR::implVerifyEncryptionData( const Sequence< NamedValue >& rEncryptionData )
-{
- maEncryptionData.realloc( 0 );
-
- if( rEncryptionData.hasElements() )
- {
- // init codec
- maCodec.initCodec( rEncryptionData );
-
- if( maCodec.verifyKey( mnKey, mnHash ) )
- maEncryptionData = rEncryptionData;
- }
-
- return maEncryptionData.hasElements();
-}
-
-
-BiffDecoder_RCF::BiffDecoder_RCF( const BiffDecoder_RCF& rDecoder ) :
- BiffDecoderBase(), // must be called to prevent compiler warning
- maEncryptionData( rDecoder.maEncryptionData ),
- maSalt( rDecoder.maSalt ),
- maVerifier( rDecoder.maVerifier ),
- maVerifierHash( rDecoder.maVerifierHash )
-{
- if( isValid() )
- maCodec.initCodec( maEncryptionData );
-}
-
-Sequence< NamedValue > BiffDecoder_RCF::implVerifyPassword( const OUString& rPassword )
-{
- maEncryptionData.realloc( 0 );
-
- sal_Int32 nLen = rPassword.getLength();
- if( (0 < nLen) && (nLen < 16) )
- {
- // copy string to sal_uInt16 array
- ::std::vector< sal_uInt16 > aPassVect( 16 );
- const sal_Unicode* pcChar = rPassword.getStr();
- const sal_Unicode* pcCharEnd = pcChar + nLen;
- ::std::vector< sal_uInt16 >::iterator aIt = aPassVect.begin();
- for( ; pcChar < pcCharEnd; ++pcChar, ++aIt )
- *aIt = static_cast< sal_uInt16 >( *pcChar );
-
- // init codec
- maCodec.initKey(aPassVect.data(), maSalt.data());
- if (maCodec.verifyKey(maVerifier.data(), maVerifierHash.data()))
- maEncryptionData = maCodec.getEncryptionData();
- }
-
- return maEncryptionData;
-}
-
-bool BiffDecoder_RCF::implVerifyEncryptionData( const Sequence< NamedValue >& rEncryptionData )
-{
- maEncryptionData.realloc( 0 );
-
- if( rEncryptionData.hasElements() )
- {
- // init codec
- maCodec.initCodec( rEncryptionData );
-
- if (maCodec.verifyKey(maVerifier.data(), maVerifierHash.data()))
- maEncryptionData = rEncryptionData;
- }
-
- return maEncryptionData.hasElements();
-}
-
} // namespace xls
} // namespace oox
diff --git a/solenv/CompilerTest_compilerplugins_clang.mk b/solenv/CompilerTest_compilerplugins_clang.mk
index 22bbb1fcc9a1..c19a9134dc72 100644
--- a/solenv/CompilerTest_compilerplugins_clang.mk
+++ b/solenv/CompilerTest_compilerplugins_clang.mk
@@ -13,6 +13,7 @@ $(eval $(call gb_CompilerTest_add_exception_objects,compilerplugins_clang, \
compilerplugins/clang/test/casttovoid \
compilerplugins/clang/test/constparams \
compilerplugins/clang/test/cppunitassertequals \
+ compilerplugins/clang/test/deadclass \
compilerplugins/clang/test/datamembershadow \
compilerplugins/clang/test/externvar \
compilerplugins/clang/test/finalprotected \
More information about the Libreoffice-commits
mailing list