Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/miloyip/rapidjson.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilo Yip <miloyip@gmail.com>2019-10-08 05:12:13 +0300
committerGitHub <noreply@github.com>2019-10-08 05:12:13 +0300
commit6a6bed2759d42891f9e29a37b21315d3192890ed (patch)
treefd4e325f9cf40eca63c5e085f95d15b3d217debe
parent5592c2eed46632219fb6ce2368cfacf907356ca6 (diff)
parent4116912cde6a9563faa3ebca40c872e05fc3a9ee (diff)
Merge pull request #1582 from crazyscot/master
Use C++17 fallthrough tag instead of disabling compiler warning
-rw-r--r--include/rapidjson/internal/regex.h7
-rw-r--r--include/rapidjson/rapidjson.h13
2 files changed, 16 insertions, 4 deletions
diff --git a/include/rapidjson/internal/regex.h b/include/rapidjson/internal/regex.h
index 16e35592..af7e06de 100644
--- a/include/rapidjson/internal/regex.h
+++ b/include/rapidjson/internal/regex.h
@@ -23,7 +23,6 @@
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF(padded)
RAPIDJSON_DIAG_OFF(switch-enum)
-RAPIDJSON_DIAG_OFF(implicit-fallthrough)
#elif defined(_MSC_VER)
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated
@@ -32,9 +31,6 @@ RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated
#ifdef __GNUC__
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF(effc++)
-#if __GNUC__ >= 7
-RAPIDJSON_DIAG_OFF(implicit-fallthrough)
-#endif
#endif
#ifndef RAPIDJSON_REGEX_VERBOSE
@@ -291,6 +287,7 @@ private:
if (!CharacterEscape(ds, &codepoint))
return; // Unsupported escape character
// fall through to default
+ RAPIDJSON_DELIBERATE_FALLTHROUGH;
default: // Pattern character
PushOperand(operandStack, codepoint);
@@ -520,6 +517,7 @@ private:
else if (!CharacterEscape(ds, &codepoint))
return false;
// fall through to default
+ RAPIDJSON_DELIBERATE_FALLTHROUGH;
default:
switch (step) {
@@ -529,6 +527,7 @@ private:
break;
}
// fall through to step 0 for other characters
+ RAPIDJSON_DELIBERATE_FALLTHROUGH;
case 0:
{
diff --git a/include/rapidjson/rapidjson.h b/include/rapidjson/rapidjson.h
index 549936ff..5c638261 100644
--- a/include/rapidjson/rapidjson.h
+++ b/include/rapidjson/rapidjson.h
@@ -591,6 +591,19 @@ RAPIDJSON_NAMESPACE_END
#endif
#endif // RAPIDJSON_HAS_CXX11_RANGE_FOR
+///////////////////////////////////////////////////////////////////////////////
+// C++17 features
+
+#if defined(__has_cpp_attribute)
+# if __has_cpp_attribute(fallthrough)
+# define RAPIDJSON_DELIBERATE_FALLTHROUGH [[fallthrough]]
+# else
+# define RAPIDJSON_DELIBERATE_FALLTHROUGH
+# endif
+#else
+# define RAPIDJSON_DELIBERATE_FALLTHROUGH
+#endif
+
//!@endcond
//! Assertion (in non-throwing contexts).