mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-06 07:17:42 -05:00
Fix -Wimplicit-fallthrough warnings from GCC 8
Adds `FALLTHROUGH` macro to specify when a fallthrough is intentional.
Can be replaced by `[[fallthrough]]` if/when we switch to C++17.
The warning is now enabled by default for GCC on `extra` warnings level
(part of GCC's `-Wextra`). It's not enabled in Clang's `-Wextra` yet,
but we could enable it manually once we switch to C++11. There's no
equivalent feature in MSVC for now.
Fixes #26135.
(cherry picked from commit fc370b3feb)
This commit is contained in:
@@ -46,7 +46,8 @@ _FORCE_INLINE_ bool _should_call_local(MultiplayerAPI::RPCMode mode, bool is_mas
|
||||
case MultiplayerAPI::RPC_MODE_MASTERSYNC: {
|
||||
if (is_master)
|
||||
r_skip_rpc = true; // I am the master, so skip remote call.
|
||||
} // Do not break, fall over to other sync.
|
||||
FALLTHROUGH;
|
||||
}
|
||||
case MultiplayerAPI::RPC_MODE_REMOTESYNC:
|
||||
case MultiplayerAPI::RPC_MODE_PUPPETSYNC: {
|
||||
// Call it, sync always results in a local call.
|
||||
|
||||
@@ -331,7 +331,28 @@ struct _GlobalLock {
|
||||
/** This is needed due to a strange OpenGL API that expects a pointer
|
||||
* type for an argument that is actually an offset.
|
||||
*/
|
||||
|
||||
#define CAST_INT_TO_UCHAR_PTR(ptr) ((uint8_t *)(uintptr_t)(ptr))
|
||||
|
||||
/** Hint for compilers that this fallthrough in a switch is intentional.
|
||||
* Can be replaced by [[fallthrough]] annotation if we move to C++17.
|
||||
* Including conditional support for it for people who set -std=c++17
|
||||
* themselves.
|
||||
* Requires a trailing semicolon when used.
|
||||
*/
|
||||
#if __cplusplus >= 201703L
|
||||
#define FALLTHROUGH [[fallthrough]]
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 7
|
||||
#define FALLTHROUGH __attribute__((fallthrough))
|
||||
#elif defined(__llvm__) && __cplusplus >= 201103L && defined(__has_feature)
|
||||
#if __has_feature(cxx_attributes) && defined(__has_warning)
|
||||
#if __has_warning("-Wimplicit-fallthrough")
|
||||
#define FALLTHROUGH [[clang::fallthrough]]
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef FALLTHROUGH
|
||||
#define FALLTHROUGH
|
||||
#endif
|
||||
|
||||
#endif // TYPEDEFS_H
|
||||
|
||||
Reference in New Issue
Block a user