ahatanak added a comment.

In https://reviews.llvm.org/D23236#523173, @parallaxe wrote:

> In https://reviews.llvm.org/D23236#509013, @ahatanak wrote:
>
> > +cfe-commits
> >
> > If this patch is applied, does clang issue a warning if a method marked 
> > "nonnull" returns a null value? I see a warning is issued for conditional 
> > expressions in the test case you've added, but I don't see a test case for 
> > a function returning just nil or 0.
> >
> > I was wondering whether the change made in this patch contradicts what's 
> > stated in r240146's commit log:
> >
> > "Note that we don't warn about nil returns from Objective-C methods,
> >
> >   because it's common for Objective-C methods to mimic the nil-swallowing
> >   behavior of the receiver by checking ostensibly non-null parameters
> >   and returning nil from otherwise non-null methods in that
> >   case."
>
>
> I'm not sure how this is meant. As far as I understand the commit-message you 
> quoted, it is related to methods that return nil when a precondition fails. A 
> test for this would be `doNotWarnWhenPreconditionIsViolatedInTopFunc` in 
> nullability_nullonly.mm, which is not affected by my patch. 
>  On the other side, according to the test `testReturnsNilInNonnull` in 
> nullability_nullonly.mm
>
>   - (SomeClass * _Nonnull)testReturnsNilInNonnull {
>     SomeClass *local = nil;
>     return local; // expected-warning {{Null is returned from a method that 
> is expected to return a non-null value}}
>   }
>
>
> it is expected to produce a warning, when a method marked as nonnull returns 
> nil while no precondition is violated. 
>  So I would expect that the existing tests already proof that my patch didn't 
> produce unwanted side-effects.
>
> Sorry in case that I'm missing your point here, maybe you can elaborate it a 
> bit more?


Thank you for the explanation, I think I understand the comment now. I was 
wondering whether the analyzer was being overzealous since r240153's commit log 
clearly states that Sema never warns about nonnull methods returning nil, but I 
agree with you that probably it was just trying to avoid false positive 
warnings for functions like doNotWarnWhenPreconditionIsViolatedInTopFunc.


https://reviews.llvm.org/D23236



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to