[cfe-commits] r43989 - in /cfe/trunk: AST/Decl.cpp Sema/Sema.h Sema/SemaDecl.cpp Sema/SemaExpr.cpp include/clang/AST/DeclObjC.h test/Sema/message.m
Steve Naroff
snaroff at apple.com
Wed Dec 12 17:11:20 PST 2007
On Dec 12, 2007, at 5:03 PM, Chris Lattner wrote:
>>> 3. There are inconsistencies in the ObjC class interfaces. For
>>> example, it is ObjcInterfaceDecl::getNumInstanceVariables but it
>>> is ObjcImplementationDecl::getImplDeclNumIvars. This is
>>> strangeness. Please pick a set of shorthand (e.g. Inst for
>>> instance, Proto for protocol, Meth for method, Vars for variables
>>> etc) and use it consistently. Many method names are really long.
>>> getNumInstanceVariables should get getNumInstVars() or
>>> getNumIVars().
>>>
>>
>> I agree with removing the inconsistency. There are two consistency
>> issues here: (1) the ObjC AST API's should be self consistent. (2)
>> the ObjC AST API's should be consistent with the C AST API's.
>
> Ok.
>
>> That said, I think shortening the names (and coming up with a bunch
>> of abbreviations) is questionable. For example, the type checker
>> uses "getCanonicalType" all over the place. Here is an excerpt...
>>
>> QualType lhs = lhsExpr-
>> >getType().getCanonicalType().getUnqualifiedType();
>> QualType rhs = rhsExpr-
>> >getType().getCanonicalType().getUnqualifiedType();
>>
>> From my perspective, the Type accessors have long names. We could
>> consider converting them to...
>>
>> QualType lhs = lhsExpr->getType().getCanonType().getUnqualType();
>> QualType rhs = rhsExpr->getType().getCanonType().getUnqualType();
>>
>> From my perspective, this would be the wrong decision (since the
>> original names are "good").
>
> Ok.
>
>> I general, I don't believe shortening names just for the sake of
>> shortening is the right decision. The names can certainly be
>> improved. I just don't see a general/good solution to your
>> complaint that "Many method names are really long".
>
> I'm much more concerned with consistency than terseness, I'm happy
> to go with consistent but long names :)
>
Great. For the AST's, I'd like to stay away from terse, overly
abbreviated names. For API's that are less public, I don't care as
much...
>>> 4. There are 4 or 5 implementations of lookupInstanceMethod, and
>>> they all do different things. :( Please pick a name that is
>>> more specific to the various classes that explains how it
>>> searches. For example,
>>> ObjcImplementationDecl::lookupInstanceMethod could be
>>> ObjcImplementationDecl::findDefinedInstMethod(), which makes it
>>> more clear that it only returns things *defined in the
>>> @implementation*.
>>>
>>
>> I disagree with your assertion that "they all do different things. :
>> (". From my perspective, using polymorphism here makes sense.
>
> Some do a "shallow" lookup, others walk the inheritance chain. It
> should be clear from their name what they do.
>
>>> 5. Related, I think you should split
>>> ObjcProtocolDecl::lookupInstanceMethod up into two things: one
>>> that searches locally, and one that walks the "referenced
>>> protocols", calling the local search on each one. Likewise for
>>> any similar ones.
>>>
>>
>> I think having different ways to search is fine. Off hand, I don't
>> know if I prefer a "knob" (on an existing API) or a new API. To
>> some extent is depends on how we resolve the naming/polymorphism
>> issues above.
>
> Please split it into two functions, where one calls the other.
> instead of "lookupInstanceMethod" how about
> getinstanceMethodBySelector() or something? Wow that name is long ;-)
>
I understand what you looking for...I'll consider this approach and
make a proposal.
snaroff
>>> 6. One specific question is that
>>> ObjcInterfaceDecl::lookupInstanceMethod scans methods immediately
>>> referenced in protocols, but it doesn't scan protocol's parent
>>> protocols. Is this correct? Either way, please change it to call
>>> the methods added in step #5.
>>>
>> I agree with you...I don't believe this is correct.
>> ObjcInterfaceDecl should likely query the protocol directly (rather
>> than iterate over the protocols instance methods directly).
>
> Ok.
>
> Thanks Steve,
>
> -Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20071212/82dbd589/attachment.html>
More information about the cfe-commits
mailing list