From e0930d324c9c35546d6940e0ddc8f3e0bd850614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Kongstad?= Date: Thu, 18 Oct 2018 14:50:15 +0200 Subject: [PATCH] libandroidfw: add FALLTHROUGH_INTENDED to silence warnings Add FALLTHROUGH_INTENDED to silence compiler warnings such as the following: -------- 8< -------- [ 42% 27/63] //frameworks/base/libs/androidfw:libandroidfw clang++ Locale.cpp frameworks/base/libs/androidfw/Locale.cpp:166:7: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough] case 5: ^ frameworks/base/libs/androidfw/Locale.cpp:166:7: note: insert 'FALLTHROUGH_INTENDED;' to silence this warning case 5: ^ FALLTHROUGH_INTENDED; frameworks/base/libs/androidfw/Locale.cpp:166:7: note: insert 'break;' to avoid fall-through case 5: ^ break; 1 warning generated. -------- >8 -------- Test: 'make libandroidfw' builds with no compiler warnings Change-Id: I6bc67f2c072f88c9f1a92b7378a6f1a460db70b4 --- libs/androidfw/Android.bp | 2 -- libs/androidfw/Locale.cpp | 2 ++ libs/androidfw/ResourceTypes.cpp | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libs/androidfw/Android.bp b/libs/androidfw/Android.bp index 92efb6ba8914f..98af3eb05391f 100644 --- a/libs/androidfw/Android.bp +++ b/libs/androidfw/Android.bp @@ -59,8 +59,6 @@ cc_library { "ZipFileRO.cpp", "ZipUtils.cpp", ], - // Allow implicit fallthroughs in Locale.cpp and ResourceTypes.cpp until they are fixed. - cflags: ["-Wno-implicit-fallthrough"], export_include_dirs: ["include"], export_shared_lib_headers: ["libz"], target: { diff --git a/libs/androidfw/Locale.cpp b/libs/androidfw/Locale.cpp index 2870066ccbbae..3eedda88fdced 100644 --- a/libs/androidfw/Locale.cpp +++ b/libs/androidfw/Locale.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#include "android-base/macros.h" #include "androidfw/Locale.h" #include "androidfw/Util.h" @@ -162,6 +163,7 @@ bool LocaleValue::InitFromBcp47TagImpl(const StringPiece& bcp47tag, const char s set_script(subtags[1].c_str()); break; } + FALLTHROUGH_INTENDED; case 5: case 6: case 7: diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp index 388548b174f98..76db18de6122d 100644 --- a/libs/androidfw/ResourceTypes.cpp +++ b/libs/androidfw/ResourceTypes.cpp @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -3073,6 +3074,7 @@ struct LocaleParserState { } break; } + FALLTHROUGH_INTENDED; case 5: case 6: case 7: @@ -7002,7 +7004,7 @@ status_t DynamicRefTable::lookupResourceValue(Res_value* value) const { switch (value->dataType) { case Res_value::TYPE_ATTRIBUTE: resolvedType = Res_value::TYPE_ATTRIBUTE; - // fallthrough + FALLTHROUGH_INTENDED; case Res_value::TYPE_REFERENCE: // Only resolve non-dynamic references and attributes if the package is loaded as a // library or if a shared library is attempting to retrieve its own resource @@ -7015,7 +7017,7 @@ status_t DynamicRefTable::lookupResourceValue(Res_value* value) const { break; case Res_value::TYPE_DYNAMIC_ATTRIBUTE: resolvedType = Res_value::TYPE_ATTRIBUTE; - // fallthrough + FALLTHROUGH_INTENDED; case Res_value::TYPE_DYNAMIC_REFERENCE: break; default: