[cfe-dev] Objective-C tidy up
David Chisnall
csdavec at swansea.ac.uk
Mon Jun 16 07:23:52 PDT 2008
On 8 Jun 2008, at 18:42, Chris Lattner wrote:
> On Jun 8, 2008, at 10:30 AM, David Chisnall wrote:
>>>> It should be working now (does for me, at least...). Assignments
>>>> to self were failing because implicit params are not valdecls and
>>>> I missed a test.
>>>
>>> Getting closer! We now just have the NSString.m failure:
>>>
>>> /Users/sabre/llvm/tools/clang/lib/Analysis/../../include/clang/
>>> Analysis/Visitors/CFGRecStmtDeclVisitor.h:66: failed assertion
>>> `false && "Subtype of ScopedDecl not handled."'
>>
>> I think this is fixed, but since this test only runs on OS X I
>> can't test it...
>
> Thanks! This gets it onto the next assertion:
>
> /Users/sabre/llvm/tools/clang/lib/Analysis/../../include/clang/
> Analysis/Support/ExprDeclBitVector.h:41: failed assertion `isValid()'
>
> Here's a .mi file. Run with -checker-cfref -verify.
>
> <NSString.mi.gz>
>
>
> It would probably be useful to grep for other uses of VarDecl and
> ParamVarDecl to see if the code applies to self as well. There may
> be other codepaths not being exercised by the testsuite.
I've made ImplicitParamDecl a subclass of VarDecl instead of
ValueDecl. It's not the ideal solution, but it does work. The ideal
solution would be to rearrange the hierarchy around VarDecl and stop
implicit or explicit param decls from being subclasses of this, but it
will require quite invasive changes in a lot of the analyses.
I now get some warnings from clang that this file doesn't appear to be
expecting but, looking at the code, they all appear to be sensible:
Warnings seen but not expected:
Line 1596: [CHECKER] Argument to 'NSString' method 'compare:'
cannot be nil.
Line 1600: [CHECKER] Argument to 'NSString' method
'caseInsensitiveCompare:' cannot be nil.
Line 1604: [CHECKER] Argument to 'NSString' method
'compare:options:' cannot be nil.
Line 1608: [CHECKER] Argument to 'NSString' method
'compare:options:range:' cannot be nil.
Line 1612: [CHECKER] Argument to 'NSString' method
'compare:options:range:locale:' cannot be nil.
Line 1615: [CHECKER] Argument to 'NSString' method
'componentsSeparatedByCharactersInSet:' cannot be nil.
Line 1622: [CHECKER] Object allocated on line 1618 and stored into
's4' is no longer referenced after this point and has a retain count
of +1 (object leaked).
Line 1635: [CHECKER] Reference-counted object is used after it is
released.
David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: objc.diff
Type: application/octet-stream
Size: 27333 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20080616/2e1ca82f/attachment.obj>
More information about the cfe-dev
mailing list