Skip to content
  • Douglas Gregor's avatar
    Refactor name lookup. · 34074326
    Douglas Gregor authored
    This change refactors and cleans up our handling of name lookup with
    LookupDecl. There are several aspects to this refactoring:
    
      - The criteria for name lookup is now encapsulated into the class
      LookupCriteria, which replaces the hideous set of boolean values
      that LookupDecl currently has.
    
      - The results of name lookup are returned in a new class
      LookupResult, which can lazily build OverloadedFunctionDecls for
      overloaded function sets (and, eventually, eliminate the need to
      allocate member for OverloadedFunctionDecls) and contains a
      placeholder for handling ambiguous name lookup (for C++).
    
      - The primary entry points for name lookup are now LookupName (for
        unqualified name lookup) and LookupQualifiedName (for qualified
        name lookup). There is also a convenience function
        LookupParsedName that handles qualified/unqualified name lookup
        when given a scope specifier. Together, these routines are meant
        to gradually replace the kludgy LookupDecl, but this won't happen
        until after we have base class lookup (which forces us to cope
        with ambiguities).
    
      - Documented the heck out of name lookup. Experimenting a little
        with using Doxygen's member groups to make some sense of the Sema
        class. Feedback welcome!
    
      - Fixes some lingering issues with name lookup for
      nested-name-specifiers, which now goes through
      LookupName/LookupQualifiedName. 
    
    llvm-svn: 62245
    34074326
Loading