friend class ASTContext; // ASTContext creates these.
public:
- // Get the pointee type. Pointee will either be a built-in type (for 'id' and
- // 'Class') or will be an interface type (for user-defined types).
- // Note: Pointee can be a TypedefType whose canonical type is an interface.
- // Example: typedef NSObject T; T *var;
+ // Get the pointee type. Pointee will either be:
+ // - a built-in type (for 'id' and 'Class').
+ // - an interface type (for user-defined types).
+ // - a TypedefType whose canonical type is an interface (as in 'T' below).
+ // For example: typedef NSObject T; T *var;
QualType getPointeeType() const { return PointeeType; }
const ObjCInterfaceType *getInterfaceType() const {
// through its super class and categories.
for (ObjCObjectPointerType::qual_iterator J = RHSOPT->qual_begin(),
E = RHSOPT->qual_end(); J != E; ++J) {
- if ((*J)->lookupProtocolNamed((*I)->getIdentifier()))
+ if ((*J)->lookupProtocolNamed((*I)->getIdentifier())) {
RHSImplementsProtocol = true;
+ break;
+ }
}
if (!RHSImplementsProtocol)
return false;
// are incompatible.
for (ObjCQualifiedInterfaceType::qual_iterator RHSPI = RHSP->qual_begin(),
RHSPE = RHSP->qual_end();
- !RHSImplementsProtocol && (RHSPI != RHSPE); RHSPI++) {
- if ((*RHSPI)->lookupProtocolNamed((*LHSPI)->getIdentifier()))
+ RHSPI != RHSPE; RHSPI++) {
+ if ((*RHSPI)->lookupProtocolNamed((*LHSPI)->getIdentifier())) {
RHSImplementsProtocol = true;
+ break;
+ }
}
// FIXME: For better diagnostics, consider passing back the protocol name.
if (!RHSImplementsProtocol)