[cfe-commits] r44682 - /cfe/trunk/Sema/SemaExpr.cpp
Steve Naroff
snaroff at apple.com
Sat Dec 8 12:18:11 PST 2007
On Dec 8, 2007, at 11:58 AM, Chris Lattner wrote:
>> URL: http://llvm.org/viewvc/llvm-project?rev=44682&view=rev
>> Log:
>>
>> Lookup methods in the global pool even when a statically typed
>> object's class interface isn't in scope!
>> As the comment in the code indicates, I'm not fond of this.
>> Nevertheless, gcc compat is a goal.
>> Here is the case I'm talking about...
>>
>> #import <Foundation/Foundation.h>
>>
>> @interface AnyClass : NSObject
>> - (NSRect)rect;
>> @end
>>
>> @class Helicopter;
>>
>> static void func(Helicopter *obj) {
>> NSRect r = [obj rect];
>> }
>>
>> ..before this patch, we would warn/error. With this patch,
>> everything "just works".
>
> Yuck :). Please add this to the testsuite.
>
Will do.
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- cfe/trunk/Sema/SemaExpr.cpp (original)
>> +++ cfe/trunk/Sema/SemaExpr.cpp Fri Dec 7 14:41:14 2007
>> @@ -2245,6 +2245,10 @@
>> if (ObjcImplementationDecl *ImpDecl =
>> ObjcImplementations[ClassDecl->getIdentifier()])
>> Method = ImpDecl->lookupInstanceMethod(Sel);
>> + // If we still haven't found a method, look in the global pool.
>> + // I am not fond of this behavior, however we conform to what
>> gcc does.
>> + if (!Method)
>> + Method = InstanceMethodPool[Sel].Method;
>
> Generally, please avoid the first person in comments: "This behavior
> isn't very desirable, however we need it for GCC compatibility."
>
Agreed.
> Thanks!
>
> -Chris
More information about the cfe-commits
mailing list