]> granicus.if.org Git - clang/commit
Introduce support for "transparent" DeclContexts, which are
authorDouglas Gregor <dgregor@apple.com>
Mon, 5 Jan 2009 19:45:36 +0000 (19:45 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 5 Jan 2009 19:45:36 +0000 (19:45 +0000)
commit074149e11baf5f7db12f84efd5c34ba6e35d5cdf
treea02b3f87f914315d7ac21bc25fddf46250229d59
parente1dccaefe2d44a9f83f8c3f087438a3297254cac
Introduce support for "transparent" DeclContexts, which are
DeclContexts whose members are visible from enclosing DeclContexts up
to (and including) the innermost enclosing non-transparent
DeclContexts. Transparent DeclContexts unify the mechanism to be used
for various language features, including C enumerations, anonymous
unions, C++0x inline namespaces, and C++ linkage
specifications. Please refer to the documentation in the Clang
internals manual for more information.

Only enumerations and linkage specifications currently use transparent
DeclContexts.

Still to do: use transparent DeclContexts to implement anonymous
unions and GCC's anonymous structs extension, and, later, the C++0x
features. We also need to tighten up the DeclContext/ScopedDecl link
to ensure that every ScopedDecl is in a single DeclContext, which
will ensure that we can then enforce ownership and reduce the memory
footprint of DeclContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61735 91177308-0d34-0410-b5e6-96231b3b80d8
16 files changed:
Driver/ASTConsumers.cpp
docs/InternalsManual.html
include/clang/AST/DeclBase.h
include/clang/AST/DeclCXX.h
include/clang/Parse/Action.h
lib/AST/DeclBase.cpp
lib/AST/DeclCXX.cpp
lib/AST/DeclSerialization.cpp
lib/Parse/ParseDecl.cpp
lib/Parse/ParseDeclCXX.cpp
lib/Sema/IdentifierResolver.cpp
lib/Sema/IdentifierResolver.h
lib/Sema/Sema.h
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclCXX.cpp
test/SemaCXX/qualified-id-lookup.cpp