summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-08-29 01:06:32 +0000
committerAnders Carlsson <andersca@mac.com>2009-08-29 01:06:32 +0000
commit938b10079a8196c469ec995e37ed2853b979c56c (patch)
tree226c5476da6dca178f1dcc30e93568bb2f81bb8c
parenta884e67485478cf3cee615515a7efc009575a34b (diff)
downloadbcm5719-llvm-938b10079a8196c469ec995e37ed2853b979c56c.tar.gz
bcm5719-llvm-938b10079a8196c469ec995e37ed2853b979c56c.zip
CreateDeclRefExprs that point to UnresolvedUsingDecls.
llvm-svn: 80413
-rw-r--r--clang/lib/Sema/SemaExpr.cpp5
-rw-r--r--clang/test/SemaCXX/using-decl-templates.cpp6
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(); }
+};
OpenPOWER on IntegriCloud