> On Mar 15, 2016, at 9:57 PM, Jens Alfke <[email protected]> wrote:
> 
> 
>> On Mar 15, 2016, at 5:53 PM, Devin Coughlin <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> You can get false positives like this if you use custom assertion macros in 
>> your project. In this case you would need to annotate the assertion handler 
>> (the part of the assertion macro that aborts when the check fails) with 
>> __attribute__((analyzer_noreturn)). 
> 
> I use the more-standard __attribute__((noreturn)) on my assertion-failed 
> handlers. 
> 
> I notice that the docs you linked to say "currently, clang does not support 
> these attributes on Objective-C methods and C++ methods” — is that still 
> true? I’ve got a couple of C++ methods marked as “[[noreturn]]”:

In C++, both clang and the analyzer honor [[noreturn]] and 
__attribute__((noreturn)) on methods. There is no [[analyzer_noreturn]], but 
you can use __attribute__((analyze_noreturn)) on C++ methods.

For Objective-C methods __attribute__((noreturn)) has no effect for either 
clang or the analyzer but  __attribute__((analyzer_noreturn)) is honored by the 
analyzer.

> 
>     struct error : public std::exception {
>       ...
>         [[noreturn]] static void _throw(fdb_status);
>         [[noreturn]] static void assertionFailed(const char *func, const char 
> *file, unsigned line,
>                                                  const char *expr);
>     };
> 
> For Clang’s sake should I change those into regular functions? And does the 
> analyzer recognize C++11’s “[[noreturn]]” syntax?

There should be no need to turn these into functions.

Devin

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/xcode-users/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to