Unavailable method checker

Richard tarka.t.otter at gmail.com
Sun Oct 27 06:55:41 PDT 2013


On 25 Oct 2013, at 18:51, Jordan Rose <jordan_rose at apple.com> wrote:

>>> 
>>> +        const ObjCSelectorExpr *SelExpr = cast<ObjCSelectorExpr>(ME->getArg(0));
>>> 
>>> This could fail if the user passes a SEL variable.
>>> 
>> 
>> Well spotted. I have added a helper method to extract the ObjCSelectorExpr in the case of a SEL variable, it is very ugly code though, is there an easier way to do this? see selectorForArgument().
> 
> The way you've done it will break for re-assignments, so that won't work. I think the right thing to do is just ignore that case for now; in the long term, I think the correct solution is to model SEL regions in the same sort of way as we do string literals.
> 

OK, I removed the code and replaced it with a TODO for now.

> 
> I'm still concerned about the diagnostic text:
> 
> +  os << "Calling method introduced in ";
> +  os << Introduced;
> +  os << " (deployment target is ";
> +  os << deploymentTarget(State);
> +  os << ")";
> 
> At the very least we need to distinguish "method" and "function"; for bonus points, saying that the entire class or protocol was introduced in version X would be nice polish.
> 
> Jordan

How about the attached patch? It prints the class or protocol version when the method has no specific introduced version.

Richard

-------------- next part --------------
A non-text attachment was scrubbed...
Name: unavailable-2710.patch
Type: application/octet-stream
Size: 18658 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131027/e84cd0c2/attachment.obj>


More information about the cfe-commits mailing list