Fix compiler warning about hidden virtual overloads
ClosedPublic

Authored by davidedmundson on Jun 12 2018, 8:04 PM.

Details

Summary

TextInput has 4 virtual operators for casting. Each of the two
subclasses override a different 2. It all works perfectly but results in
this compiler warning.

In file included from
client/textinput_v2.cpp:20:
client/textinput_p.h:95:13: warning: ‘virtual
KWayland::Client::TextInputManager::Private::operator
wl_text_input_manager*() const’ was hidden [-Woverloaded-virtual]

virtual operator wl_text_input_manager*() const {
        ^~~~~~~~

This is the compiler telling us that we're overriding some overloads, but
not all overloads which it thinks is wrong, even though it makes perfect
sense in this particular case.

Adding a "using" keyword silences the warning.

Test Plan

Compiles with no warnings \o/

Diff Detail

Repository
R127 KWayland
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
davidedmundson created this revision.Jun 12 2018, 8:04 PM
Restricted Application added a project: Frameworks. · View Herald TranscriptJun 12 2018, 8:04 PM
Restricted Application added a subscriber: kde-frameworks-devel. · View Herald Transcript
davidedmundson requested review of this revision.Jun 12 2018, 8:04 PM
zzag added a subscriber: zzag.Jun 13 2018, 1:53 PM

Compiles with no warnings \o/

Nope.

In file included from /home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v6.cpp:20:
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:49:13: warning: ‘virtual KWayland::Client::XdgShell::Private::operator xdg_shell*() const’ was hidden [-Woverloaded-virtual]
     virtual operator xdg_shell*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:46:13: warning: ‘virtual KWayland::Client::XdgShell::Private::operator xdg_shell*()’ was hidden [-Woverloaded-virtual]
     virtual operator xdg_shell*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:60:28: warning: ‘virtual KWayland::Client::XdgShellPopup* KWayland::Client::XdgShell::Private::getXdgPopup(KWayland::Client::Surface*, KWayland::Client::Surface*, KWayland::Client::Seat*, quint32, const QPoint&, QObject*)’ was hidden [-Woverloaded-virtual]
     virtual XdgShellPopup *getXdgPopup(Surface *surface, Surface *parentSurface, Seat *seat, quint32 serial, const QPoint &parentPos, QObject *parent) {
                            ^~~~~~~~~~~
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v6.cpp:45:20: warning:   by ‘KWayland::Client::XdgShellUnstableV6::Private::getXdgPopup’ [-Woverloaded-virtual]
     XdgShellPopup *getXdgPopup(Surface *surface, XdgShellPopup *parentSurface, const XdgPositioner &positioner, QObject *parent) override;
                    ^~~~~~~~~~~
In file included from /home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v6.cpp:20:
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:163:13: warning: ‘virtual KWayland::Client::XdgShellSurface::Private::operator xdg_surface*() const’ was hidden [-Woverloaded-virtual]
     virtual operator xdg_surface*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:160:13: warning: ‘virtual KWayland::Client::XdgShellSurface::Private::operator xdg_surface*()’ was hidden [-Woverloaded-virtual]
     virtual operator xdg_surface*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:225:13: warning: ‘virtual KWayland::Client::XdgShellPopup::Private::operator xdg_popup*() const’ was hidden [-Woverloaded-virtual]
     virtual operator xdg_popup*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:222:13: warning: ‘virtual KWayland::Client::XdgShellPopup::Private::operator xdg_popup*()’ was hidden [-Woverloaded-virtual]
     virtual operator xdg_popup*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]

In file included from /home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v5.cpp:20:
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:55:13: warning: ‘virtual KWayland::Client::XdgShell::Private::operator zxdg_shell_v6*() const’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_shell_v6*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:52:13: warning: ‘virtual KWayland::Client::XdgShell::Private::operator zxdg_shell_v6*()’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_shell_v6*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
In file included from /home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v5.cpp:20:
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:80:28: warning: ‘virtual KWayland::Client::XdgShellPopup* KWayland::Client::XdgShell::Private::getXdgPopup(KWayland::Client::Surface*, KWayland::Client::XdgShellPopup*, const KWayland::Client::XdgPositioner&, QObject*)’ was hidden [-Woverloaded-virtual]
     virtual XdgShellPopup *getXdgPopup(Surface *surface, XdgShellPopup *parentSurface, const XdgPositioner &positioner, QObject *parent) {
                            ^~~~~~~~~~~
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v5.cpp:41:20: warning:   by ‘virtual KWayland::Client::XdgShellPopup* KWayland::Client::XdgShellUnstableV5::Private::getXdgPopup(KWayland::Client::Surface*, KWayland::Client::Surface*, KWayland::Client::Seat*, quint32, const QPoint&, QObject*)’ [-Woverloaded-virtual]
     XdgShellPopup *getXdgPopup(Surface *surface, Surface *parentSurface, Seat *seat, quint32 serial, const QPoint &parentPos, QObject *parent) override;
                    ^~~~~~~~~~~
In file included from /home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v5.cpp:20:
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:71:28: warning: ‘virtual KWayland::Client::XdgShellPopup* KWayland::Client::XdgShell::Private::getXdgPopup(KWayland::Client::Surface*, KWayland::Client::XdgShellSurface*, const KWayland::Client::XdgPositioner&, QObject*)’ was hidden [-Woverloaded-virtual]
     virtual XdgShellPopup *getXdgPopup(Surface *surface, XdgShellSurface *parentSurface, const XdgPositioner &positioner, QObject *parent) {
                            ^~~~~~~~~~~
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v5.cpp:41:20: warning:   by ‘virtual KWayland::Client::XdgShellPopup* KWayland::Client::XdgShellUnstableV5::Private::getXdgPopup(KWayland::Client::Surface*, KWayland::Client::Surface*, KWayland::Client::Seat*, quint32, const QPoint&, QObject*)’ [-Woverloaded-virtual]
     XdgShellPopup *getXdgPopup(Surface *surface, Surface *parentSurface, Seat *seat, quint32 serial, const QPoint &parentPos, QObject *parent) override;
                    ^~~~~~~~~~~
In file included from /home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_v5.cpp:20:
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:175:13: warning: ‘virtual KWayland::Client::XdgShellSurface::Private::operator zxdg_toplevel_v6*() const’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_toplevel_v6*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:172:13: warning: ‘virtual KWayland::Client::XdgShellSurface::Private::operator zxdg_toplevel_v6*()’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_toplevel_v6*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:169:13: warning: ‘virtual KWayland::Client::XdgShellSurface::Private::operator zxdg_surface_v6*() const’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_surface_v6*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:166:13: warning: ‘virtual KWayland::Client::XdgShellSurface::Private::operator zxdg_surface_v6*()’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_surface_v6*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:237:13: warning: ‘virtual KWayland::Client::XdgShellPopup::Private::operator zxdg_popup_v6*() const’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_popup_v6*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:234:13: warning: ‘virtual KWayland::Client::XdgShellPopup::Private::operator zxdg_popup_v6*()’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_popup_v6*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:231:13: warning: ‘virtual KWayland::Client::XdgShellPopup::Private::operator zxdg_surface_v6*() const’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_surface_v6*() const {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]
/home/vlad/KDE/src/frameworks/kwayland/src/client/xdgshell_p.h:228:13: warning: ‘virtual KWayland::Client::XdgShellPopup::Private::operator zxdg_surface_v6*()’ was hidden [-Woverloaded-virtual]
     virtual operator zxdg_surface_v6*() {
             ^~~~~~~~
<built-in>: warning:   by ‘operator’ [-Woverloaded-virtual]

I meant the class I changed no longer had warnings.

zzag added a comment.Jun 13 2018, 2:01 PM

I meant the class I changed no longer had warnings.

Oh, I thought you were talking about all -Woverloaded-virtual warnings. I think it would be better to fix those warnings in one go.

Yes, but it gets complex with the existing XDGShell having a tonne of other changes on phab.
But if this is accepted as a good solution for the problem, I'll fixup XDGShell when we merge that.

zzag accepted this revision.Jun 13 2018, 2:38 PM

...
But if this is accepted as a good solution for the problem, ...

Well, yeah, that's pretty good solution to name hiding. Another solution would be to implement hidden overloads.

This revision is now accepted and ready to land.Jun 13 2018, 2:38 PM
This revision was automatically updated to reflect the committed changes.