[cfe-dev] Objective-C++11: concerns about adding static_assert support to @interface / @implementation?

Nico Weber via cfe-dev cfe-dev at lists.llvm.org
Fri Mar 8 08:52:32 PST 2019


On Fri, Mar 8, 2019 at 11:23 AM Aaron Ballman <aaron at aaronballman.com>
wrote:

> On Fri, Mar 8, 2019 at 11:20 AM Nico Weber via cfe-dev
> <cfe-dev at lists.llvm.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.
>
> Do they support _Static_assert() instead (the C11 spelling)
>

No.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190308/40c5dd63/attachment.html>


More information about the cfe-dev mailing list