Merge branch 'cxx20-warnings'
Fix more C++20 warnings about incompatible enums. See #22683.
This commit is contained in:
commit
6fcca0c275
4 changed files with 59 additions and 10 deletions
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
|
@ -88,6 +88,10 @@ jobs:
|
|||
skip_samples: true
|
||||
use_asan: true
|
||||
use_xvfb: true
|
||||
- name: Ubuntu 22.04 wxGTK C++20
|
||||
runner: ubuntu-22.04
|
||||
configure_flags: --with-cxx=20
|
||||
skip_samples: true
|
||||
- name: Ubuntu 18.04 wxX11
|
||||
runner: ubuntu-18.04
|
||||
configure_flags: --with-x11 --enable-pch --disable-stc
|
||||
|
|
|
|||
|
|
@ -1465,12 +1465,21 @@ enum wxBorder
|
|||
Elements of these enums can be combined with each other when using
|
||||
wxSizer::Add() overload not using wxSizerFlags.
|
||||
*/
|
||||
wxALLOW_COMBINING_ENUMS(wxAlignment, wxBorder)
|
||||
wxALLOW_COMBINING_ENUMS(wxAlignment, wxDirection)
|
||||
wxALLOW_COMBINING_ENUMS(wxAlignment, wxGeometryCentre)
|
||||
wxALLOW_COMBINING_ENUMS(wxAlignment, wxSizerFlagBits)
|
||||
wxALLOW_COMBINING_ENUMS(wxAlignment, wxStretch)
|
||||
wxALLOW_COMBINING_ENUMS(wxAlignment, wxBorder)
|
||||
wxALLOW_COMBINING_ENUMS(wxDirection, wxStretch)
|
||||
wxALLOW_COMBINING_ENUMS(wxBorder, wxDirection)
|
||||
wxALLOW_COMBINING_ENUMS(wxBorder, wxGeometryCentre)
|
||||
wxALLOW_COMBINING_ENUMS(wxBorder, wxSizerFlagBits)
|
||||
wxALLOW_COMBINING_ENUMS(wxBorder, wxStretch)
|
||||
wxALLOW_COMBINING_ENUMS(wxDirection, wxGeometryCentre)
|
||||
wxALLOW_COMBINING_ENUMS(wxDirection, wxStretch)
|
||||
wxALLOW_COMBINING_ENUMS(wxDirection, wxSizerFlagBits)
|
||||
wxALLOW_COMBINING_ENUMS(wxGeometryCentre, wxSizerFlagBits)
|
||||
wxALLOW_COMBINING_ENUMS(wxGeometryCentre, wxStretch)
|
||||
wxALLOW_COMBINING_ENUMS(wxSizerFlagBits, wxStretch)
|
||||
|
||||
/* ---------------------------------------------------------------------------- */
|
||||
/* Window style flags */
|
||||
|
|
|
|||
|
|
@ -71,12 +71,12 @@ static void
|
|||
CheckMatch(const char* pattern,
|
||||
const char* text,
|
||||
const char* expected = NULL,
|
||||
int flags = wxRE_DEFAULT)
|
||||
int compileFlags = wxRE_DEFAULT,
|
||||
int matchFlags = 0)
|
||||
{
|
||||
int compileFlags = flags & ~(wxRE_NOTBOL | wxRE_NOTEOL);
|
||||
int matchFlags = flags & (wxRE_NOTBOL | wxRE_NOTEOL);
|
||||
|
||||
INFO( "Pattern: " << pattern << FlagStr(flags) << ", match: " << text );
|
||||
INFO( "Pattern: "
|
||||
<< pattern << FlagStr(static_cast<int>(compileFlags) | matchFlags)
|
||||
<< ", match: " << text );
|
||||
|
||||
wxRegEx re(pattern, compileFlags);
|
||||
if ( !re.IsValid() )
|
||||
|
|
@ -104,7 +104,7 @@ CheckMatch(const char* pattern,
|
|||
CHECK( re.GetMatch(text, i) == tkz.GetNextToken() );
|
||||
}
|
||||
|
||||
if ((flags & wxRE_NOSUB) == 0)
|
||||
if ((compileFlags & wxRE_NOSUB) == 0)
|
||||
CHECK(re.GetMatchCount() == i);
|
||||
}
|
||||
|
||||
|
|
@ -124,8 +124,8 @@ TEST_CASE("wxRegEx::Match", "[regex][match]")
|
|||
CheckMatch("^[A-Z].*$", "AA\nbb\nCC", "AA\nbb\nCC");
|
||||
CheckMatch("^[A-Z].*$", "AA\nbb\nCC", "AA", wxRE_NEWLINE);
|
||||
CheckMatch("^[a-z].*$", "AA\nbb\nCC", "bb", wxRE_NEWLINE);
|
||||
CheckMatch("^[A-Z].*$", "AA\nbb\nCC", "CC", wxRE_NEWLINE | wxRE_NOTBOL);
|
||||
CheckMatch("^[A-Z].*$", "AA\nbb\nCC", NULL, wxRE_NEWLINE | wxRE_NOTBOL | wxRE_NOTEOL);
|
||||
CheckMatch("^[A-Z].*$", "AA\nbb\nCC", "CC", wxRE_NEWLINE, wxRE_NOTBOL);
|
||||
CheckMatch("^[A-Z].*$", "AA\nbb\nCC", NULL, wxRE_NEWLINE, wxRE_NOTBOL | wxRE_NOTEOL);
|
||||
CheckMatch("([[:alpha:]]+) ([[:alpha:]]+) ([[:digit:]]+).* ([[:digit:]]+)$",
|
||||
"Fri Jul 13 18:37:52 CEST 2001",
|
||||
"Fri Jul 13 18:37:52 CEST 2001\tFri\tJul\t13\t2001");
|
||||
|
|
|
|||
|
|
@ -447,3 +447,39 @@ TEST_CASE_METHOD(BoxSizerTestCase, "BoxSizer::Replace", "[sizer]")
|
|||
m_sizer->AddSpacer(1);
|
||||
m_sizer->Replace(0, new wxSizerItem(new wxWindow(m_win, wxID_ANY)));
|
||||
}
|
||||
|
||||
TEST_CASE("Sizer::CombineFlags", "[sizer]")
|
||||
{
|
||||
// This is a compile-time test which simply verifies that we can combine
|
||||
// all the different flags without getting any warnings about doing it --
|
||||
// as would have been the case when using C++20 or later if we didn't use
|
||||
// wxALLOW_COMBINING_ENUMS() for all these enums in wx/defs.h.
|
||||
//
|
||||
// These constants belong to the following enums, respectively:
|
||||
//
|
||||
// wxALIGN_CENTER wxAlignment
|
||||
// wxBORDER_NONE wxBorder
|
||||
// wxLEFT wxDirection
|
||||
// wxCENTER wxGeometryCentre
|
||||
// wxFIXED_MINSIZE wxSizerFlagBits
|
||||
// wxEXPAND wxStretch
|
||||
//
|
||||
int n = (wxALIGN_CENTER | wxBORDER_NONE)
|
||||
| (wxALIGN_CENTER | wxLEFT)
|
||||
| (wxALIGN_CENTER | wxCENTER)
|
||||
| (wxALIGN_CENTER | wxFIXED_MINSIZE)
|
||||
| (wxALIGN_CENTER | wxEXPAND)
|
||||
| (wxBORDER_NONE | wxLEFT)
|
||||
| (wxBORDER_NONE | wxCENTER)
|
||||
| (wxBORDER_NONE | wxFIXED_MINSIZE)
|
||||
| (wxBORDER_NONE | wxEXPAND)
|
||||
| (wxLEFT | wxCENTER)
|
||||
| (wxLEFT | wxFIXED_MINSIZE)
|
||||
| (wxLEFT | wxEXPAND)
|
||||
| (wxCENTER | wxFIXED_MINSIZE)
|
||||
| (wxCENTER | wxEXPAND)
|
||||
| (wxFIXED_MINSIZE | wxEXPAND)
|
||||
;
|
||||
|
||||
wxUnusedVar(n);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue