Skip to content

Commit

Permalink
Shut up a Clang warning.
Browse files Browse the repository at this point in the history
Clang warns on this pattern because it looks like the author might
have meant to use the value of the first part of the comma operator,
so it warns that it isn't being used. The cast here signals to Clang
that this behavior is intentional.

This was discovered while updating gmock in Android. Clang's -Wcomma
warning is on by default with either -Wall or -Werror, so users of
gmock with those on in combination with -Werror are unable to build
without this fix.

PiperOrigin-RevId: 495655990
Change-Id: Iaf27e2199669f5b6185a877738234e551b6b6556
  • Loading branch information
Abseil Team authored and copybara-github committed Dec 15, 2022
1 parent 41fe6be commit 3fa7f98
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion googlemock/include/gmock/gmock-matchers.h
Original file line number Diff line number Diff line change
Expand Up @@ -4098,7 +4098,12 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
const char* sep = "";
// Workaround spurious C4189 on MSVC<=15.7 when k is empty.
(void)sep;
const char* dummy[] = {"", (*os << sep << "#" << k, sep = ", ")...};
// The static_cast to void is needed to silence Clang's -Wcomma warning.
// This pattern looks suspiciously like we may have mismatched parentheses
// and may have been trying to use the first operation of the comma operator
// as a member of the array, so Clang warns that we may have made a mistake.
const char* dummy[] = {
"", (static_cast<void>(*os << sep << "#" << k), sep = ", ")...};
(void)dummy;
*os << ") ";
}
Expand Down

0 comments on commit 3fa7f98

Please sign in to comment.