]> granicus.if.org Git - clang/commit
Refactor name lookup.
authorDouglas Gregor <dgregor@apple.com>
Wed, 14 Jan 2009 22:20:51 +0000 (22:20 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 14 Jan 2009 22:20:51 +0000 (22:20 +0000)
commiteb11cd078ba8682bbb9b082f8f6ead8be5c98581
tree01369931f9c2b3fbf53b8385ea9bee2e0ec0e16d
parent2253dc4705e7816a6cafcf95498da7080041a3e2
Refactor name lookup.

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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62245 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/CMakeLists.txt
lib/Sema/IdentifierResolver.h
lib/Sema/Sema.h
lib/Sema/SemaCXXScopeSpec.cpp
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaLookup.cpp [new file with mode: 0644]
test/Parser/cxx-using-directive.cpp
test/SemaCXX/qualified-id-lookup.cpp