diff options
author | Anders Carlsson <andersca@mac.com> | 2009-08-28 05:49:21 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-08-28 05:49:21 +0000 |
commit | 550b14b410eaed037c9b791806194e6cea1ebe90 (patch) | |
tree | ccca3a39348825cf28efbcb55ae6b07e7243e2ef /lib/Sema/SemaDeclCXX.cpp | |
parent | c72160ba4ce3f82784888aa64415b9ef72bf44ea (diff) |
Create UnresolvedUsingDecls.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80346 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 51f8fa5697..602caf2825 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -2127,13 +2127,9 @@ NamedDecl *Sema::BuildUsingDeclaration(SourceLocation UsingLoc, assert(!SS.isInvalid() && "Invalid CXXScopeSpec."); assert(IdentLoc.isValid() && "Invalid TargetName location."); - // FIXME: Implement this properly! - if (isUnknownSpecialization(SS)) { - Diag(IdentLoc, diag::err_using_dependent_unsupported); - delete AttrList; - return 0; - } - + // FIXME: We ignore attributes for now. + delete AttrList; + if (SS.isEmpty()) { Diag(IdentLoc, diag::err_using_requires_qualname); return 0; @@ -2142,6 +2138,12 @@ NamedDecl *Sema::BuildUsingDeclaration(SourceLocation UsingLoc, NestedNameSpecifier *NNS = static_cast<NestedNameSpecifier *>(SS.getScopeRep()); + if (isUnknownSpecialization(SS)) { + return UnresolvedUsingDecl::Create(Context, CurContext, UsingLoc, + SS.getRange(), NNS, + IdentLoc, Name, IsTypeName); + } + DeclContext *LookupContext = 0; if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(CurContext)) { @@ -2202,9 +2204,6 @@ NamedDecl *Sema::BuildUsingDeclaration(SourceLocation UsingLoc, return 0; } - // FIXME: We ignore attributes for now. - delete AttrList; - return UsingDecl::Create(Context, CurContext, IdentLoc, SS.getRange(), ND->getLocation(), UsingLoc, ND, NNS, IsTypeName); } |