diff options
author | Anders Carlsson <andersca@mac.com> | 2009-08-29 01:06:32 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-08-29 01:06:32 +0000 |
commit | 938b10079a8196c469ec995e37ed2853b979c56c (patch) | |
tree | 226c5476da6dca178f1dcc30e93568bb2f81bb8c | |
parent | a884e67485478cf3cee615515a7efc009575a34b (diff) | |
download | bcm5719-llvm-938b10079a8196c469ec995e37ed2853b979c56c.tar.gz bcm5719-llvm-938b10079a8196c469ec995e37ed2853b979c56c.zip |
CreateDeclRefExprs that point to UnresolvedUsingDecls.
llvm-svn: 80413
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 5 | ||||
-rw-r--r-- | clang/test/SemaCXX/using-decl-templates.cpp | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 91c1fa5a122..474ddf06355 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -1036,6 +1036,11 @@ Sema::BuildDeclarationNameExpr(SourceLocation Loc, NamedDecl *D, else if (TemplateDecl *Template = dyn_cast<TemplateDecl>(D)) return BuildDeclRefExpr(Template, Context.OverloadTy, Loc, false, false, SS); + else if (UnresolvedUsingDecl *UD = dyn_cast<UnresolvedUsingDecl>(D)) + return BuildDeclRefExpr(UD, Context.DependentTy, Loc, + /*TypeDependent=*/true, + /*ValueDependent=*/true, SS); + ValueDecl *VD = cast<ValueDecl>(D); // Check whether this declaration can be used. Note that we suppress diff --git a/clang/test/SemaCXX/using-decl-templates.cpp b/clang/test/SemaCXX/using-decl-templates.cpp index 42442e28606..1a53704c1e6 100644 --- a/clang/test/SemaCXX/using-decl-templates.cpp +++ b/clang/test/SemaCXX/using-decl-templates.cpp @@ -28,3 +28,9 @@ template <typename T> struct D : A<T> { }; template<typename T> void D<T>::f() { } + +template<typename T> struct E : A<T> { + using A<T>::f; + + void g() { f(); } +}; |