From aa6284fdde437d69df96a18a856f646220a02400 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Tue, 19 Dec 2017 22:37:45 +0100 Subject: [PATCH] qa: Add [[fallthrough]] annotations where appropriate Newer GCCs start to warn about this, so add attributes or rearrange code as appropriate. While the [[fallthrough]] attribute has only been standardized in C++17, it should simply be ignored by older compilers (and it does shut up GCC even when compiling with -std=c++11). (cherry picked from commit 45affd4fa815bb21d0b2e46ac80114bb9174f801) --- src/common/ircchannel.cpp | 7 ++++--- src/core/coresessioneventprocessor.cpp | 3 +++ src/core/eventstringifier.cpp | 3 +++ src/core/sqlitestorage.cpp | 5 ++++- src/qtui/bufferwidget.cpp | 1 + src/qtui/chatscene.cpp | 2 ++ src/uisupport/networkmodelcontroller.cpp | 1 + src/uisupport/tabcompleter.cpp | 1 + 8 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/common/ircchannel.cpp b/src/common/ircchannel.cpp index c111b9fa..b40cbd6a 100644 --- a/src/common/ircchannel.cpp +++ b/src/common/ircchannel.cpp @@ -547,9 +547,8 @@ bool IrcChannel::hasMode(const QChar &mode) const return _C_channelModes.contains(mode); case Network::D_CHANMODE: return _D_channelModes.contains(mode); - default: - return false; } + return false; } @@ -582,9 +581,11 @@ QStringList IrcChannel::modeValueList(const QChar &mode) const case Network::A_CHANMODE: if (_A_channelModes.contains(mode)) return _A_channelModes[mode]; + break; default: - return QStringList(); + ; } + return {}; } diff --git a/src/core/coresessioneventprocessor.cpp b/src/core/coresessioneventprocessor.cpp index ed2904cb..b97b5328 100644 --- a/src/core/coresessioneventprocessor.cpp +++ b/src/core/coresessioneventprocessor.cpp @@ -718,10 +718,13 @@ void CoreSessionEventProcessor::processIrcEvent322(IrcEvent *e) switch (e->params().count()) { case 3: topic = e->params()[2]; + [[fallthrough]]; case 2: userCount = e->params()[1].toUInt(); + [[fallthrough]]; case 1: channelName = e->params()[0]; + [[fallthrough]]; default: break; } diff --git a/src/core/eventstringifier.cpp b/src/core/eventstringifier.cpp index 66f0e274..ae1b2b04 100644 --- a/src/core/eventstringifier.cpp +++ b/src/core/eventstringifier.cpp @@ -531,10 +531,13 @@ void EventStringifier::processIrcEvent322(IrcEvent *e) switch (e->params().count()) { case 3: topic = e->params()[2]; + [[fallthrough]]; case 2: userCount = e->params()[1].toUInt(); + [[fallthrough]]; case 1: channelName = e->params()[0]; + [[fallthrough]]; default: break; } diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 25906552..a07c2fa5 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -1720,12 +1720,15 @@ bool SqliteStorage::safeExec(QSqlQuery &query, int retryCount) switch (query.lastError().number()) { case 5: // SQLITE_BUSY 5 /* The database file is locked */ + [[fallthrough]]; case 6: // SQLITE_LOCKED 6 /* A table in the database is locked */ if (retryCount < _maxRetryCount) return safeExec(query, retryCount + 1); + break; default: - return false; + ; } + return false; } diff --git a/src/qtui/bufferwidget.cpp b/src/qtui/bufferwidget.cpp index 6b01050e..86d3e2ed 100644 --- a/src/qtui/bufferwidget.cpp +++ b/src/qtui/bufferwidget.cpp @@ -232,6 +232,7 @@ bool BufferWidget::eventFilter(QObject *watched, QEvent *event) case Qt::Key_Down: if (!(keyEvent->modifiers() & Qt::ShiftModifier)) return false; + [[fallthrough]]; case Qt::Key_PageUp: case Qt::Key_PageDown: // static cast to access public qobject::event diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index c9816d5b..00a6bb07 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -1258,6 +1258,7 @@ void ChatScene::webPreviewNextStep() if (webPreview.previewItem && webPreview.previewItem->scene()) removeItem(webPreview.previewItem); // Fall through to deletion! + [[fallthrough]]; case WebPreview::HidePreview: if (webPreview.previewItem) { delete webPreview.previewItem; @@ -1285,6 +1286,7 @@ void ChatScene::clearWebPreview(ChatItem *parentItem) removeItem(webPreview.previewItem); } // fall through into to set hidden state + [[fallthrough]]; case WebPreview::DelayPreview: // we're just loading, so haven't shown the preview yet. webPreview.previewState = WebPreview::HidePreview; diff --git a/src/uisupport/networkmodelcontroller.cpp b/src/uisupport/networkmodelcontroller.cpp index a8946ede..c9a1594f 100644 --- a/src/uisupport/networkmodelcontroller.cpp +++ b/src/uisupport/networkmodelcontroller.cpp @@ -358,6 +358,7 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) return; case HideApplyToAll: BufferSettings().setMessageFilter(filter); + [[fallthrough]]; case HideUseDefaults: if (_messageFilter) BufferSettings(_messageFilter->idString()).removeFilter(); diff --git a/src/uisupport/tabcompleter.cpp b/src/uisupport/tabcompleter.cpp index b0e61fd7..5d6e889b 100644 --- a/src/uisupport/tabcompleter.cpp +++ b/src/uisupport/tabcompleter.cpp @@ -109,6 +109,7 @@ void TabCompleter::buildCompletionList() case BufferInfo::QueryBuffer: if (regex.indexIn(_currentBufferName) > -1) _completionMap[_currentBufferName.toLower()] = _currentBufferName; + [[fallthrough]]; case BufferInfo::StatusBuffer: if (!_currentNetwork->myNick().isEmpty() && regex.indexIn(_currentNetwork->myNick()) > -1) _completionMap[_currentNetwork->myNick().toLower()] = _currentNetwork->myNick(); -- 2.20.1