On May 14, 2013, at 4:47 PM, Jordan Rose <[email protected]> wrote:

>> 
>> 
> 
> Bikeshedding on the diagnostic a little bit: "receiver is instance of class 
> declared here" or even "receiver interface declared here". "object of the 
> class" sounds very strange to me.
> 
> 
>> def note_receiver_is_id : Note<
>>   "receiver is treated with 'id' type for purpose of method lookup">;
>> def note_suppressed_class_declare : Note<
>> 
>> Modified: cfe/trunk/lib/Sema/SemaExprObjC.cpp
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprObjC.cpp?rev=181847&r1=181846&r2=181847&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaExprObjC.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaExprObjC.cpp Tue May 14 18:24:17 2013
>> @@ -1221,10 +1221,19 @@ bool Sema::CheckMessageArgumentTypes(Qua
>>     else
>>       DiagID = isClassMessage ? diag::warn_class_method_not_found
>>                               : diag::warn_inst_method_not_found;
>> -    if (!getLangOpts().DebuggerSupport)
>> +    if (!getLangOpts().DebuggerSupport) {
>>       Diag(SelLoc, DiagID)
>>         << Sel << isClassMessage << SourceRange(SelectorLocs.front(), 
>>                                                 SelectorLocs.back());
>> +      // Find the class to which we are sending this message.
>> +      if (ReceiverType->isObjCObjectPointerType()) {
>> +        QualType ClassType =
>> +          ReceiverType->getAs<ObjCObjectPointerType>()->getPointeeType();
>> +        if (const ObjCObjectType *ClassTPtr = 
>> ClassType->getAs<ObjCObjectType>())
>> +          if (ObjCInterfaceDecl *Class = ClassTPtr->getInterface())
>> +            Diag(Class->getLocation(), diag::note_receiver_class_declared);
>> +      }
>> +    }
> 
> You don't really need to double the ifs here. Just use 
> ReceiverType->getAs<ObjCObjectPointerType>() and then 
> ObjCObjectPointerType::getInterfaceDecl().

In r181896.
- Fariborz
> 
> 
>>     // In debuggers, we want to use __unknown_anytype for these
>>     // results so that clients can cast them.

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to