[cfe-dev] Name lookup in ObjC methods
Chris Lattner
clattner at apple.com
Wed Apr 2 09:42:14 PDT 2008
On Apr 2, 2008, at 8:30 AM, Argiris Kirtzidis wrote:
> Chris Lattner wrote:
>>> -Decl class has a ContextDecl member
>>
>> Should this be in Decl, or in ScopedDecl? It doesn't make much
>> sense for struct fields (for example) to have this context pointer.
>>
>>> -All Decl subclasses receive a ContextDecl at their constructors
>>
>> Sounds good, but only scopedecl if possible.
> Isn't this a bit restricting ? When NamespaceDecl is added, non-
> ScopedDecls could be under TranslationUnitDecl or a
> specific NamespaceDecl.
Which ones? The non-scope-decls we have are:
1) a variety of ObjC things, which are definitely not scoped (e.g.
ObjCClass).
2) structure fields. They will probably have a pointer up to their
containing struct. I guess this could be modeled as a context
pointer, but it seems better to have a more specific concept for them
if possible. C++ methods may force this to change though.
3) LinkageSpec - this isn't done enough to worry about. It's not
clear to me that this should even be a decl.
4) FileScopeAsm - These aren't scoped.
> NamespaceDecl itself makes little sense to be a ScopedDecl, but it
> makes sense to give it
> a context pointer to its enclosing namespace.
Are you sure? I thought that namespaces do impact unqualified scope
lookups. Perhaps not though. If they don't, then I agree it should
go on Decl.
> Most of the non-ScopedDecls are ObjC specific but for Objective C++
> they will be able to use NamespaceDecl
> context pointers to, for example, get their fully qualified name.
The various objc decls don't interact with C++ namespaces in ObjC++.
They are truly global, effectively always being installed at global
scope.
> And if RecordDecl is made a ContextDecl (mostly useful for C++), a
> context pointer for FieldDecl would point at
> the struct/class that defined it.
>
> What do you think ?
Ok, you convinced me, adding it to Decl makes sense :)
-Chris
More information about the cfe-dev
mailing list