Skip to content
  • Douglas Gregor's avatar
    Unifies the name-lookup mechanisms used in various parts of the AST · 91f84216
    Douglas Gregor authored
    and separates lexical name lookup from qualified name lookup. In
    particular:
      * Make DeclContext the central data structure for storing and
        looking up declarations within existing declarations, e.g., members
        of structs/unions/classes, enumerators in C++0x enums, members of
        C++ namespaces, and (later) members of Objective-C
        interfaces/implementations. DeclContext uses a lazily-constructed
        data structure optimized for fast lookup (array for small contexts,
        hash table for larger contexts). 
    
      * Implement C++ qualified name lookup in terms of lookup into
        DeclContext.
    
      * Implement C++ unqualified name lookup in terms of
        qualified+unqualified name lookup (since unqualified lookup is not
        purely lexical in C++!)
    
      * Limit the use of the chains of declarations stored in
        IdentifierInfo to those names declared lexically.
    
      * Eliminate CXXFieldDecl, collapsing its behavior into
        FieldDecl. (FieldDecl is now a ScopedDecl).
    
      * Make RecordDecl into a DeclContext and eliminates its
        Members/NumMembers fields (since one can just iterate through the
        DeclContext to get the fields).
    
    llvm-svn: 60878
    91f84216
Loading