Enable Clang warning implicit-fallthrough and annotate the code.
BUG=4242 R=henrik.lundin@webrtc.org, stefan@webrtc.org, tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/34899004 Cr-Commit-Position: refs/heads/master@{#8187} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8187 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
a907e01c63
commit
7d2b6a9346
@ -11,9 +11,9 @@
|
||||
|
||||
#if defined(WEBRTC_WIN)
|
||||
#include "webrtc/base/win32.h"
|
||||
#else // !WEBRTC_WIN
|
||||
#else // !WEBRTC_WIN
|
||||
#define SEC_E_CERT_EXPIRED (-2146893016)
|
||||
#endif // !WEBRTC_WIN
|
||||
#endif // !WEBRTC_WIN
|
||||
|
||||
#include "webrtc/base/common.h"
|
||||
#include "webrtc/base/httpbase.h"
|
||||
@ -528,8 +528,9 @@ bool HttpBase::DoReceiveLoop(HttpError* error) {
|
||||
// Attempt to process the data already in our buffer.
|
||||
break;
|
||||
case SR_EOS:
|
||||
// Clean close, with no error. Fall through to HandleStreamClose.
|
||||
// Clean close, with no error.
|
||||
read_error = 0;
|
||||
FALLTHROUGH(); // Fall through to HandleStreamClose.
|
||||
case SR_ERROR:
|
||||
*error = HandleStreamClose(read_error);
|
||||
return true;
|
||||
|
@ -540,6 +540,7 @@ bool HttpClient::CheckCache() {
|
||||
return false;
|
||||
}
|
||||
// Couldn't validate, fall through.
|
||||
FALLTHROUGH();
|
||||
case HCS_NONE:
|
||||
// Cache content is not useable. Issue a regular request.
|
||||
response().clear(false);
|
||||
|
@ -569,7 +569,7 @@ int NSSStreamAdapter::ContinueSSL() {
|
||||
return -1;
|
||||
} else {
|
||||
LOG(LS_INFO) << "Malformed DTLS message. Ignoring.";
|
||||
// Fall through
|
||||
FALLTHROUGH(); // Fall through
|
||||
}
|
||||
case PR_WOULD_BLOCK_ERROR:
|
||||
LOG(LS_INFO) << "Would have blocked";
|
||||
|
@ -244,6 +244,7 @@
|
||||
}],
|
||||
['clang==1', {
|
||||
'cflags': [
|
||||
'-Wimplicit-fallthrough',
|
||||
'-Wthread-safety',
|
||||
],
|
||||
}],
|
||||
|
@ -92,6 +92,7 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->StanzaActivity());
|
||||
if (endstage == XLTT_STAGE_CONNECT)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_STREAMSTART: {
|
||||
@ -104,6 +105,7 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->OutputActivity());
|
||||
if (endstage == XLTT_STAGE_STREAMSTART)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_TLS_FEATURES: {
|
||||
@ -117,6 +119,7 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->SessionActivity());
|
||||
if (endstage == XLTT_STAGE_TLS_FEATURES)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_TLS_PROCEED: {
|
||||
@ -128,8 +131,9 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
"xmlns=\"jabber:client\">\r\n", handler_->OutputActivity());
|
||||
EXPECT_EQ("", handler_->StanzaActivity());
|
||||
EXPECT_EQ("", handler_->SessionActivity());
|
||||
if (endstage == XLTT_STAGE_TLS_PROCEED)
|
||||
if (endstage == XLTT_STAGE_TLS_PROCEED)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_ENCRYPTED_START: {
|
||||
@ -142,6 +146,7 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->OutputActivity());
|
||||
if (endstage == XLTT_STAGE_ENCRYPTED_START)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_AUTH_FEATURES: {
|
||||
@ -161,8 +166,9 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
handler_->OutputActivity());
|
||||
EXPECT_EQ("", handler_->StanzaActivity());
|
||||
EXPECT_EQ("", handler_->SessionActivity());
|
||||
if (endstage == XLTT_STAGE_AUTH_FEATURES)
|
||||
if (endstage == XLTT_STAGE_AUTH_FEATURES)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_AUTH_SUCCESS: {
|
||||
@ -173,8 +179,9 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
"xmlns=\"jabber:client\">\r\n", handler_->OutputActivity());
|
||||
EXPECT_EQ("", handler_->StanzaActivity());
|
||||
EXPECT_EQ("", handler_->SessionActivity());
|
||||
if (endstage == XLTT_STAGE_AUTH_SUCCESS)
|
||||
if (endstage == XLTT_STAGE_AUTH_SUCCESS)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_AUTHENTICATED_START: {
|
||||
@ -187,6 +194,7 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->OutputActivity());
|
||||
if (endstage == XLTT_STAGE_AUTHENTICATED_START)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_BIND_FEATURES: {
|
||||
@ -202,6 +210,7 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->SessionActivity());
|
||||
if (endstage == XLTT_STAGE_BIND_FEATURES)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_BIND_SUCCESS: {
|
||||
@ -216,6 +225,7 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->SessionActivity());
|
||||
if (endstage == XLTT_STAGE_BIND_SUCCESS)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
|
||||
case XLTT_STAGE_SESSION_SUCCESS: {
|
||||
@ -227,7 +237,10 @@ void XmppLoginTaskTest::RunPartialLogin(XlttStage startstage,
|
||||
EXPECT_EQ("", handler_->StanzaActivity());
|
||||
if (endstage == XLTT_STAGE_SESSION_SUCCESS)
|
||||
return;
|
||||
FALLTHROUGH();
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/modules/audio_coding/main/acm2/acm_common_defs.h"
|
||||
#include "webrtc/system_wrappers/interface/trace.h"
|
||||
|
||||
@ -626,9 +627,10 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
default: {
|
||||
return NULL;
|
||||
}
|
||||
return new ACMG722_1(codec_id);
|
||||
}
|
||||
return new ACMG722_1(codec_id);
|
||||
#endif
|
||||
FALLTHROUGH();
|
||||
}
|
||||
case 32000: {
|
||||
#ifdef WEBRTC_CODEC_G722_1C
|
||||
@ -649,10 +651,13 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
default: {
|
||||
return NULL;
|
||||
}
|
||||
return new ACMG722_1C(codec_id);
|
||||
}
|
||||
return new ACMG722_1C(codec_id);
|
||||
#endif
|
||||
FALLTHROUGH();
|
||||
}
|
||||
default:
|
||||
FATAL();
|
||||
}
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "CN")) {
|
||||
// For CN we need to check sampling frequency to know what codec to create.
|
||||
|
@ -764,6 +764,7 @@ int NetEqImpl::GetAudioInternal(size_t max_length, int16_t* output,
|
||||
sync_buffer_->IncreaseEndTimestamp(output_size_samples_);
|
||||
// Skipping break on purpose. Execution should move on into the
|
||||
// next case.
|
||||
FALLTHROUGH();
|
||||
}
|
||||
case kAudioRepetition: {
|
||||
// TODO(hlundin): Write test for this.
|
||||
|
@ -56,6 +56,7 @@ uint32_t TimestampScaler::ToInternal(uint32_t external_timestamp,
|
||||
// full 48 kHz support.
|
||||
numerator_ = 2;
|
||||
denominator_ = 3;
|
||||
break;
|
||||
}
|
||||
case kDecoderAVT:
|
||||
case kDecoderCNGnb:
|
||||
|
@ -664,6 +664,7 @@ int32_t FuncTestManager::DoTest(const TestType testType)
|
||||
TestSpeakerVolume();
|
||||
TestMicrophoneVolume();
|
||||
TestLoopback();
|
||||
FALLTHROUGH();
|
||||
case TTAudioLayerSelection:
|
||||
TestAudioLayerSelection();
|
||||
break;
|
||||
@ -702,6 +703,7 @@ int32_t FuncTestManager::DoTest(const TestType testType)
|
||||
break;
|
||||
case TTMobileAPI:
|
||||
TestAdvancedMBAPI();
|
||||
FALLTHROUGH();
|
||||
case TTTest:
|
||||
TestExtra();
|
||||
break;
|
||||
|
@ -183,6 +183,7 @@ int DefaultTemporalLayers::EncodeFlags(uint32_t timestamp) {
|
||||
case kTemporalUpdateGoldenWithoutDependency:
|
||||
flags |= VP8_EFLAG_NO_REF_GF;
|
||||
// Deliberately no break here.
|
||||
FALLTHROUGH();
|
||||
case kTemporalUpdateGolden:
|
||||
flags |= VP8_EFLAG_NO_REF_ARF;
|
||||
flags |= VP8_EFLAG_NO_UPD_ARF;
|
||||
@ -192,6 +193,7 @@ int DefaultTemporalLayers::EncodeFlags(uint32_t timestamp) {
|
||||
flags |= VP8_EFLAG_NO_REF_ARF;
|
||||
flags |= VP8_EFLAG_NO_REF_GF;
|
||||
// Deliberately no break here.
|
||||
FALLTHROUGH();
|
||||
case kTemporalUpdateAltref:
|
||||
flags |= VP8_EFLAG_NO_UPD_GF;
|
||||
flags |= VP8_EFLAG_NO_UPD_LAST;
|
||||
@ -199,6 +201,7 @@ int DefaultTemporalLayers::EncodeFlags(uint32_t timestamp) {
|
||||
case kTemporalUpdateNoneNoRefAltref:
|
||||
flags |= VP8_EFLAG_NO_REF_ARF;
|
||||
// Deliberately no break here.
|
||||
FALLTHROUGH();
|
||||
case kTemporalUpdateNone:
|
||||
flags |= VP8_EFLAG_NO_UPD_GF;
|
||||
flags |= VP8_EFLAG_NO_UPD_ARF;
|
||||
|
@ -674,6 +674,7 @@ VCMFrameBufferEnum VCMJitterBuffer::InsertPacket(const VCMPacket& packet,
|
||||
frame_event_->Set();
|
||||
}
|
||||
}
|
||||
FALLTHROUGH();
|
||||
}
|
||||
// Note: There is no break here - continuing to kDecodableSession.
|
||||
case kDecodableSession: {
|
||||
|
@ -467,6 +467,7 @@ int32_t VideoReceiver::Decode(const VCMEncodedFrame& frame) {
|
||||
case kKeyOnLoss: {
|
||||
request_key_frame = true;
|
||||
ret = VCM_OK;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
@ -120,6 +120,16 @@ typedef unsigned __int64 uint64_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Macro to be used for switch-case fallthrough (required for enabling
|
||||
// -Wimplicit-fallthrough warning on Clang).
|
||||
#ifndef FALLTHROUGH
|
||||
#if defined(__clang__)
|
||||
#define FALLTHROUGH() [[clang::fallthrough]]
|
||||
#else
|
||||
#define FALLTHROUGH() do { } while (0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Annotate a function that will not return control flow to the caller.
|
||||
#if defined(_MSC_VER)
|
||||
#define NO_RETURN __declspec(noreturn)
|
||||
|
Loading…
x
Reference in New Issue
Block a user