diff options
-rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 19 |
2 files changed, 9 insertions, 12 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 6876c2c9a87..b2c54036869 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -98,8 +98,6 @@ def err_using_requires_qualname : Error< "using declaration requires a qualified name">; def err_using_typename_non_type : Error< "'typename' keyword used on a non-type">; -def err_using_dependent_unsupported : Error< - "dependent using declaration not supported yet">; def err_using_decl_nested_name_specifier_is_not_a_base_class : Error< "using declaration refers into %0, which is not a base class of %1">; def err_using_decl_can_not_refer_to_class_member : Error< diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 51f8fa56977..602caf28257 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/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); } |