From 3a60c87a591796a35eb66fef90996336b1a9f81d Mon Sep 17 00:00:00 2001 From: John McCall Date: Tue, 8 Dec 2009 22:45:53 +0000 Subject: [PATCH] Handle unresolved using decls in bare lookups. These are not being adequately tested. Fixes PR5727. llvm-svn: 90893 --- clang/lib/Sema/SemaExpr.cpp | 6 +++--- .../dcl.dcl/basic.namespace/namespace.udecl/p12.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 4920206b2593..b284f83074cc 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -1346,9 +1346,9 @@ Sema::OwningExprResult Sema::BuildDeclarationNameExpr(const CXXScopeSpec &SS, LookupResult &R, bool NeedsADL) { - // If this isn't an overloaded result and we don't need ADL, just - // build an ordinary singleton decl ref. - if (!NeedsADL && !R.isOverloadedResult()) + // If this is a single, fully-resolved result and we don't need ADL, + // just build an ordinary singleton decl ref. + if (!NeedsADL && R.isSingleResult()) return BuildDeclarationNameExpr(SS, R.getNameLoc(), R.getFoundDecl()); // We only need to check the declaration if there's exactly one diff --git a/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp b/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp new file mode 100644 index 000000000000..9386e6c02599 --- /dev/null +++ b/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp @@ -0,0 +1,13 @@ +// RUN: clang -fsyntax-only -verify %s + +// PR5727 +namespace test0 { + template struct RefPtr { }; + template struct PtrHash { + static void f() { } + }; + template struct PtrHash > : PtrHash { + using PtrHash::f; + static void f() { f(); } + }; +}