diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-02-03 19:21:40 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-02-03 19:21:40 +0000 |
commit | 2a3009a432bdcec59e6383d7b2b17494d6f91649 (patch) | |
tree | 6f72140cec82a050b33451ebcda7f762e90234e2 /lib/AST/DeclarationName.cpp | |
parent | 89c9d8e7f0700d27b1d93dc3832eb1af9b92c221 (diff) |
Semantic analysis, ASTs, and unqualified name lookup support for C++
using directives, from Piotr Rak!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63646 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclarationName.cpp')
-rw-r--r-- | lib/AST/DeclarationName.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/AST/DeclarationName.cpp b/lib/AST/DeclarationName.cpp index ae579c26fa..0a6adef15b 100644 --- a/lib/AST/DeclarationName.cpp +++ b/lib/AST/DeclarationName.cpp @@ -95,10 +95,13 @@ DeclarationName::NameKind DeclarationName::getNameKind() const { case DeclarationNameExtra::CXXConversionFunction: return CXXConversionFunctionName; + case DeclarationNameExtra::CXXUsingDirective: + return CXXUsingDirective; + default: // Check if we have one of the CXXOperator* enumeration values. if (getExtra()->ExtraKindOrNumArgs < - DeclarationNameExtra::NUM_EXTRA_KINDS) + DeclarationNameExtra::CXXUsingDirective) return CXXOperatorName; return ObjCMultiArgSelector; @@ -165,6 +168,8 @@ std::string DeclarationName::getAsString() const { Result += Type.getAsString(); return Result; } + case CXXUsingDirective: + return "<using-directive>"; } assert(false && "Unexpected declaration name kind"); @@ -246,6 +251,17 @@ void DeclarationName::setFETokenInfo(void *T) { } } +DeclarationName DeclarationName::getUsingDirectiveName() { + // Single instance of DeclarationNameExtra for using-directive + static DeclarationNameExtra UDirExtra = + { DeclarationNameExtra::CXXUsingDirective }; + + uintptr_t Ptr = reinterpret_cast<uintptr_t>(&UDirExtra); + Ptr |= StoredDeclarationNameExtra; + + return DeclarationName(Ptr); +} + DeclarationNameTable::DeclarationNameTable() { CXXSpecialNamesImpl = new llvm::FoldingSet<CXXSpecialName>; |