Kaydet (Commit) 7f0bf622 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Revert "check for unnecessary DLLPUBLIC annotations"

This reverts commit a599eeab, plus follow-up
fa443144 "Avoid bogus loplugin:dllmacro
'unnecessary *DLLPUBLIC declaration ...'".  See (abandoned)
<https://gerrit.libreoffice.org/#/c/42983/> "loplugin:dllmacro: Handle implicit
member functions" how this would have needed to be extended to give consistent
results across Linux and macOS, but then would have started to remove DLLPUBLIC
from entities that apparently need to at least have default type visibility on
macOS and started to make tests fail.
üst aed18703
......@@ -50,7 +50,7 @@ template< typename T >
<p>In case no number can be generated from the Any, NaN (see
rtl::math::SetNAN()) is returned.</p>
*/
struct AnyToDouble
struct OOO_DLLPUBLIC_CHARTTOOLS AnyToDouble
{
double operator() ( const css::uno::Any & rAny )
{
......@@ -64,7 +64,7 @@ struct AnyToDouble
/** unary function to convert css::uno::Any into an
OUString.
*/
struct AnyToString
struct OOO_DLLPUBLIC_CHARTTOOLS AnyToString
{
OUString operator() ( const css::uno::Any & rAny )
{
......@@ -93,7 +93,7 @@ struct AnyToString
<p>For conversion rtl::math::StringToDouble is used.</p>
*/
struct OUStringToDouble
struct OOO_DLLPUBLIC_CHARTTOOLS OUStringToDouble
{
double operator() ( const OUString & rStr )
{
......@@ -111,7 +111,7 @@ struct OUStringToDouble
<p>For conversion rtl::math::DoubleToOUString is used.</p>
*/
struct DoubleToOUString
struct OOO_DLLPUBLIC_CHARTTOOLS DoubleToOUString
{
OUString operator() ( double fNumber )
{
......
......@@ -138,7 +138,7 @@ OOO_DLLPUBLIC_CHARTTOOLS void setEmptyPropertyValueDefault( tPropertyValueMap &
} // namespace PropertyHelper
struct PropertyNameLess
struct OOO_DLLPUBLIC_CHARTTOOLS PropertyNameLess
{
bool operator() ( const css::beans::Property & first,
const css::beans::Property & second )
......
......@@ -8,54 +8,32 @@
*/
#include "plugin.hxx"
#include <iostream>
#include <fstream>
/**
Check the usage of the various DLL visibility macros.
*/
class DllMacro final:
public RecursiveASTVisitor<DllMacro>, public loplugin::Plugin
namespace {
class Visitor final:
public RecursiveASTVisitor<Visitor>, public loplugin::Plugin
{
public:
explicit DllMacro(InstantiationData const & data): Plugin(data) {}
bool VisitNamedDecl(NamedDecl const * decl);
explicit Visitor(InstantiationData const & data): Plugin(data) {}
private:
void run() override {
// DISABLE_DYNLOADING makes SAL_DLLPUBLIC_{EXPORT,IMPORT,TEMPLATE} expand
// to visibility("hidden") attributes, which would cause bogus warnings
// here (e.g., in UBSan builds that explicitly define DISABLE_DYNLOADING
// in jurt/source/pipe/staticsalhack.cxx); alternatively, change
// include/sal/types.h to make those SAL_DLLPUBLIC_* expand to nothing
// for DISABLE_DYNLOADING:
if (!compiler.getPreprocessor().getIdentifierInfo("DISABLE_DYNLOADING")
->hasMacroDefinition())
bool VisitNamedDecl(NamedDecl const * decl) {
if (!decl->getLocation().isInvalid()&&ignoreLocation(decl)) {
return true;
}
auto a = decl->getAttr<VisibilityAttr>();
if (a == nullptr || a->getVisibility() != VisibilityAttr::Hidden) {
return true;
}
if (compiler.getSourceManager().isMacroBodyExpansion(
decl->getLocation())
&& (Lexer::getImmediateMacroName(
decl->getLocation(), compiler.getSourceManager(),
compiler.getLangOpts())
== "Q_OBJECT")) // from /usr/include/QtCore/qobjectdefs.h
{
TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
return true;
}
}
};
bool DllMacro::VisitNamedDecl(NamedDecl const * decl) {
if (!decl->getLocation().isInvalid() && ignoreLocation(decl)) {
return true;
}
auto a = decl->getAttr<VisibilityAttr>();
if (a == nullptr) {
return true;
}
if (compiler.getSourceManager().isMacroBodyExpansion(
decl->getLocation())
&& (Lexer::getImmediateMacroName(
decl->getLocation(), compiler.getSourceManager(),
compiler.getLangOpts())
== "Q_OBJECT")) // from /usr/include/QtCore/qobjectdefs.h
{
return true;
}
if (a->getVisibility() == VisibilityAttr::Hidden) {
auto p = dyn_cast<RecordDecl>(decl->getDeclContext());
if (p == nullptr) {
report(
......@@ -67,7 +45,7 @@ bool DllMacro::VisitNamedDecl(NamedDecl const * decl) {
report(
DiagnosticsEngine::Warning,
("declaration nested in DLLPRIVATE declaration redundantly"
" marked as DLLPRIVATE"),
" marked as DLLPRIVATE"),
a->getLocation())
<< decl->getSourceRange();
report(
......@@ -75,38 +53,27 @@ bool DllMacro::VisitNamedDecl(NamedDecl const * decl) {
p->getLocation())
<< p->getSourceRange();
}
return true;
}
else if (a->getVisibility() == VisibilityAttr::Default && !a->isInherited())
{
auto p = dyn_cast<CXXRecordDecl>(decl);
if (p && p->isCompleteDefinition() && !p->getDescribedClassTemplate()) {
// don't know what these macros mean, leave them alone
auto macroLoc = a->getLocation();
while (compiler.getSourceManager().isMacroBodyExpansion(macroLoc)) {
auto macroName = Lexer::getImmediateMacroName(
macroLoc, compiler.getSourceManager(),
compiler.getLangOpts());
if (macroName == "SAL_EXCEPTION_DLLPUBLIC_EXPORT")
return true;
if (macroName == "VCL_PLUGIN_PUBLIC")
return true;
macroLoc = compiler.getSourceManager().getImmediateMacroCallerLoc(macroLoc);
}
for (auto it = p->method_begin(); it != p->method_end(); ++it) {
if (!it->hasInlineBody()) {
return true;
}
}
report(
DiagnosticsEngine::Warning,
"unnecessary *DLLPUBLIC declaration for class completely defined in header file",
a->getLocation())
<< decl->getSourceRange();
private:
void run() override {
// DISABLE_DYNLOADING makes SAL_DLLPUBLIC_{EXPORT,IMPORT,TEMPLATE} expand
// to visibility("hidden") attributes, which would cause bogus warnings
// here (e.g., in UBSan builds that explicitly define DISABLE_DYNLOADING
// in jurt/source/pipe/staticsalhack.cxx); alternatively, change
// include/sal/types.h to make those SAL_DLLPUBLIC_* expand to nothing
// for DISABLE_DYNLOADING:
if (!compiler.getPreprocessor().getIdentifierInfo("DISABLE_DYNLOADING")
->hasMacroDefinition())
{
TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
}
}
return true;
}
};
static loplugin::Plugin::Registration<DllMacro> reg("dllmacro");
static loplugin::Plugin::Registration<Visitor> reg("dllprivate");
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
......@@ -55,7 +55,7 @@ public:
/** This exception is thrown, when the arithmetic expression
parser failed to parse a string.
*/
struct ParseError
struct OOO_DLLPUBLIC_DBTOOLS ParseError
{
ParseError( const char* ) {}
};
......
......@@ -36,7 +36,7 @@ class Content;
namespace dp_misc {
struct StrTitle
struct DESKTOP_DEPLOYMENTMISC_DLLPUBLIC StrTitle
{
static css::uno::Sequence< OUString > getTitleSequence()
{
......
......@@ -42,7 +42,7 @@ namespace basegfx
@see B3DTuple
*/
class SAL_WARN_UNUSED BColor : public B3DTuple
class SAL_WARN_UNUSED BASEGFX_DLLPUBLIC BColor : public B3DTuple
{
public:
/** Create a Color with red, green and blue components from [0.0 to 1.0]
......
......@@ -148,7 +148,7 @@ namespace basegfx
{
namespace utils
{
class B2DHomMatrixBufferedDecompose
class BASEGFX_DLLPUBLIC B2DHomMatrixBufferedDecompose
{
private:
B2DVector maScale;
......
......@@ -148,7 +148,7 @@ namespace basegfx
*/
BASEGFX_DLLPUBLIC double snapToNearestMultiple(double v, const double fStep);
class fTools
class BASEGFX_DLLPUBLIC fTools
{
public:
/// Get threshold value for equalZero and friends
......
......@@ -27,7 +27,7 @@
namespace basegfx
{
class BPixel
class BASEGFX_DLLPUBLIC BPixel
{
protected:
union
......
......@@ -32,7 +32,7 @@ namespace comphelper
// infos about one single property
struct PropertyDescription
struct COMPHELPER_DLLPUBLIC PropertyDescription
{
// the possibilities where a property holding object may be located
enum class LocationType
......
......@@ -472,7 +472,7 @@ namespace connectivity
/// TSetBound is a functor to set the bound value with e.q. for_each call
struct TSetBound
struct OOO_DLLPUBLIC_DBTOOLS TSetBound
{
bool m_bBound;
TSetBound(bool _bBound) : m_bBound(_bBound){}
......@@ -482,7 +482,7 @@ namespace connectivity
/// TSetBound is a functor to set the bound value with e.q. for_each call
struct TSetRefBound
struct OOO_DLLPUBLIC_DBTOOLS TSetRefBound
{
bool m_bBound;
TSetRefBound(bool _bBound) : m_bBound(_bBound){}
......
......@@ -26,7 +26,7 @@
#include <tools/solar.h>
#include <tools/stream.hxx>
class DffRecordHeader
class MSFILTER_DLLPUBLIC DffRecordHeader
{
public:
sal_uInt8 nRecVer; // may be DFF_PSFLAG_CONTAINER
......
......@@ -476,13 +476,13 @@ struct MSFILTER_DLLPUBLIC EncryptionVerifierRC4
EncryptionVerifierRC4();
};
struct StandardEncryptionInfo
struct MSFILTER_DLLPUBLIC StandardEncryptionInfo
{
EncryptionStandardHeader header;
EncryptionVerifierAES verifier;
};
struct RC4EncryptionInfo
struct MSFILTER_DLLPUBLIC RC4EncryptionInfo
{
EncryptionStandardHeader header;
EncryptionVerifierRC4 verifier;
......
......@@ -117,7 +117,7 @@ struct SdHyperlinkEntry
};
// Helper class for reading the PPT InteractiveInfoAtom
struct PptInteractiveInfoAtom
struct MSFILTER_DLLPUBLIC PptInteractiveInfoAtom
{
sal_uInt32 nSoundRef;
sal_uInt32 nExHyperlinkId;
......
......@@ -70,7 +70,7 @@ MSFILTER_DLLPUBLIC OString ConvertColor( const Color &rColor, bool bAutoColor =
/** Paper size in 1/100 millimeters. */
struct ApiPaperSize
struct MSFILTER_DLLPUBLIC ApiPaperSize
{
sal_Int32 mnWidth;
sal_Int32 mnHeight;
......
......@@ -24,7 +24,7 @@
#include <tools/fldunit.hxx>
#include <tools/mapunit.hxx>
class TransfrmHelper
class SVX_DLLPUBLIC TransfrmHelper
{
public:
static void ConvertRect(basegfx::B2DRange& rRange, const sal_uInt16 nDigits, const MapUnit ePoolUnit, const FieldUnit eDlgUnit)
......
......@@ -42,7 +42,7 @@ namespace svx
//= OXFormsDescriptor
struct OXFormsDescriptor {
struct SVX_DLLPUBLIC OXFormsDescriptor {
OUString szName;
OUString szServiceName;
......
......@@ -23,7 +23,7 @@
#include <tools/toolsdllapi.h>
#include <tools/gen.hxx>
class SAL_WARN_UNUSED SvBorder
class SAL_WARN_UNUSED TOOLS_DLLPUBLIC SvBorder
{
long nTop, nRight, nBottom, nLeft;
......
......@@ -110,7 +110,7 @@ enum class BmpFilter
Unknown = 65535
};
class BmpFilterParam
class VCL_DLLPUBLIC BmpFilterParam
{
public:
......
......@@ -206,7 +206,7 @@ enum class ShowDialogId
About = 2,
};
class CommandDialogData
class VCL_DLLPUBLIC CommandDialogData
{
ShowDialogId m_nDialogId;
public:
......@@ -242,7 +242,7 @@ enum class MediaCommand
NextTrackHold = 21,// Button Right holding pressed.
};
class CommandMediaData
class VCL_DLLPUBLIC CommandMediaData
{
MediaCommand m_nMediaId;
bool m_bPassThroughToOS;
......@@ -270,7 +270,7 @@ public:
sal_uLong GetEnd() const { return mnEnd; }
};
class CommandSwipeData
class VCL_DLLPUBLIC CommandSwipeData
{
double mnVelocityX;
public:
......@@ -286,7 +286,7 @@ public:
};
class CommandLongPressData
class VCL_DLLPUBLIC CommandLongPressData
{
double mnX;
double mnY;
......
......@@ -23,7 +23,7 @@
#include <vcl/dllapi.h>
#include <vcl/ptrstyle.hxx>
class Pointer
class VCL_DLLPUBLIC Pointer
{
PointerStyle meStyle;
......
......@@ -91,7 +91,7 @@ enum ScAxisPosition
}
struct ScDataBarFormatData
struct SC_DLLPUBLIC ScDataBarFormatData
{
ScDataBarFormatData():
maAxisColor(COL_BLACK),
......
......@@ -129,7 +129,7 @@ inline std::ostream &operator <<(std::ostream& s, const SwNodeIndex& index)
// SwRange
class SwNodeRange
class SW_DLLPUBLIC SwNodeRange
{
public:
SwNodeIndex aStart;
......
......@@ -47,7 +47,7 @@ inline bool SwFltGetFlag(sal_uLong nFieldFlags, int no)
//Subvert the Node/Content system to get positions which don't update as
//content is appended to them
struct SwFltPosition
struct SW_DLLPUBLIC SwFltPosition
{
public:
SwNodeIndex m_nNode;
......
......@@ -71,7 +71,7 @@ typedef void (*damageHandler)(void* handle,
sal_Int32 nExtentsX, sal_Int32 nExtentsY,
sal_Int32 nExtentsWidth, sal_Int32 nExtentsHeight);
struct DamageHandler
struct VCL_DLLPUBLIC DamageHandler
{
void *handle;
damageHandler damaged;
......
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