[cfe-dev] Objective-C++11: concerns about adding static_assert support to @interface / @implementation?
Erik Pilkington via cfe-dev
cfe-dev at lists.llvm.org
Fri Mar 8 15:13:07 PST 2019
+1 from me, it seems like it would be useful to support _Static_assert there.
Erik
> On Mar 8, 2019, at 8:11 AM, Nico Weber <thakis at chromium.org> wrote:
>
> Hi,
>
> 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
>
> class C {
> THREAD_CHECKER(checker_);
> };
>
> 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.
>
> 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.
>
> 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.
>
> Before I start writing a patch for that: Are people fine with supporting static_assert in the member list of an @interface or @implementation in Obj-C? It not being supported seems like an oversight to me, but maybe I'm missing something – so I figured I'd ask before I start writing a patch :)
>
> Nico
More information about the cfe-dev
mailing list