[cfe-dev] [Patch] IDNS_NoLookup?
Chris Lattner
clattner at apple.com
Sun Jan 18 22:06:01 PST 2009
On Jan 18, 2009, at 8:00 PM, Douglas Gregor wrote:
>
> On Jan 18, 2009, at 5:58 PM, Chris Lattner wrote:
>
>> On Jan 18, 2009, at 5:02 PM, Douglas Gregor wrote:
>>> Ah, so that's the issue... the ObjCImplementationDecls need to
>>> have an
>>> identifier namespace, because they have name, but they aren't
>>> supposed to be found by name lookup (rather, we see them through the
>>> ObjCInterfaceDecl).
>>
>> Ah, very interesting. I think the right fix is that
>> ObjCImplementationDecl should not be scope decls and maybe not even
>> NamedDecls. They should never ever be "looked up".
>
> I think we should swap ScopedDecl and NamedDecl in the inheritance
> hierarchy. Things without names---like, perhaps,
> ObjCImplementationDecl---should still be ScopedDecls and live inside
> DeclContexts (so we know where they occur, lexically, in the
> program, and who their owners are) but they don't need any storage
> for names. So, we would just have
>
> class NamedDecl : public ScopedDecl {
> DeclarationName Name;
> public:
> // ...
> };
>
> Right now, the only ScopedDecl that isn't a NamedDecl is
> OverloadedFunctionDecl, and it's probably going away in favor of
> Argiris' idea for an OverloadedNameExpr. As Piotr had mentioned
> before, using directives are also never found by name lookup, but
> they do have scope, so they're natural ScopedDecls but not NamedDecls.
That makes a lot of sense to me!
-Chris
More information about the cfe-dev
mailing list