From fead20c1de136b5a199a5cc4225f64be771452e4 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90893 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaExpr.cpp | 6 +++--- .../dcl.dcl/basic.namespace/namespace.udecl/p12.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 4920206b25..b284f83074 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/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/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp new file mode 100644 index 0000000000..9386e6c025 --- /dev/null +++ b/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(); } + }; +} -- 2.50.1