<div dir="ltr"><div dir="ltr">On Fri, Mar 8, 2019 at 11:23 AM Aaron Ballman <<a href="mailto:aaron@aaronballman.com">aaron@aaronballman.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, Mar 8, 2019 at 11:20 AM Nico Weber via cfe-dev<br>
<<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br>
><br>
> Hi,<br>
><br>
> I'm trying to enable -Wextra-semi in Chromium. I'm almost there; the last remaining issue is that we have a macro THREAD_CHECKER(name) that expands to nothing in release builds but to `ThreadChecker name` in debug builds. It's supposed to be used like<br>
><br>
> class C {<br>
>   THREAD_CHECKER(checker_);<br>
> };<br>
><br>
> And then in the implementation, you do CHECK_CALLED_ON_VALID_THREAD(checker_); which again does nothing in release builds but calls a method on checker_ in debug builds.<br>
><br>
> Since this is a declaration, this triggers -Wextra-semi. I figured the way to spell the usual `do {} while (0)` you tag on the end of a statement macro to silence this warning could be `static_assert(1, "")`, so I changed THREAD_CHECKER() to expand to that in release builds instead of nothing.<br>
><br>
> This works beautifully, but Objective-C interfaces don't support static_assert()s as I have learned. So I'd like to add support for that.<br>
<br>
Do they support _Static_assert() instead (the C11 spelling)<br></blockquote><div><br></div><div>No. </div></div></div>