Suppress -Wsuggest-override warnings in user code for gcc too

This was already done for clang -Winconsistent-missing-override, but
gcc has a similar warning since 5.1 and, moreover, latest versions of
clang support this gcc warning as well, so add a special macro which
handles both compilers and use it in all wx macros defining virtual
functions instead of just disabling one of the clang warnings.

Closes https://github.com/wxWidgets/wxWidgets/pull/2000
This commit is contained in:
Teodor Petrov
2020-07-27 00:00:35 +03:00
committed by Vadim Zeitlin
parent 19db07d668
commit c924ecb10a
4 changed files with 29 additions and 7 deletions

View File

@@ -708,6 +708,28 @@ typedef short int WXTYPE;
# define wxCLANG_WARNING_RESTORE(x) # define wxCLANG_WARNING_RESTORE(x)
#endif #endif
/*
Specific macro for disabling warnings related to not using override: this
has to be done differently for gcc and clang and is only supported since
gcc 5.1.
*/
#if defined(__clang__)
# define wxWARNING_SUPPRESS_MISSING_OVERRIDE() \
wxCLANG_WARNING_SUPPRESS(suggest-override) \
wxCLANG_WARNING_SUPPRESS(inconsistent-missing-override)
# define wxWARNING_RESTORE_MISSING_OVERRIDE() \
wxCLANG_WARNING_RESTORE(inconsistent-missing-override) \
wxCLANG_WARNING_RESTORE(suggest-override)
#elif wxCHECK_GCC_VERSION(5, 1)
# define wxWARNING_SUPPRESS_MISSING_OVERRIDE() \
wxGCC_WARNING_SUPPRESS(suggest-override)
# define wxWARNING_RESTORE_MISSING_OVERRIDE() \
wxGCC_WARNING_RESTORE(suggest-override)
#else
# define wxWARNING_SUPPRESS_MISSING_OVERRIDE()
# define wxWARNING_RESTORE_MISSING_OVERRIDE()
#endif
/* /*
Combination of the two variants above: should be used for deprecated Combination of the two variants above: should be used for deprecated
functions which are defined inline and are used by wxWidgets itself. functions which are defined inline and are used by wxWidgets itself.

View File

@@ -4273,10 +4273,10 @@ typedef void (wxEvtHandler::*wxPressAndTapEventFunction)(wxPressAndTapEvent&);
private: \ private: \
static const wxEventTableEntry sm_eventTableEntries[]; \ static const wxEventTableEntry sm_eventTableEntries[]; \
protected: \ protected: \
wxCLANG_WARNING_SUPPRESS(inconsistent-missing-override) \ wxWARNING_SUPPRESS_MISSING_OVERRIDE() \
const wxEventTable* GetEventTable() const; \ const wxEventTable* GetEventTable() const; \
wxEventHashTable& GetEventHashTable() const; \ wxEventHashTable& GetEventHashTable() const; \
wxCLANG_WARNING_RESTORE(inconsistent-missing-override) \ wxWARNING_RESTORE_MISSING_OVERRIDE() \
static const wxEventTable sm_eventTable; \ static const wxEventTable sm_eventTable; \
static wxEventHashTable sm_eventHashTable static wxEventHashTable sm_eventHashTable

View File

@@ -103,13 +103,13 @@ protected:
/// of the formatting dialog. /// of the formatting dialog.
#define DECLARE_HELP_PROVISION() \ #define DECLARE_HELP_PROVISION() \
wxCLANG_WARNING_SUPPRESS(inconsistent-missing-override) \ wxWARNING_SUPPRESS_MISSING_OVERRIDE() \
virtual long GetHelpId() const { return sm_helpInfo.GetHelpId(); } \ virtual long GetHelpId() const { return sm_helpInfo.GetHelpId(); } \
virtual void SetHelpId(long id) { sm_helpInfo.SetHelpId(id); } \ virtual void SetHelpId(long id) { sm_helpInfo.SetHelpId(id); } \
virtual wxRichTextUICustomization* GetUICustomization() const { return sm_helpInfo.GetUICustomization(); } \ virtual wxRichTextUICustomization* GetUICustomization() const { return sm_helpInfo.GetUICustomization(); } \
virtual void SetUICustomization(wxRichTextUICustomization* customization) { sm_helpInfo.SetUICustomization(customization); } \ virtual void SetUICustomization(wxRichTextUICustomization* customization) { sm_helpInfo.SetUICustomization(customization); } \
virtual bool ShowHelp(wxWindow* win) { return sm_helpInfo.ShowHelp(win); } \ virtual bool ShowHelp(wxWindow* win) { return sm_helpInfo.ShowHelp(win); } \
wxCLANG_WARNING_RESTORE(inconsistent-missing-override) \ wxWARNING_RESTORE_MISSING_OVERRIDE() \
public: \ public: \
static wxRichTextHelpInfo& GetHelpInfo() { return sm_helpInfo; }\ static wxRichTextHelpInfo& GetHelpInfo() { return sm_helpInfo; }\
protected: \ protected: \

View File

@@ -140,9 +140,9 @@ WXDLLIMPEXP_BASE wxObject *wxCreateDynamicObject(const wxString& name);
#define wxDECLARE_ABSTRACT_CLASS(name) \ #define wxDECLARE_ABSTRACT_CLASS(name) \
public: \ public: \
static wxClassInfo ms_classInfo; \ static wxClassInfo ms_classInfo; \
wxCLANG_WARNING_SUPPRESS(inconsistent-missing-override) \ wxWARNING_SUPPRESS_MISSING_OVERRIDE() \
virtual wxClassInfo *GetClassInfo() const \ virtual wxClassInfo *GetClassInfo() const; \
wxCLANG_WARNING_RESTORE(inconsistent-missing-override) wxWARNING_RESTORE_MISSING_OVERRIDE()
#define wxDECLARE_DYNAMIC_CLASS_NO_ASSIGN(name) \ #define wxDECLARE_DYNAMIC_CLASS_NO_ASSIGN(name) \
wxDECLARE_NO_ASSIGN_CLASS(name); \ wxDECLARE_NO_ASSIGN_CLASS(name); \