[cfe-dev] Name lookup in ObjC methods
Argiris Kirtzidis
akyrtzi at gmail.com
Fri Mar 21 04:53:14 PDT 2008
Chris Lattner wrote:
>>> int foo::test2(q r) {
>>> return X+r;
>>> }
>>>
>> This is actually quite tricky, because clang currently assumes that a
>> declaration can be "found"
>> only by using an identifier (support for '::' in "foo::test2" needed),
>> and for name lookup it
>> assumes that the declaration is accessible at the current scope or
>> at an
>> enclosing scope of the
>> current one (support for resolving X in "return X+r;" needed).
>>
>
> It's not that bad, we already handle it for instance variables in ObjC.
Actually, name lookup in ObjC methods is not working correctly. For example:
------------------------------------------------------
@interface Test {
int x;
}
-(void) setX: (int) d;
@end
char *x;
@implementation Test
-(void) setX: (int) n {
x = n;
}
@end
------------------------------------------------------
If you compile it with "clang test.m -fsyntax-only -pedantic-errors"
you'll get:
main.m:13:7: error: incompatible integer to pointer conversion assigning
'int', expected 'char *'
x = n;
^ ~
I'm not familiar with Objective C, but isn't it supposed to pick up the
'x' instance variable instead of the global one ?
More information about the cfe-dev
mailing list